diff --git a/Makefile b/Makefile index 5843884..226c94f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: build clean lint lint-go lint-docker +.PHONY: build clean lint lint-go lint-docker fetch-spec generate-api unit cov # set the version as the latest commit sha if it's not already defined ifndef VERSION @@ -34,8 +34,25 @@ lint-docker: docker build --quiet --target hadolint -t hadolint:latest . docker run --rm -v $(shell pwd):/app -w /app hadolint hadolint Dockerfile demo_server/Dockerfile +# OpenAPI bundle sourcing. The spec is published in the (private) nullify +# monorepo; we pin a commit and vendor the bundle into spec/ so generation is +# reproducible and offline. To update: bump SPEC_REF, run `make fetch-spec`, +# then `make generate-api`, and commit both spec/ and the regenerated code. +SPEC_REF ?= 7b34970bbbeeabf665cd71fa0eb0e07eaac534a3 +SPEC_REPO ?= nullify-platform/nullify +SPEC_PATH_IN_REPO ?= public-docs/.gitbook/assets/api/nullify-openapi-bundle.yaml +SPEC_LOCAL ?= spec/nullify-openapi-bundle.yaml + +# fetch-spec downloads the pinned OpenAPI bundle from the monorepo. Requires +# GitHub auth (`gh auth login`) with access to the private monorepo. +fetch-spec: + @mkdir -p $(dir $(SPEC_LOCAL)) + gh api "repos/$(SPEC_REPO)/contents/$(SPEC_PATH_IN_REPO)?ref=$(SPEC_REF)" \ + -H "Accept: application/vnd.github.raw" > $(SPEC_LOCAL) + @echo "fetched $(SPEC_LOCAL) from $(SPEC_REPO)@$(SPEC_REF)" + generate-api: - go run ./scripts/generate/main.go --spec ../public-docs/specs/merged-openapi.yml --output internal/api --cmd-output internal/commands + go run ./scripts/generate/main.go --spec $(SPEC_LOCAL) --output internal/api --cmd-output internal/commands unit: go test -v -skip TestIntegration ./... diff --git a/cmd/cli/cmd/root.go b/cmd/cli/cmd/root.go index 30df3c9..3691769 100644 --- a/cmd/cli/cmd/root.go +++ b/cmd/cli/cmd/root.go @@ -104,6 +104,10 @@ func init() { commands.RegisterSastCommands(apiCmd, getAPIClient) commands.RegisterScaCommands(apiCmd, getAPIClient) commands.RegisterSecretsCommands(apiCmd, getAPIClient) + commands.RegisterScpmCommands(apiCmd, getAPIClient) + commands.RegisterOrchestratorCommands(apiCmd, getAPIClient) + commands.RegisterAssetGraphCommands(apiCmd, getAPIClient) + commands.RegisterInfrastructureCommands(apiCmd, getAPIClient) } func setupLogger(ctx context.Context) context.Context { diff --git a/internal/api/admin.go b/internal/api/admin.go index ab6dd5e..ae36f72 100644 --- a/internal/api/admin.go +++ b/internal/api/admin.go @@ -186,10 +186,10 @@ func (c *Client) CreateAdminContextIngest(ctx context.Context, params url.Values return c.do(ctx, "POST", fullURL, body) } -// UpdateAdminFixEffort - Put Fix Effort Mapping -// PUT /admin/fix-effort -func (c *Client) UpdateAdminFixEffort(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/fix-effort" +// CreateAdminEvents - List Unified Events +// POST /admin/events +func (c *Client) CreateAdminEvents(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/events" query := url.Values{} for k, v := range c.DefaultParams { @@ -228,13 +228,14 @@ func (c *Client) UpdateAdminFixEffort(ctx context.Context, params url.Values, bo fullURL += "?" + query.Encode() } - return c.do(ctx, "PUT", fullURL, body) + return c.do(ctx, "POST", fullURL, body) } -// ListAdminFixEffort - Get Fix Effort Mapping -// GET /admin/fix-effort -func (c *Client) ListAdminFixEffort(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/fix-effort" +// GetAdminFindingFindingId - Get Finding +// GET /admin/finding/{findingId} +func (c *Client) GetAdminFindingFindingId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/finding/{findingId}" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} for k, v := range c.DefaultParams { @@ -276,10 +277,10 @@ func (c *Client) ListAdminFixEffort(ctx context.Context, params url.Values) ([]b return c.do(ctx, "GET", fullURL, nil) } -// ListAdminGetFileContents - Get File Contents -// GET /admin/getFileContents -func (c *Client) ListAdminGetFileContents(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/getFileContents" +// CreateAdminFindings - Query Findings +// POST /admin/findings +func (c *Client) CreateAdminFindings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/findings" query := url.Values{} for k, v := range c.DefaultParams { @@ -312,37 +313,19 @@ func (c *Client) ListAdminGetFileContents(ctx context.Context, params url.Values if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } - if v := params.Get("repositoryId"); v != "" { - query.Set("repositoryId", v) - } - if v := params.Get("reference"); v != "" { - query.Set("reference", v) - } - if v := params.Get("filePath"); v != "" { - query.Set("filePath", v) - } - if v := params.Get("projectId"); v != "" { - query.Set("projectId", v) - } - if v := params.Get("startLine"); v != "" { - query.Set("startLine", v) - } - if v := params.Get("endLine"); v != "" { - query.Set("endLine", v) - } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminGetFileOwners - Get File Owners -// POST /admin/getFileOwners -func (c *Client) CreateAdminGetFileOwners(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/getFileOwners" +// CreateAdminFindingsDownload - Download Findings +// POST /admin/findings/download +func (c *Client) CreateAdminFindingsDownload(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/findings/download" query := url.Values{} for k, v := range c.DefaultParams { @@ -384,21 +367,15 @@ func (c *Client) CreateAdminGetFileOwners(ctx context.Context, params url.Values return c.do(ctx, "POST", fullURL, body) } -// ListAdminGetPullRequest - Get PR State -// GET /admin/getPullRequest -func (c *Client) ListAdminGetPullRequest(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/getPullRequest" +// ListAdminFixEffort - Get Fix Effort Mapping +// GET /admin/fix-effort +func (c *Client) ListAdminFixEffort(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/fix-effort" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("repositoryId"); v != "" { - query.Set("repositoryId", v) - } - if v := params.Get("prId"); v != "" { - query.Set("prId", v) - } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -435,10 +412,10 @@ func (c *Client) ListAdminGetPullRequest(ctx context.Context, params url.Values) return c.do(ctx, "GET", fullURL, nil) } -// ListAdminInstallations - Get App Installations -// GET /admin/installations -func (c *Client) ListAdminInstallations(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/installations" +// UpdateAdminFixEffort - Put Fix Effort Mapping +// PUT /admin/fix-effort +func (c *Client) UpdateAdminFixEffort(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/fix-effort" query := url.Values{} for k, v := range c.DefaultParams { @@ -477,13 +454,13 @@ func (c *Client) ListAdminInstallations(ctx context.Context, params url.Values) fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PUT", fullURL, body) } -// ListAdminIntegrationsAzure - Get Azure Configuration -// GET /admin/integrations/azure -func (c *Client) ListAdminIntegrationsAzure(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/azure" +// ListAdminGetFileContents - Get File Contents +// GET /admin/getFileContents +func (c *Client) ListAdminGetFileContents(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/getFileContents" query := url.Values{} for k, v := range c.DefaultParams { @@ -516,6 +493,24 @@ func (c *Client) ListAdminIntegrationsAzure(ctx context.Context, params url.Valu if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("reference"); v != "" { + query.Set("reference", v) + } + if v := params.Get("filePath"); v != "" { + query.Set("filePath", v) + } + if v := params.Get("projectId"); v != "" { + query.Set("projectId", v) + } + if v := params.Get("startLine"); v != "" { + query.Set("startLine", v) + } + if v := params.Get("endLine"); v != "" { + query.Set("endLine", v) + } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { @@ -525,10 +520,10 @@ func (c *Client) ListAdminIntegrationsAzure(ctx context.Context, params url.Valu return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminIntegrationsAzure - Install Azure DevOps Integration -// POST /admin/integrations/azure -func (c *Client) CreateAdminIntegrationsAzure(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/azure" +// CreateAdminGetFileOwners - Get File Owners +// POST /admin/getFileOwners +func (c *Client) CreateAdminGetFileOwners(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/getFileOwners" query := url.Values{} for k, v := range c.DefaultParams { @@ -567,18 +562,24 @@ func (c *Client) CreateAdminIntegrationsAzure(ctx context.Context, params url.Va fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminIntegrationsAzureCredentials - Set Azure Credentials -// POST /admin/integrations/azure/credentials -func (c *Client) CreateAdminIntegrationsAzureCredentials(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/azure/credentials" +// ListAdminGetPullRequest - Get PR State +// GET /admin/getPullRequest +func (c *Client) ListAdminGetPullRequest(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/getPullRequest" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("prId"); v != "" { + query.Set("prId", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -612,13 +613,13 @@ func (c *Client) CreateAdminIntegrationsAzureCredentials(ctx context.Context, pa fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminIntegrationsCloudAwsSettings - Upsert Cloud AWS Settings -// POST /admin/integrations/cloud/aws/settings -func (c *Client) CreateAdminIntegrationsCloudAwsSettings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/cloud/aws/settings" +// ListAdminInstallations - Get App Installations +// GET /admin/installations +func (c *Client) ListAdminInstallations(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/installations" query := url.Values{} for k, v := range c.DefaultParams { @@ -657,13 +658,13 @@ func (c *Client) CreateAdminIntegrationsCloudAwsSettings(ctx context.Context, pa fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminIntegrationsCloudAwsSettings - Get Cloud AWS Settings -// GET /admin/integrations/cloud/aws/settings -func (c *Client) ListAdminIntegrationsCloudAwsSettings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/cloud/aws/settings" +// ListAdminIntegrationsAzure - Get Azure Configuration +// GET /admin/integrations/azure +func (c *Client) ListAdminIntegrationsAzure(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/azure" query := url.Values{} for k, v := range c.DefaultParams { @@ -705,10 +706,10 @@ func (c *Client) ListAdminIntegrationsCloudAwsSettings(ctx context.Context, para return c.do(ctx, "GET", fullURL, nil) } -// DeleteAdminIntegrationsCloudAwsSettings - Delete Cloud AWS Settings -// DELETE /admin/integrations/cloud/aws/settings -func (c *Client) DeleteAdminIntegrationsCloudAwsSettings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/cloud/aws/settings" +// CreateAdminIntegrationsAzure - Install Azure DevOps Integration +// POST /admin/integrations/azure +func (c *Client) CreateAdminIntegrationsAzure(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/azure" query := url.Values{} for k, v := range c.DefaultParams { @@ -747,13 +748,13 @@ func (c *Client) DeleteAdminIntegrationsCloudAwsSettings(ctx context.Context, pa fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "POST", fullURL, nil) } -// CreateAdminIntegrationsCloudAwsValidateRole - Validate AWS Role -// POST /admin/integrations/cloud/aws/validate-role -func (c *Client) CreateAdminIntegrationsCloudAwsValidateRole(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/cloud/aws/validate-role" +// CreateAdminIntegrationsAzureCredentials - Set Azure Credentials +// POST /admin/integrations/azure/credentials +func (c *Client) CreateAdminIntegrationsAzureCredentials(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/azure/credentials" query := url.Values{} for k, v := range c.DefaultParams { @@ -795,10 +796,10 @@ func (c *Client) CreateAdminIntegrationsCloudAwsValidateRole(ctx context.Context return c.do(ctx, "POST", fullURL, body) } -// DeleteAdminIntegrationsCloudAzureSettings - Delete Cloud Azure Settings -// DELETE /admin/integrations/cloud/azure/settings -func (c *Client) DeleteAdminIntegrationsCloudAzureSettings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/cloud/azure/settings" +// DeleteAdminIntegrationsBuildkite - Delete Buildkite Integration +// DELETE /admin/integrations/buildkite +func (c *Client) DeleteAdminIntegrationsBuildkite(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/buildkite" query := url.Values{} for k, v := range c.DefaultParams { @@ -840,10 +841,10 @@ func (c *Client) DeleteAdminIntegrationsCloudAzureSettings(ctx context.Context, return c.do(ctx, "DELETE", fullURL, nil) } -// ListAdminIntegrationsCloudAzureSettings - Get Cloud Azure Settings -// GET /admin/integrations/cloud/azure/settings -func (c *Client) ListAdminIntegrationsCloudAzureSettings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/cloud/azure/settings" +// ListAdminIntegrationsBuildkite - Get Buildkite Integration Status +// GET /admin/integrations/buildkite +func (c *Client) ListAdminIntegrationsBuildkite(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/buildkite" query := url.Values{} for k, v := range c.DefaultParams { @@ -885,10 +886,10 @@ func (c *Client) ListAdminIntegrationsCloudAzureSettings(ctx context.Context, pa return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminIntegrationsCloudAzureSettings - Upsert Cloud Azure Settings -// POST /admin/integrations/cloud/azure/settings -func (c *Client) CreateAdminIntegrationsCloudAzureSettings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/cloud/azure/settings" +// CreateAdminIntegrationsBuildkiteToken - Set Buildkite API Token +// POST /admin/integrations/buildkite/token +func (c *Client) CreateAdminIntegrationsBuildkiteToken(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/buildkite/token" query := url.Values{} for k, v := range c.DefaultParams { @@ -930,10 +931,10 @@ func (c *Client) CreateAdminIntegrationsCloudAzureSettings(ctx context.Context, return c.do(ctx, "POST", fullURL, body) } -// DeleteAdminIntegrationsCloudGcpSettings - Delete Cloud GCP Settings -// DELETE /admin/integrations/cloud/gcp/settings -func (c *Client) DeleteAdminIntegrationsCloudGcpSettings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/cloud/gcp/settings" +// DeleteAdminIntegrationsCircleci - Delete CircleCI Integration +// DELETE /admin/integrations/circleci +func (c *Client) DeleteAdminIntegrationsCircleci(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/circleci" query := url.Values{} for k, v := range c.DefaultParams { @@ -975,10 +976,10 @@ func (c *Client) DeleteAdminIntegrationsCloudGcpSettings(ctx context.Context, pa return c.do(ctx, "DELETE", fullURL, nil) } -// ListAdminIntegrationsCloudGcpSettings - Get Cloud GCP Settings -// GET /admin/integrations/cloud/gcp/settings -func (c *Client) ListAdminIntegrationsCloudGcpSettings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/cloud/gcp/settings" +// ListAdminIntegrationsCircleci - Get CircleCI Integration Status +// GET /admin/integrations/circleci +func (c *Client) ListAdminIntegrationsCircleci(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/circleci" query := url.Values{} for k, v := range c.DefaultParams { @@ -1020,10 +1021,10 @@ func (c *Client) ListAdminIntegrationsCloudGcpSettings(ctx context.Context, para return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminIntegrationsCloudGcpSettings - Upsert Cloud GCP Settings -// POST /admin/integrations/cloud/gcp/settings -func (c *Client) CreateAdminIntegrationsCloudGcpSettings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/cloud/gcp/settings" +// CreateAdminIntegrationsCircleciToken - Set CircleCI API Token +// POST /admin/integrations/circleci/token +func (c *Client) CreateAdminIntegrationsCircleciToken(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/circleci/token" query := url.Values{} for k, v := range c.DefaultParams { @@ -1065,10 +1066,10 @@ func (c *Client) CreateAdminIntegrationsCloudGcpSettings(ctx context.Context, pa return c.do(ctx, "POST", fullURL, body) } -// CreateAdminIntegrationsCloudGcpValidate - Validate GCP Credentials -// POST /admin/integrations/cloud/gcp/validate -func (c *Client) CreateAdminIntegrationsCloudGcpValidate(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/cloud/gcp/validate" +// DeleteAdminIntegrationsCloudAwsSettings - Delete Cloud AWS Settings +// DELETE /admin/integrations/cloud/aws/settings +func (c *Client) DeleteAdminIntegrationsCloudAwsSettings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/cloud/aws/settings" query := url.Values{} for k, v := range c.DefaultParams { @@ -1107,13 +1108,13 @@ func (c *Client) CreateAdminIntegrationsCloudGcpValidate(ctx context.Context, pa fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "DELETE", fullURL, nil) } -// CreateAdminIntegrationsCloudK8sWhitelist - Whitelist K8s Connector Accounts -// POST /admin/integrations/cloud/k8s/whitelist -func (c *Client) CreateAdminIntegrationsCloudK8sWhitelist(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/cloud/k8s/whitelist" +// ListAdminIntegrationsCloudAwsSettings - Get Cloud AWS Settings +// GET /admin/integrations/cloud/aws/settings +func (c *Client) ListAdminIntegrationsCloudAwsSettings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/cloud/aws/settings" query := url.Values{} for k, v := range c.DefaultParams { @@ -1152,13 +1153,13 @@ func (c *Client) CreateAdminIntegrationsCloudK8sWhitelist(ctx context.Context, p fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminIntegrationsGithubAppSettings - Get GitHub App Settings -// GET /admin/integrations/github/app-settings -func (c *Client) ListAdminIntegrationsGithubAppSettings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/github/app-settings" +// CreateAdminIntegrationsCloudAwsSettings - Upsert Cloud AWS Settings +// POST /admin/integrations/cloud/aws/settings +func (c *Client) CreateAdminIntegrationsCloudAwsSettings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/cloud/aws/settings" query := url.Values{} for k, v := range c.DefaultParams { @@ -1197,13 +1198,13 @@ func (c *Client) ListAdminIntegrationsGithubAppSettings(ctx context.Context, par fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminIntegrationsJira - Update Jira Configuration -// POST /admin/integrations/jira -func (c *Client) CreateAdminIntegrationsJira(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/jira" +// CreateAdminIntegrationsCloudAwsValidateRole - Validate AWS Role +// POST /admin/integrations/cloud/aws/validate-role +func (c *Client) CreateAdminIntegrationsCloudAwsValidateRole(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/cloud/aws/validate-role" query := url.Values{} for k, v := range c.DefaultParams { @@ -1245,10 +1246,10 @@ func (c *Client) CreateAdminIntegrationsJira(ctx context.Context, params url.Val return c.do(ctx, "POST", fullURL, body) } -// ListAdminIntegrationsJira - Get Jira Configuration -// GET /admin/integrations/jira -func (c *Client) ListAdminIntegrationsJira(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/jira" +// DeleteAdminIntegrationsCloudAzureSettings - Delete Cloud Azure Settings +// DELETE /admin/integrations/cloud/azure/settings +func (c *Client) DeleteAdminIntegrationsCloudAzureSettings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/cloud/azure/settings" query := url.Values{} for k, v := range c.DefaultParams { @@ -1287,13 +1288,13 @@ func (c *Client) ListAdminIntegrationsJira(ctx context.Context, params url.Value fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// ListAdminIntegrationsLinearInstall - Start Linear OAuth install -// GET /admin/integrations/linear/install -func (c *Client) ListAdminIntegrationsLinearInstall(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/linear/install" +// ListAdminIntegrationsCloudAzureSettings - Get Cloud Azure Settings +// GET /admin/integrations/cloud/azure/settings +func (c *Client) ListAdminIntegrationsCloudAzureSettings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/cloud/azure/settings" query := url.Values{} for k, v := range c.DefaultParams { @@ -1335,10 +1336,10 @@ func (c *Client) ListAdminIntegrationsLinearInstall(ctx context.Context, params return c.do(ctx, "GET", fullURL, nil) } -// ListAdminIntegrationsLinearOauth - Get Linear OAuth install status -// GET /admin/integrations/linear/oauth -func (c *Client) ListAdminIntegrationsLinearOauth(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/linear/oauth" +// CreateAdminIntegrationsCloudAzureSettings - Upsert Cloud Azure Settings +// POST /admin/integrations/cloud/azure/settings +func (c *Client) CreateAdminIntegrationsCloudAzureSettings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/cloud/azure/settings" query := url.Values{} for k, v := range c.DefaultParams { @@ -1377,13 +1378,13 @@ func (c *Client) ListAdminIntegrationsLinearOauth(ctx context.Context, params ur fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// ListAdminIntegrationsNotifications - Get Notification Config -// GET /admin/integrations/notifications -func (c *Client) ListAdminIntegrationsNotifications(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/notifications" +// DeleteAdminIntegrationsCloudGcpSettings - Delete Cloud GCP Settings +// DELETE /admin/integrations/cloud/gcp/settings +func (c *Client) DeleteAdminIntegrationsCloudGcpSettings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/cloud/gcp/settings" query := url.Values{} for k, v := range c.DefaultParams { @@ -1422,18 +1423,972 @@ func (c *Client) ListAdminIntegrationsNotifications(ctx context.Context, params fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// UpdateAdminIntegrationsNotifications - Put Notification Config -// PUT /admin/integrations/notifications -func (c *Client) UpdateAdminIntegrationsNotifications(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/notifications" - +// ListAdminIntegrationsCloudGcpSettings - Get Cloud GCP Settings +// GET /admin/integrations/cloud/gcp/settings +func (c *Client) ListAdminIntegrationsCloudGcpSettings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/cloud/gcp/settings" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateAdminIntegrationsCloudGcpSettings - Upsert Cloud GCP Settings +// POST /admin/integrations/cloud/gcp/settings +func (c *Client) CreateAdminIntegrationsCloudGcpSettings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/cloud/gcp/settings" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// CreateAdminIntegrationsCloudGcpValidate - Validate GCP Credentials +// POST /admin/integrations/cloud/gcp/validate +func (c *Client) CreateAdminIntegrationsCloudGcpValidate(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/cloud/gcp/validate" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// CreateAdminIntegrationsCloudK8sWhitelist - Whitelist K8s Connector Accounts +// POST /admin/integrations/cloud/k8s/whitelist +func (c *Client) CreateAdminIntegrationsCloudK8sWhitelist(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/cloud/k8s/whitelist" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListAdminIntegrationsGithubAppSettings - Get GitHub App Settings +// GET /admin/integrations/github/app-settings +func (c *Client) ListAdminIntegrationsGithubAppSettings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/github/app-settings" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// DeleteAdminIntegrationsJenkins - Delete Jenkins Integration +// DELETE /admin/integrations/jenkins +func (c *Client) DeleteAdminIntegrationsJenkins(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/jenkins" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "DELETE", fullURL, nil) +} + +// ListAdminIntegrationsJenkins - Get Jenkins Integration Status +// GET /admin/integrations/jenkins +func (c *Client) ListAdminIntegrationsJenkins(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/jenkins" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateAdminIntegrationsJenkinsToken - Set Jenkins API Token +// POST /admin/integrations/jenkins/token +func (c *Client) CreateAdminIntegrationsJenkinsToken(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/jenkins/token" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListAdminIntegrationsJira - Get Jira Configuration +// GET /admin/integrations/jira +func (c *Client) ListAdminIntegrationsJira(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/jira" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateAdminIntegrationsJira - Update Jira Configuration +// POST /admin/integrations/jira +func (c *Client) CreateAdminIntegrationsJira(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/jira" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListAdminIntegrationsLinearInstall - Start Linear OAuth install +// GET /admin/integrations/linear/install +func (c *Client) ListAdminIntegrationsLinearInstall(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/linear/install" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListAdminIntegrationsLinearOauth - Get Linear OAuth install status +// GET /admin/integrations/linear/oauth +func (c *Client) ListAdminIntegrationsLinearOauth(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/linear/oauth" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListAdminIntegrationsNotifications - Get Notification Config +// GET /admin/integrations/notifications +func (c *Client) ListAdminIntegrationsNotifications(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/notifications" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// UpdateAdminIntegrationsNotifications - Put Notification Config +// PUT /admin/integrations/notifications +func (c *Client) UpdateAdminIntegrationsNotifications(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/notifications" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "PUT", fullURL, body) +} + +// ListAdminIntegrationsSlack - Get Slack Configuration +// GET /admin/integrations/slack +func (c *Client) ListAdminIntegrationsSlack(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/slack" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListAdminIntegrationsSlackInstall - Start Slack distributed install +// GET /admin/integrations/slack/install +func (c *Client) ListAdminIntegrationsSlackInstall(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/slack/install" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateAdminIntegrationsSlackKey - Set Slack API Key +// POST /admin/integrations/slack/key +func (c *Client) CreateAdminIntegrationsSlackKey(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/integrations/slack/key" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListAdminIntegrationsTeams - Get Integration Teams +// GET /admin/integrations/teams +func (c *Client) ListAdminIntegrationsTeams(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/teams" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("provider"); v != "" { + query.Set("provider", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListAdminIntegrationsUsers - Get Integration Users +// GET /admin/integrations/users +func (c *Client) ListAdminIntegrationsUsers(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/integrations/users" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("provider"); v != "" { + query.Set("provider", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateAdminMetricsFindings - Post Findings Metrics +// POST /admin/metrics/findings +func (c *Client) CreateAdminMetricsFindings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/metrics/findings" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListAdminMetricsInteractions - Get Interactions +// GET /admin/metrics/interactions +func (c *Client) ListAdminMetricsInteractions(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/metrics/interactions" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateAdminMetricsOverTime - Get Metrics Over Time +// POST /admin/metrics/over-time +func (c *Client) CreateAdminMetricsOverTime(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/metrics/over-time" + query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("resolution"); v != "" { + query.Set("resolution", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1467,13 +2422,13 @@ func (c *Client) UpdateAdminIntegrationsNotifications(ctx context.Context, param fullURL += "?" + query.Encode() } - return c.do(ctx, "PUT", fullURL, body) + return c.do(ctx, "POST", fullURL, body) } -// ListAdminIntegrationsSlack - Get Slack Configuration -// GET /admin/integrations/slack -func (c *Client) ListAdminIntegrationsSlack(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/slack" +// CreateAdminMetricsOverview - Query Overview +// POST /admin/metrics/overview +func (c *Client) CreateAdminMetricsOverview(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/metrics/overview" query := url.Values{} for k, v := range c.DefaultParams { @@ -1512,13 +2467,13 @@ func (c *Client) ListAdminIntegrationsSlack(ctx context.Context, params url.Valu fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// ListAdminIntegrationsSlackInstall - Start Slack distributed install -// GET /admin/integrations/slack/install -func (c *Client) ListAdminIntegrationsSlackInstall(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/slack/install" +// CreateAdminMetricsRaw - Query Raw Metrics +// POST /admin/metrics/raw +func (c *Client) CreateAdminMetricsRaw(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/metrics/raw" query := url.Values{} for k, v := range c.DefaultParams { @@ -1557,18 +2512,36 @@ func (c *Client) ListAdminIntegrationsSlackInstall(ctx context.Context, params u fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminIntegrationsSlackKey - Set Slack API Key -// POST /admin/integrations/slack/key -func (c *Client) CreateAdminIntegrationsSlackKey(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/integrations/slack/key" +// ListAdminMetricsUsageAggregate - Usage Aggregate +// GET /admin/metrics/usage/aggregate +func (c *Client) ListAdminMetricsUsageAggregate(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/metrics/usage/aggregate" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("window"); v != "" { + query.Set("window", v) + } + if v := params.Get("class"); v != "" { + query.Set("class", v) + } + if v := params.Get("agent"); v != "" { + query.Set("agent", v) + } + if v := params.Get("branchType"); v != "" { + query.Set("branchType", v) + } + if v := params.Get("from"); v != "" { + query.Set("from", v) + } + if v := params.Get("to"); v != "" { + query.Set("to", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1602,20 +2575,44 @@ func (c *Client) CreateAdminIntegrationsSlackKey(ctx context.Context, params url fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminIntegrationsTeams - Get Integration Teams -// GET /admin/integrations/teams -func (c *Client) ListAdminIntegrationsTeams(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/teams" +// ListAdminMetricsUsageLedger - Usage Ledger +// GET /admin/metrics/usage/ledger +func (c *Client) ListAdminMetricsUsageLedger(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/metrics/usage/ledger" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("provider"); v != "" { - query.Set("provider", v) + if v := params.Get("class"); v != "" { + query.Set("class", v) + } + if v := params.Get("agent"); v != "" { + query.Set("agent", v) + } + if v := params.Get("branchType"); v != "" { + query.Set("branchType", v) + } + if v := params.Get("runId"); v != "" { + query.Set("runId", v) + } + if v := params.Get("findingId"); v != "" { + query.Set("findingId", v) + } + if v := params.Get("from"); v != "" { + query.Set("from", v) + } + if v := params.Get("to"); v != "" { + query.Set("to", v) + } + if v := params.Get("cursor"); v != "" { + query.Set("cursor", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) @@ -1653,17 +2650,29 @@ func (c *Client) ListAdminIntegrationsTeams(ctx context.Context, params url.Valu return c.do(ctx, "GET", fullURL, nil) } -// ListAdminIntegrationsUsers - Get Integration Users -// GET /admin/integrations/users -func (c *Client) ListAdminIntegrationsUsers(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/integrations/users" +// ListAdminMetricsUsageTimeseries - Usage Timeseries +// GET /admin/metrics/usage/timeseries +func (c *Client) ListAdminMetricsUsageTimeseries(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/metrics/usage/timeseries" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("provider"); v != "" { - query.Set("provider", v) + if v := params.Get("granularity"); v != "" { + query.Set("granularity", v) + } + if v := params.Get("from"); v != "" { + query.Set("from", v) + } + if v := params.Get("to"); v != "" { + query.Set("to", v) + } + if v := params.Get("class"); v != "" { + query.Set("class", v) + } + if v := params.Get("agent"); v != "" { + query.Set("agent", v) } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) @@ -1701,11 +2710,10 @@ func (c *Client) ListAdminIntegrationsUsers(ctx context.Context, params url.Valu return c.do(ctx, "GET", fullURL, nil) } -// GetAdminMetricsFindingFindingId - Get Finding -// GET /admin/metrics/finding/{findingId} -func (c *Client) GetAdminMetricsFindingFindingId(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/metrics/finding/{findingId}" - path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) +// ListAdminOrganization - Get Organization +// GET /admin/organization +func (c *Client) ListAdminOrganization(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/organization" query := url.Values{} for k, v := range c.DefaultParams { @@ -1747,15 +2755,18 @@ func (c *Client) GetAdminMetricsFindingFindingId(ctx context.Context, params url return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminMetricsFindings - Query Findings -// POST /admin/metrics/findings -func (c *Client) CreateAdminMetricsFindings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/metrics/findings" +// ListAdminPrivacyAcknowledgment - Get Privacy Acknowledgment +// GET /admin/privacy/acknowledgment +func (c *Client) ListAdminPrivacyAcknowledgment(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/privacy/acknowledgment" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("policyVersion"); v != "" { + query.Set("policyVersion", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1789,13 +2800,13 @@ func (c *Client) CreateAdminMetricsFindings(ctx context.Context, params url.Valu fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminMetricsFindingsAnalysis - Post Findings Metrics -// POST /admin/metrics/findings/analysis -func (c *Client) CreateAdminMetricsFindingsAnalysis(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/metrics/findings/analysis" +// CreateAdminPrivacyAcknowledgment - Post Privacy Acknowledgment +// POST /admin/privacy/acknowledgment +func (c *Client) CreateAdminPrivacyAcknowledgment(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/privacy/acknowledgment" query := url.Values{} for k, v := range c.DefaultParams { @@ -1837,10 +2848,67 @@ func (c *Client) CreateAdminMetricsFindingsAnalysis(ctx context.Context, params return c.do(ctx, "POST", fullURL, body) } -// CreateAdminMetricsFindingsDownload - Download Findings -// POST /admin/metrics/findings/download -func (c *Client) CreateAdminMetricsFindingsDownload(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/metrics/findings/download" +// ListAdminRepositories - Get Repositories +// GET /admin/repositories +func (c *Client) ListAdminRepositories(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/repositories" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("search"); v != "" { + query.Set("search", v) + } + if v := params.Get("teamIDs"); v != "" { + query.Set("teamIDs", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateAdminRepositoriesInitialize - Initialize Repositories +// POST /admin/repositories/initialize +func (c *Client) CreateAdminRepositoriesInitialize(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/repositories/initialize" query := url.Values{} for k, v := range c.DefaultParams { @@ -1882,10 +2950,10 @@ func (c *Client) CreateAdminMetricsFindingsDownload(ctx context.Context, params return c.do(ctx, "POST", fullURL, body) } -// ListAdminMetricsInteractions - Get Interactions -// GET /admin/metrics/interactions -func (c *Client) ListAdminMetricsInteractions(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/metrics/interactions" +// CreateAdminRepositoriesUninitialize - Uninitialize Repositories +// POST /admin/repositories/uninitialize +func (c *Client) CreateAdminRepositoriesUninitialize(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/repositories/uninitialize" query := url.Values{} for k, v := range c.DefaultParams { @@ -1924,20 +2992,20 @@ func (c *Client) ListAdminMetricsInteractions(ctx context.Context, params url.Va fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminMetricsOverTime - Get Metrics Over Time -// POST /admin/metrics/over-time -func (c *Client) CreateAdminMetricsOverTime(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/metrics/over-time" +// DeleteAdminRepositoryPropertyTeamKeys - Delete Repository Property Team Key +// DELETE /admin/repository-property-team-keys +func (c *Client) DeleteAdminRepositoryPropertyTeamKeys(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/repository-property-team-keys" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("resolution"); v != "" { - query.Set("resolution", v) + if v := params.Get("keyId"); v != "" { + query.Set("keyId", v) } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) @@ -1972,13 +3040,13 @@ func (c *Client) CreateAdminMetricsOverTime(ctx context.Context, params url.Valu fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "DELETE", fullURL, nil) } -// CreateAdminMetricsOverview - Query Overview -// POST /admin/metrics/overview -func (c *Client) CreateAdminMetricsOverview(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/metrics/overview" +// ListAdminRepositoryPropertyTeamKeys - List Repository Property Team Keys +// GET /admin/repository-property-team-keys +func (c *Client) ListAdminRepositoryPropertyTeamKeys(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/repository-property-team-keys" query := url.Values{} for k, v := range c.DefaultParams { @@ -2017,13 +3085,13 @@ func (c *Client) CreateAdminMetricsOverview(ctx context.Context, params url.Valu fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminMetricsRaw - Query Raw Metrics -// POST /admin/metrics/raw -func (c *Client) CreateAdminMetricsRaw(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/metrics/raw" +// CreateAdminRepositoryPropertyTeamKeys - Create Repository Property Team Key +// POST /admin/repository-property-team-keys +func (c *Client) CreateAdminRepositoryPropertyTeamKeys(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/repository-property-team-keys" query := url.Values{} for k, v := range c.DefaultParams { @@ -2065,10 +3133,58 @@ func (c *Client) CreateAdminMetricsRaw(ctx context.Context, params url.Values, b return c.do(ctx, "POST", fullURL, body) } -// ListAdminOrganization - Get Organization -// GET /admin/organization -func (c *Client) ListAdminOrganization(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/organization" +// DeleteAdminServiceAccounts - Delete Service Account +// DELETE /admin/service_accounts +func (c *Client) DeleteAdminServiceAccounts(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/service_accounts" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("serviceAccountId"); v != "" { + query.Set("serviceAccountId", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "DELETE", fullURL, nil) +} + +// ListAdminServiceAccounts - Get Service Accounts +// GET /admin/service_accounts +func (c *Client) ListAdminServiceAccounts(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/service_accounts" query := url.Values{} for k, v := range c.DefaultParams { @@ -2110,18 +3226,15 @@ func (c *Client) ListAdminOrganization(ctx context.Context, params url.Values) ( return c.do(ctx, "GET", fullURL, nil) } -// ListAdminPrivacyAcknowledgment - Get Privacy Acknowledgment -// GET /admin/privacy/acknowledgment -func (c *Client) ListAdminPrivacyAcknowledgment(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/privacy/acknowledgment" +// CreateAdminServiceAccounts - Create Service Account +// POST /admin/service_accounts +func (c *Client) CreateAdminServiceAccounts(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/service_accounts" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("policyVersion"); v != "" { - query.Set("policyVersion", v) - } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -2155,13 +3268,13 @@ func (c *Client) ListAdminPrivacyAcknowledgment(ctx context.Context, params url. fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminPrivacyAcknowledgment - Post Privacy Acknowledgment -// POST /admin/privacy/acknowledgment -func (c *Client) CreateAdminPrivacyAcknowledgment(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/privacy/acknowledgment" +// ListAdminSla - Get SLAs +// GET /admin/sla +func (c *Client) ListAdminSla(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/sla" query := url.Values{} for k, v := range c.DefaultParams { @@ -2200,27 +3313,18 @@ func (c *Client) CreateAdminPrivacyAcknowledgment(ctx context.Context, params ur fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminRepositories - Get Repositories -// GET /admin/repositories -func (c *Client) ListAdminRepositories(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/repositories" +// CreateAdminSla - Post SLA +// POST /admin/sla +func (c *Client) CreateAdminSla(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/sla" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("nextToken"); v != "" { - query.Set("nextToken", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - if v := params.Get("search"); v != "" { - query.Set("search", v) - } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -2254,13 +3358,13 @@ func (c *Client) ListAdminRepositories(ctx context.Context, params url.Values) ( fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminRepositoriesInitialize - Initialize Repositories -// POST /admin/repositories/initialize -func (c *Client) CreateAdminRepositoriesInitialize(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/repositories/initialize" +// UpdateAdminSlaBulk - Put Bulk SLA +// PUT /admin/sla/bulk +func (c *Client) UpdateAdminSlaBulk(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/sla/bulk" query := url.Values{} for k, v := range c.DefaultParams { @@ -2299,13 +3403,14 @@ func (c *Client) CreateAdminRepositoriesInitialize(ctx context.Context, params u fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "PUT", fullURL, body) } -// CreateAdminRepositoriesUninitialize - Uninitialize Repositories -// POST /admin/repositories/uninitialize -func (c *Client) CreateAdminRepositoriesUninitialize(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/repositories/uninitialize" +// PatchAdminSlaSlaId - Patch SLA +// PATCH /admin/sla/{slaId} +func (c *Client) PatchAdminSlaSlaId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/sla/{slaId}" + path = strings.Replace(path, "{slaId}", params.Get("slaId"), 1) query := url.Values{} for k, v := range c.DefaultParams { @@ -2344,13 +3449,13 @@ func (c *Client) CreateAdminRepositoriesUninitialize(ctx context.Context, params fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "PATCH", fullURL, body) } -// CreateAdminServiceAccounts - Create Service Account -// POST /admin/service_accounts -func (c *Client) CreateAdminServiceAccounts(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/service_accounts" +// ListAdminTeamSourcePreferences - Get Team Source Preferences +// GET /admin/team-source-preferences +func (c *Client) ListAdminTeamSourcePreferences(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/team-source-preferences" query := url.Values{} for k, v := range c.DefaultParams { @@ -2389,13 +3494,13 @@ func (c *Client) CreateAdminServiceAccounts(ctx context.Context, params url.Valu fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminServiceAccounts - Get Service Accounts -// GET /admin/service_accounts -func (c *Client) ListAdminServiceAccounts(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/service_accounts" +// UpdateAdminTeamSourcePreferences - Update Team Source Preferences +// PUT /admin/team-source-preferences +func (c *Client) UpdateAdminTeamSourcePreferences(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/team-source-preferences" query := url.Values{} for k, v := range c.DefaultParams { @@ -2434,20 +3539,23 @@ func (c *Client) ListAdminServiceAccounts(ctx context.Context, params url.Values fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PUT", fullURL, body) } -// DeleteAdminServiceAccounts - Delete Service Account -// DELETE /admin/service_accounts -func (c *Client) DeleteAdminServiceAccounts(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/service_accounts" +// ListAdminTeamSyncRuns - List Team Sync Runs +// GET /admin/team-sync-runs +func (c *Client) ListAdminTeamSyncRuns(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/team-sync-runs" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("serviceAccountId"); v != "" { - query.Set("serviceAccountId", v) + if v := params.Get("source"); v != "" { + query.Set("source", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) @@ -2482,13 +3590,13 @@ func (c *Client) DeleteAdminServiceAccounts(ctx context.Context, params url.Valu fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminSla - Get SLAs -// GET /admin/sla -func (c *Client) ListAdminSla(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/sla" +// CreateAdminTeamSyncRuns - Trigger Team Sync +// POST /admin/team-sync-runs +func (c *Client) CreateAdminTeamSyncRuns(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/team-sync-runs" query := url.Values{} for k, v := range c.DefaultParams { @@ -2527,13 +3635,14 @@ func (c *Client) ListAdminSla(ctx context.Context, params url.Values) ([]byte, e fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminSla - Post SLA -// POST /admin/sla -func (c *Client) CreateAdminSla(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/sla" +// GetAdminTeamTeamID - Get Team +// GET /admin/team/{teamID} +func (c *Client) GetAdminTeamTeamID(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/team/{teamID}" + path = strings.Replace(path, "{teamID}", params.Get("teamID"), 1) query := url.Values{} for k, v := range c.DefaultParams { @@ -2572,13 +3681,13 @@ func (c *Client) CreateAdminSla(ctx context.Context, params url.Values, body io. fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// UpdateAdminSlaBulk - Put Bulk SLA -// PUT /admin/sla/bulk -func (c *Client) UpdateAdminSlaBulk(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/sla/bulk" +// ListAdminTeams - Get All Teams +// GET /admin/teams +func (c *Client) ListAdminTeams(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/teams" query := url.Values{} for k, v := range c.DefaultParams { @@ -2611,20 +3720,28 @@ func (c *Client) UpdateAdminSlaBulk(ctx context.Context, params url.Values, body if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("search"); v != "" { + query.Set("search", v) + } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { fullURL += "?" + query.Encode() } - return c.do(ctx, "PUT", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// PatchAdminSlaSlaId - Patch SLA -// PATCH /admin/sla/{slaId} -func (c *Client) PatchAdminSlaSlaId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/sla/{slaId}" - path = strings.Replace(path, "{slaId}", params.Get("slaId"), 1) +// CreateAdminTeams - Post Team +// POST /admin/teams +func (c *Client) CreateAdminTeams(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/teams" query := url.Values{} for k, v := range c.DefaultParams { @@ -2663,14 +3780,13 @@ func (c *Client) PatchAdminSlaSlaId(ctx context.Context, params url.Values, body fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "POST", fullURL, body) } -// GetAdminTeamTeamID - Get Team -// GET /admin/team/{teamID} -func (c *Client) GetAdminTeamTeamID(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/team/{teamID}" - path = strings.Replace(path, "{teamID}", params.Get("teamID"), 1) +// ListAdminTeamsAppzip - Get Teams App Zip +// GET /admin/teams/appzip +func (c *Client) ListAdminTeamsAppzip(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/teams/appzip" query := url.Values{} for k, v := range c.DefaultParams { @@ -2712,10 +3828,10 @@ func (c *Client) GetAdminTeamTeamID(ctx context.Context, params url.Values) ([]b return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminTeams - Post Team -// POST /admin/teams -func (c *Client) CreateAdminTeams(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/teams" +// CreateAdminTeamsCompass - Post Compass/Atlassian Team +// POST /admin/teams/compass +func (c *Client) CreateAdminTeamsCompass(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/teams/compass" query := url.Values{} for k, v := range c.DefaultParams { @@ -2757,10 +3873,10 @@ func (c *Client) CreateAdminTeams(ctx context.Context, params url.Values, body i return c.do(ctx, "POST", fullURL, body) } -// ListAdminTeams - Get All Teams -// GET /admin/teams -func (c *Client) ListAdminTeams(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/teams" +// ListAdminTeamsFindings - Get All Team Findings mapping +// GET /admin/teams/findings +func (c *Client) ListAdminTeamsFindings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/teams/findings" query := url.Values{} for k, v := range c.DefaultParams { @@ -2793,15 +3909,6 @@ func (c *Client) ListAdminTeams(ctx context.Context, params url.Values) ([]byte, if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } - if v := params.Get("nextToken"); v != "" { - query.Set("nextToken", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - if v := params.Get("search"); v != "" { - query.Set("search", v) - } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { @@ -2811,10 +3918,10 @@ func (c *Client) ListAdminTeams(ctx context.Context, params url.Values) ([]byte, return c.do(ctx, "GET", fullURL, nil) } -// ListAdminTeamsAppzip - Get Teams App Zip -// GET /admin/teams/appzip -func (c *Client) ListAdminTeamsAppzip(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/teams/appzip" +// CreateAdminTeamsFindings - Manual Team Findings Assignment +// POST /admin/teams/findings +func (c *Client) CreateAdminTeamsFindings(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/teams/findings" query := url.Values{} for k, v := range c.DefaultParams { @@ -2853,13 +3960,13 @@ func (c *Client) ListAdminTeamsAppzip(ctx context.Context, params url.Values) ([ fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminTeamsCompass - Post Compass/Atlassian Team -// POST /admin/teams/compass -func (c *Client) CreateAdminTeamsCompass(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/teams/compass" +// CreateAdminTeamsFindingsSync - Sync Team Findings +// POST /admin/teams/findings/sync +func (c *Client) CreateAdminTeamsFindingsSync(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/teams/findings/sync" query := url.Values{} for k, v := range c.DefaultParams { @@ -2901,10 +4008,10 @@ func (c *Client) CreateAdminTeamsCompass(ctx context.Context, params url.Values, return c.do(ctx, "POST", fullURL, body) } -// ListAdminTeamsFindings - Get All Team Findings mapping -// GET /admin/teams/findings -func (c *Client) ListAdminTeamsFindings(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/teams/findings" +// CreateAdminTeamsMerge - Merge Teams +// POST /admin/teams/merge +func (c *Client) CreateAdminTeamsMerge(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/teams/merge" query := url.Values{} for k, v := range c.DefaultParams { @@ -2943,13 +4050,14 @@ func (c *Client) ListAdminTeamsFindings(ctx context.Context, params url.Values) fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateAdminTeamsFindingsSync - Sync Team Findings -// POST /admin/teams/findings/sync -func (c *Client) CreateAdminTeamsFindingsSync(ctx context.Context, params url.Values) ([]byte, error) { - path := "/admin/teams/findings/sync" +// DeleteAdminTeamsTeamID - Delete Manual Team +// DELETE /admin/teams/{teamID} +func (c *Client) DeleteAdminTeamsTeamID(ctx context.Context, params url.Values) ([]byte, error) { + path := "/admin/teams/{teamID}" + path = strings.Replace(path, "{teamID}", params.Get("teamID"), 1) query := url.Values{} for k, v := range c.DefaultParams { @@ -2988,13 +4096,14 @@ func (c *Client) CreateAdminTeamsFindingsSync(ctx context.Context, params url.Va fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// CreateAdminTeamsMerge - Merge Teams -// POST /admin/teams/merge -func (c *Client) CreateAdminTeamsMerge(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/teams/merge" +// PatchAdminTeamsTeamID - Patch Team +// PATCH /admin/teams/{teamID} +func (c *Client) PatchAdminTeamsTeamID(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/teams/{teamID}" + path = strings.Replace(path, "{teamID}", params.Get("teamID"), 1) query := url.Values{} for k, v := range c.DefaultParams { @@ -3033,13 +4142,13 @@ func (c *Client) CreateAdminTeamsMerge(ctx context.Context, params url.Values, b fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "PATCH", fullURL, body) } -// PatchAdminTeamsTeamID - Patch Team -// PATCH /admin/teams/{teamID} -func (c *Client) PatchAdminTeamsTeamID(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/admin/teams/{teamID}" +// CreateAdminTeamsTeamIDEvents - List Team Unified Events +// POST /admin/teams/{teamID}/events +func (c *Client) CreateAdminTeamsTeamIDEvents(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/admin/teams/{teamID}/events" path = strings.Replace(path, "{teamID}", params.Get("teamID"), 1) query := url.Values{} @@ -3079,7 +4188,7 @@ func (c *Client) PatchAdminTeamsTeamID(ctx context.Context, params url.Values, b fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "POST", fullURL, body) } // ListAdminTeamsTeamIDFindings - Get Team Findings mapping @@ -3128,9 +4237,9 @@ func (c *Client) ListAdminTeamsTeamIDFindings(ctx context.Context, params url.Va return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminUiSavedViews - Post UI Saved View -// POST /admin/ui/savedViews -func (c *Client) CreateAdminUiSavedViews(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListAdminUiSavedViews - Get UI Saved Views +// GET /admin/ui/savedViews +func (c *Client) ListAdminUiSavedViews(ctx context.Context, params url.Values) ([]byte, error) { path := "/admin/ui/savedViews" query := url.Values{} @@ -3170,12 +4279,12 @@ func (c *Client) CreateAdminUiSavedViews(ctx context.Context, params url.Values, fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminUiSavedViews - Get UI Saved Views -// GET /admin/ui/savedViews -func (c *Client) ListAdminUiSavedViews(ctx context.Context, params url.Values) ([]byte, error) { +// CreateAdminUiSavedViews - Post UI Saved View +// POST /admin/ui/savedViews +func (c *Client) CreateAdminUiSavedViews(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/admin/ui/savedViews" query := url.Values{} @@ -3215,12 +4324,12 @@ func (c *Client) ListAdminUiSavedViews(ctx context.Context, params url.Values) ( fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// PatchAdminUiSavedViewsSavedViewId - Patch UI Saved View -// PATCH /admin/ui/savedViews/{savedViewId} -func (c *Client) PatchAdminUiSavedViewsSavedViewId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// DeleteAdminUiSavedViewsSavedViewId - Delete UI Saved View +// DELETE /admin/ui/savedViews/{savedViewId} +func (c *Client) DeleteAdminUiSavedViewsSavedViewId(ctx context.Context, params url.Values) ([]byte, error) { path := "/admin/ui/savedViews/{savedViewId}" path = strings.Replace(path, "{savedViewId}", params.Get("savedViewId"), 1) @@ -3261,12 +4370,12 @@ func (c *Client) PatchAdminUiSavedViewsSavedViewId(ctx context.Context, params u fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "DELETE", fullURL, nil) } -// DeleteAdminUiSavedViewsSavedViewId - Delete UI Saved View -// DELETE /admin/ui/savedViews/{savedViewId} -func (c *Client) DeleteAdminUiSavedViewsSavedViewId(ctx context.Context, params url.Values) ([]byte, error) { +// PatchAdminUiSavedViewsSavedViewId - Patch UI Saved View +// PATCH /admin/ui/savedViews/{savedViewId} +func (c *Client) PatchAdminUiSavedViewsSavedViewId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/admin/ui/savedViews/{savedViewId}" path = strings.Replace(path, "{savedViewId}", params.Get("savedViewId"), 1) @@ -3307,7 +4416,7 @@ func (c *Client) DeleteAdminUiSavedViewsSavedViewId(ctx context.Context, params fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } // ListAdminUserCurrent - Get Current User @@ -3355,9 +4464,9 @@ func (c *Client) ListAdminUserCurrent(ctx context.Context, params url.Values) ([ return c.do(ctx, "GET", fullURL, nil) } -// CreateAdminUserMapping - Post Add User Mappings -// POST /admin/user/mapping -func (c *Client) CreateAdminUserMapping(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListAdminUserMapping - Get User Mapping +// GET /admin/user/mapping +func (c *Client) ListAdminUserMapping(ctx context.Context, params url.Values) ([]byte, error) { path := "/admin/user/mapping" query := url.Values{} @@ -3391,18 +4500,24 @@ func (c *Client) CreateAdminUserMapping(ctx context.Context, params url.Values, if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } + if v := params.Get("providerId"); v != "" { + query.Set("providerId", v) + } + if v := params.Get("userId"); v != "" { + query.Set("userId", v) + } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListAdminUserMapping - Get User Mapping -// GET /admin/user/mapping -func (c *Client) ListAdminUserMapping(ctx context.Context, params url.Values) ([]byte, error) { +// CreateAdminUserMapping - Post Add User Mappings +// POST /admin/user/mapping +func (c *Client) CreateAdminUserMapping(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/admin/user/mapping" query := url.Values{} @@ -3436,19 +4551,13 @@ func (c *Client) ListAdminUserMapping(ctx context.Context, params url.Values) ([ if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } - if v := params.Get("providerId"); v != "" { - query.Set("providerId", v) - } - if v := params.Get("userId"); v != "" { - query.Set("userId", v) - } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } // ListAdminUserMappingSuggestions - Get User Mapping Suggestions diff --git a/internal/api/asset-graph.go b/internal/api/asset-graph.go new file mode 100644 index 0000000..a39602e --- /dev/null +++ b/internal/api/asset-graph.go @@ -0,0 +1,218 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package api + +import ( + "context" + "fmt" + "net/url" +) + +// ListAssetGraphReachability - Get Asset Graph Reachability +// GET /asset-graph/reachability +func (c *Client) ListAssetGraphReachability(ctx context.Context, params url.Values) ([]byte, error) { + path := "/asset-graph/reachability" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("nodeId"); v != "" { + query.Set("nodeId", v) + } + if v := params.Get("accountId"); v != "" { + query.Set("accountId", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListAssetGraphSearch - Search Asset Graph +// GET /asset-graph/search +func (c *Client) ListAssetGraphSearch(ctx context.Context, params url.Values) ([]byte, error) { + path := "/asset-graph/search" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("q"); v != "" { + query.Set("q", v) + } + if v := params.Get("objectTypes"); v != "" { + query.Set("objectTypes", v) + } + if v := params.Get("maxResults"); v != "" { + query.Set("maxResults", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListAssetGraphSubgraph - Get Asset Graph Subgraph +// GET /asset-graph/subgraph +func (c *Client) ListAssetGraphSubgraph(ctx context.Context, params url.Values) ([]byte, error) { + path := "/asset-graph/subgraph" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("rootNodeId"); v != "" { + query.Set("rootNodeId", v) + } + if v := params.Get("depth"); v != "" { + query.Set("depth", v) + } + if v := params.Get("maxNodes"); v != "" { + query.Set("maxNodes", v) + } + if v := params.Get("accountId"); v != "" { + query.Set("accountId", v) + } + if v := params.Get("objectTypes"); v != "" { + query.Set("objectTypes", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListAssetGraphSummary - Get Asset Graph Summary +// GET /asset-graph/summary +func (c *Client) ListAssetGraphSummary(ctx context.Context, params url.Values) ([]byte, error) { + path := "/asset-graph/summary" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} diff --git a/internal/api/context.go b/internal/api/context.go index a799d88..b316070 100644 --- a/internal/api/context.go +++ b/internal/api/context.go @@ -144,9 +144,9 @@ func (c *Client) CreateContextApplicationsRebuild(ctx context.Context, params ur return c.do(ctx, "POST", fullURL, body) } -// GetContextApplicationsApplicationId - Get Application -// GET /context/applications/{applicationId} -func (c *Client) GetContextApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { +// DeleteContextApplicationsApplicationId - Delete Application +// DELETE /context/applications/{applicationId} +func (c *Client) DeleteContextApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/applications/{applicationId}" path = strings.Replace(path, "{applicationId}", params.Get("applicationId"), 1) @@ -187,12 +187,12 @@ func (c *Client) GetContextApplicationsApplicationId(ctx context.Context, params fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// PatchContextApplicationsApplicationId - Update Application -// PATCH /context/applications/{applicationId} -func (c *Client) PatchContextApplicationsApplicationId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// GetContextApplicationsApplicationId - Get Application +// GET /context/applications/{applicationId} +func (c *Client) GetContextApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/applications/{applicationId}" path = strings.Replace(path, "{applicationId}", params.Get("applicationId"), 1) @@ -233,12 +233,12 @@ func (c *Client) PatchContextApplicationsApplicationId(ctx context.Context, para fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// DeleteContextApplicationsApplicationId - Delete Application -// DELETE /context/applications/{applicationId} -func (c *Client) DeleteContextApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { +// PatchContextApplicationsApplicationId - Update Application +// PATCH /context/applications/{applicationId} +func (c *Client) PatchContextApplicationsApplicationId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/context/applications/{applicationId}" path = strings.Replace(path, "{applicationId}", params.Get("applicationId"), 1) @@ -279,7 +279,7 @@ func (c *Client) DeleteContextApplicationsApplicationId(ctx context.Context, par fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } // ListContextApplicationsApplicationIdSchema - Get Application Schema @@ -503,9 +503,9 @@ func (c *Client) ListContextArtifacts(ctx context.Context, params url.Values) ([ return c.do(ctx, "GET", fullURL, nil) } -// GetContextArtifactsArtifactId - Get Artifact -// GET /context/artifacts/{artifactId} -func (c *Client) GetContextArtifactsArtifactId(ctx context.Context, params url.Values) ([]byte, error) { +// DeleteContextArtifactsArtifactId - Delete Artifact +// DELETE /context/artifacts/{artifactId} +func (c *Client) DeleteContextArtifactsArtifactId(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/artifacts/{artifactId}" path = strings.Replace(path, "{artifactId}", params.Get("artifactId"), 1) @@ -546,12 +546,12 @@ func (c *Client) GetContextArtifactsArtifactId(ctx context.Context, params url.V fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// DeleteContextArtifactsArtifactId - Delete Artifact -// DELETE /context/artifacts/{artifactId} -func (c *Client) DeleteContextArtifactsArtifactId(ctx context.Context, params url.Values) ([]byte, error) { +// GetContextArtifactsArtifactId - Get Artifact +// GET /context/artifacts/{artifactId} +func (c *Client) GetContextArtifactsArtifactId(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/artifacts/{artifactId}" path = strings.Replace(path, "{artifactId}", params.Get("artifactId"), 1) @@ -592,7 +592,7 @@ func (c *Client) DeleteContextArtifactsArtifactId(ctx context.Context, params ur fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "GET", fullURL, nil) } // ListContextAssetInventoryCloudAccounts - Get Asset Inventory Cloud Accounts @@ -898,9 +898,9 @@ func (c *Client) ListContextCicdPipelines(ctx context.Context, params url.Values return c.do(ctx, "GET", fullURL, nil) } -// GetContextCicdPipelinesPipelineId - Get CI/CD Pipeline -// GET /context/cicd-pipelines/{pipelineId} -func (c *Client) GetContextCicdPipelinesPipelineId(ctx context.Context, params url.Values) ([]byte, error) { +// DeleteContextCicdPipelinesPipelineId - Delete CI/CD Pipeline +// DELETE /context/cicd-pipelines/{pipelineId} +func (c *Client) DeleteContextCicdPipelinesPipelineId(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/cicd-pipelines/{pipelineId}" path = strings.Replace(path, "{pipelineId}", params.Get("pipelineId"), 1) @@ -941,12 +941,12 @@ func (c *Client) GetContextCicdPipelinesPipelineId(ctx context.Context, params u fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// DeleteContextCicdPipelinesPipelineId - Delete CI/CD Pipeline -// DELETE /context/cicd-pipelines/{pipelineId} -func (c *Client) DeleteContextCicdPipelinesPipelineId(ctx context.Context, params url.Values) ([]byte, error) { +// GetContextCicdPipelinesPipelineId - Get CI/CD Pipeline +// GET /context/cicd-pipelines/{pipelineId} +func (c *Client) GetContextCicdPipelinesPipelineId(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/cicd-pipelines/{pipelineId}" path = strings.Replace(path, "{pipelineId}", params.Get("pipelineId"), 1) @@ -987,7 +987,7 @@ func (c *Client) DeleteContextCicdPipelinesPipelineId(ctx context.Context, param fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "GET", fullURL, nil) } // ListContextCloudReconAccountsAccountIdDiscoveredNodes - Get Cloud Recon Discovered Nodes @@ -1330,6 +1330,72 @@ func (c *Client) ListContextCloudScanScanIdStatus(ctx context.Context, params ur return c.do(ctx, "GET", fullURL, nil) } +// DeleteContextDeps - Delete dependency data +// DELETE /context/deps +func (c *Client) DeleteContextDeps(ctx context.Context, params url.Values) ([]byte, error) { + path := "/context/deps" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("projectId"); v != "" { + query.Set("projectId", v) + } + if v := params.Get("ecosystem"); v != "" { + query.Set("ecosystem", v) + } + if v := params.Get("name"); v != "" { + query.Set("name", v) + } + if v := params.Get("version"); v != "" { + query.Set("version", v) + } + if v := params.Get("introducedAt"); v != "" { + query.Set("introducedAt", v) + } + if v := params.Get("global"); v != "" { + query.Set("global", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "DELETE", fullURL, nil) +} + // ListContextDeps - List Tenant Wide Dependencies (Historical) // GET /context/deps func (c *Client) ListContextDeps(ctx context.Context, params url.Values) ([]byte, error) { @@ -1381,10 +1447,10 @@ func (c *Client) ListContextDeps(ctx context.Context, params url.Values) ([]byte return c.do(ctx, "GET", fullURL, nil) } -// DeleteContextDeps - Delete dependency data -// DELETE /context/deps -func (c *Client) DeleteContextDeps(ctx context.Context, params url.Values) ([]byte, error) { - path := "/context/deps" +// ListContextDepsActive - List Tenant Wide Active Dependencies +// GET /context/deps/active +func (c *Client) ListContextDepsActive(ctx context.Context, params url.Values) ([]byte, error) { + path := "/context/deps/active" query := url.Values{} for k, v := range c.DefaultParams { @@ -1417,11 +1483,14 @@ func (c *Client) DeleteContextDeps(ctx context.Context, params url.Values) ([]by if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } - if v := params.Get("repositoryId"); v != "" { - query.Set("repositoryId", v) + if v := params.Get("pageSize"); v != "" { + query.Set("pageSize", v) } - if v := params.Get("projectId"); v != "" { - query.Set("projectId", v) + if v := params.Get("cursor"); v != "" { + query.Set("cursor", v) + } + if v := params.Get("search"); v != "" { + query.Set("search", v) } if v := params.Get("ecosystem"); v != "" { query.Set("ecosystem", v) @@ -1429,14 +1498,17 @@ func (c *Client) DeleteContextDeps(ctx context.Context, params url.Values) ([]by if v := params.Get("name"); v != "" { query.Set("name", v) } - if v := params.Get("version"); v != "" { - query.Set("version", v) + if v := params.Get("direct"); v != "" { + query.Set("direct", v) } - if v := params.Get("introducedAt"); v != "" { - query.Set("introducedAt", v) + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) } - if v := params.Get("global"); v != "" { - query.Set("global", v) + if v := params.Get("projectId"); v != "" { + query.Set("projectId", v) + } + if v := params.Get("range"); v != "" { + query.Set("range", v) } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) @@ -1444,13 +1516,13 @@ func (c *Client) DeleteContextDeps(ctx context.Context, params url.Values) ([]by fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "GET", fullURL, nil) } -// ListContextDepsActive - List Tenant Wide Active Dependencies -// GET /context/deps/active -func (c *Client) ListContextDepsActive(ctx context.Context, params url.Values) ([]byte, error) { - path := "/context/deps/active" +// ListContextDepsActiveSummary - Tenant Wide Active Dependency Summary +// GET /context/deps/active/summary +func (c *Client) ListContextDepsActiveSummary(ctx context.Context, params url.Values) ([]byte, error) { + path := "/context/deps/active/summary" query := url.Values{} for k, v := range c.DefaultParams { @@ -1483,11 +1555,26 @@ func (c *Client) ListContextDepsActive(ctx context.Context, params url.Values) ( if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } - if v := params.Get("pageSize"); v != "" { - query.Set("pageSize", v) + if v := params.Get("search"); v != "" { + query.Set("search", v) } - if v := params.Get("cursor"); v != "" { - query.Set("cursor", v) + if v := params.Get("ecosystem"); v != "" { + query.Set("ecosystem", v) + } + if v := params.Get("name"); v != "" { + query.Set("name", v) + } + if v := params.Get("direct"); v != "" { + query.Set("direct", v) + } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("projectId"); v != "" { + query.Set("projectId", v) + } + if v := params.Get("range"); v != "" { + query.Set("range", v) } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) @@ -1694,6 +1781,15 @@ func (c *Client) ListContextDepsRepositoryRepositoryIdProjectProjectIdActive(ctx if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } + if v := params.Get("search"); v != "" { + query.Set("search", v) + } + if v := params.Get("ecosystem"); v != "" { + query.Set("ecosystem", v) + } + if v := params.Get("direct"); v != "" { + query.Set("direct", v) + } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { @@ -2116,9 +2212,9 @@ func (c *Client) GetContextEntrypointsEntrypointId(ctx context.Context, params u return c.do(ctx, "GET", fullURL, nil) } -// CreateContextMemories - Create Memory -// POST /context/memories -func (c *Client) CreateContextMemories(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListContextMemories - Get Memories +// GET /context/memories +func (c *Client) ListContextMemories(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/memories" query := url.Values{} @@ -2152,18 +2248,39 @@ func (c *Client) CreateContextMemories(ctx context.Context, params url.Values, b if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } + if v := params.Get("resourceId"); v != "" { + query.Set("resourceId", v) + } + if v := params.Get("resourceType"); v != "" { + query.Set("resourceType", v) + } + if v := params.Get("memoryType"); v != "" { + query.Set("memoryType", v) + } + if v := params.Get("priority"); v != "" { + query.Set("priority", v) + } + if v := params.Get("isLatest"); v != "" { + query.Set("isLatest", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListContextMemories - Get Memories -// GET /context/memories -func (c *Client) ListContextMemories(ctx context.Context, params url.Values) ([]byte, error) { +// CreateContextMemories - Create Memory +// POST /context/memories +func (c *Client) CreateContextMemories(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/context/memories" query := url.Values{} @@ -2197,34 +2314,13 @@ func (c *Client) ListContextMemories(ctx context.Context, params url.Values) ([] if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } - if v := params.Get("resourceId"); v != "" { - query.Set("resourceId", v) - } - if v := params.Get("resourceType"); v != "" { - query.Set("resourceType", v) - } - if v := params.Get("memoryType"); v != "" { - query.Set("memoryType", v) - } - if v := params.Get("priority"); v != "" { - query.Set("priority", v) - } - if v := params.Get("isLatest"); v != "" { - query.Set("isLatest", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } - if v := params.Get("nextToken"); v != "" { - query.Set("nextToken", v) - } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } // ListContextMemoriesType - Get Memories By Type @@ -2474,9 +2570,9 @@ func (c *Client) ListContextMemoriesMemoryIdVersions(ctx context.Context, params return c.do(ctx, "GET", fullURL, nil) } -// UpdateContextOrganization - Upsert Classification of the Organization -// PUT /context/organization -func (c *Client) UpdateContextOrganization(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListContextOrganization - Get Organization Context +// GET /context/organization +func (c *Client) ListContextOrganization(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/organization" query := url.Values{} @@ -2516,7 +2612,7 @@ func (c *Client) UpdateContextOrganization(ctx context.Context, params url.Value fullURL += "?" + query.Encode() } - return c.do(ctx, "PUT", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } // PatchContextOrganization - Update Classification of the Organization @@ -2564,9 +2660,9 @@ func (c *Client) PatchContextOrganization(ctx context.Context, params url.Values return c.do(ctx, "PATCH", fullURL, body) } -// ListContextOrganization - Get Organization Context -// GET /context/organization -func (c *Client) ListContextOrganization(ctx context.Context, params url.Values) ([]byte, error) { +// UpdateContextOrganization - Upsert Classification of the Organization +// PUT /context/organization +func (c *Client) UpdateContextOrganization(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/context/organization" query := url.Values{} @@ -2606,7 +2702,249 @@ func (c *Client) ListContextOrganization(ctx context.Context, params url.Values) fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PUT", fullURL, body) +} + +// CreateContextRagResync - Resync RAG Vector Store +// POST /context/rag/resync +func (c *Client) CreateContextRagResync(ctx context.Context, params url.Values) ([]byte, error) { + path := "/context/rag/resync" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, nil) +} + +// ListContextRepoScans - List Repo Context Scans +// GET /context/repo-scans +func (c *Client) ListContextRepoScans(ctx context.Context, params url.Values) ([]byte, error) { + path := "/context/repo-scans" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("commitSha"); v != "" { + query.Set("commitSha", v) + } + if v := params.Get("status"); v != "" { + query.Set("status", v) + } + if v := params.Get("page"); v != "" { + query.Set("page", v) + } + if v := params.Get("pageSize"); v != "" { + query.Set("pageSize", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateContextRepoScans - Create Repo Context Scan +// POST /context/repo-scans +func (c *Client) CreateContextRepoScans(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/context/repo-scans" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// GetContextRepoScansScanId - Get Repo Context Scan +// GET /context/repo-scans/{scanId} +func (c *Client) GetContextRepoScansScanId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/context/repo-scans/{scanId}" + path = strings.Replace(path, "{scanId}", params.Get("scanId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// PatchContextRepoScansScanId - Update Repo Context Scan +// PATCH /context/repo-scans/{scanId} +func (c *Client) PatchContextRepoScansScanId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/context/repo-scans/{scanId}" + path = strings.Replace(path, "{scanId}", params.Get("scanId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "PATCH", fullURL, body) } // CreateContextReports - Create Report Generation Job @@ -2757,9 +3095,9 @@ func (c *Client) ListContextRepositories(ctx context.Context, params url.Values) return c.do(ctx, "GET", fullURL, nil) } -// PatchContextRepositoriesRepositoryId - Update Repository -// PATCH /context/repositories/{repositoryId} -func (c *Client) PatchContextRepositoriesRepositoryId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// DeleteContextRepositoriesRepositoryId - Delete Repository +// DELETE /context/repositories/{repositoryId} +func (c *Client) DeleteContextRepositoriesRepositoryId(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/repositories/{repositoryId}" path = strings.Replace(path, "{repositoryId}", params.Get("repositoryId"), 1) @@ -2800,7 +3138,7 @@ func (c *Client) PatchContextRepositoriesRepositoryId(ctx context.Context, param fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "DELETE", fullURL, nil) } // GetContextRepositoriesRepositoryId - Get Repository @@ -2849,9 +3187,9 @@ func (c *Client) GetContextRepositoriesRepositoryId(ctx context.Context, params return c.do(ctx, "GET", fullURL, nil) } -// DeleteContextRepositoriesRepositoryId - Delete Repository -// DELETE /context/repositories/{repositoryId} -func (c *Client) DeleteContextRepositoriesRepositoryId(ctx context.Context, params url.Values) ([]byte, error) { +// PatchContextRepositoriesRepositoryId - Update Repository +// PATCH /context/repositories/{repositoryId} +func (c *Client) PatchContextRepositoriesRepositoryId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/context/repositories/{repositoryId}" path = strings.Replace(path, "{repositoryId}", params.Get("repositoryId"), 1) @@ -2892,7 +3230,7 @@ func (c *Client) DeleteContextRepositoriesRepositoryId(ctx context.Context, para fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } // ListContextRepositoriesRepositoryIdProjects - List Projects @@ -3091,9 +3429,9 @@ func (c *Client) PatchContextRepositoriesRepositoryIdProjectsProjectId(ctx conte return c.do(ctx, "PATCH", fullURL, body) } -// CreateContextRepositoriesRepositoryIdProjectsProjectIdSchema - Upload Project Schema -// POST /context/repositories/{repositoryId}/projects/{projectId}/schema -func (c *Client) CreateContextRepositoriesRepositoryIdProjectsProjectIdSchema(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListContextRepositoriesRepositoryIdProjectsProjectIdSchema - Get Project Schema +// GET /context/repositories/{repositoryId}/projects/{projectId}/schema +func (c *Client) ListContextRepositoriesRepositoryIdProjectsProjectIdSchema(ctx context.Context, params url.Values) ([]byte, error) { path := "/context/repositories/{repositoryId}/projects/{projectId}/schema" path = strings.Replace(path, "{repositoryId}", params.Get("repositoryId"), 1) path = strings.Replace(path, "{projectId}", params.Get("projectId"), 1) @@ -3135,12 +3473,12 @@ func (c *Client) CreateContextRepositoriesRepositoryIdProjectsProjectIdSchema(ct fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListContextRepositoriesRepositoryIdProjectsProjectIdSchema - Get Project Schema -// GET /context/repositories/{repositoryId}/projects/{projectId}/schema -func (c *Client) ListContextRepositoriesRepositoryIdProjectsProjectIdSchema(ctx context.Context, params url.Values) ([]byte, error) { +// CreateContextRepositoriesRepositoryIdProjectsProjectIdSchema - Upload Project Schema +// POST /context/repositories/{repositoryId}/projects/{projectId}/schema +func (c *Client) CreateContextRepositoriesRepositoryIdProjectsProjectIdSchema(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/context/repositories/{repositoryId}/projects/{projectId}/schema" path = strings.Replace(path, "{repositoryId}", params.Get("repositoryId"), 1) path = strings.Replace(path, "{projectId}", params.Get("projectId"), 1) @@ -3182,7 +3520,7 @@ func (c *Client) ListContextRepositoriesRepositoryIdProjectsProjectIdSchema(ctx fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } // ListContextRepositoriesRepositoryIdProjectsProjectIdSchemaMetadata - Get Project Schema Metadata @@ -3537,6 +3875,51 @@ func (c *Client) GetContextSbomsRepositoryRepositoryIdProjectProjectId(ctx conte return c.do(ctx, "GET", fullURL, nil) } +// CreateContextSbomsResolve - Get or generate SBOM +// POST /context/sboms/resolve +func (c *Client) CreateContextSbomsResolve(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/context/sboms/resolve" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + // CreateContextSbomsScan - Scan SBOM (get-or-generate) // POST /context/sboms/scan func (c *Client) CreateContextSbomsScan(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { diff --git a/internal/api/cspm.go b/internal/api/cspm.go index da67aad..d3e4814 100644 --- a/internal/api/cspm.go +++ b/internal/api/cspm.go @@ -130,6 +130,58 @@ func (c *Client) GetCspmFindingsFindingId(ctx context.Context, params url.Values return c.do(ctx, "GET", fullURL, nil) } +// ListCspmFindingsFindingIdAutofixActivity - Get CSPM Finding Autofix Activity +// GET /cspm/findings/{findingId}/autofix/activity +func (c *Client) ListCspmFindingsFindingIdAutofixActivity(ctx context.Context, params url.Values) ([]byte, error) { + path := "/cspm/findings/{findingId}/autofix/activity" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("since_id"); v != "" { + query.Set("since_id", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + // ListCspmFindingsFindingIdAutofixCacheDiff - Get CSPM Finding Autofix Diff // GET /cspm/findings/{findingId}/autofix/cache/diff func (c *Client) ListCspmFindingsFindingIdAutofixCacheDiff(ctx context.Context, params url.Values) ([]byte, error) { @@ -176,6 +228,144 @@ func (c *Client) ListCspmFindingsFindingIdAutofixCacheDiff(ctx context.Context, return c.do(ctx, "GET", fullURL, nil) } +// CreateCspmFindingsFindingIdAutofixFix - Post CSPM Finding Autofix +// POST /cspm/findings/{findingId}/autofix/fix +func (c *Client) CreateCspmFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/cspm/findings/{findingId}/autofix/fix" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListCspmFindingsFindingIdAutofixState - Get CSPM Finding Autofix State +// GET /cspm/findings/{findingId}/autofix/state +func (c *Client) ListCspmFindingsFindingIdAutofixState(ctx context.Context, params url.Values) ([]byte, error) { + path := "/cspm/findings/{findingId}/autofix/state" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListCspmFindingsFindingIdAutofixStatus - Get CSPM Finding Autofix Status +// GET /cspm/findings/{findingId}/autofix/status +func (c *Client) ListCspmFindingsFindingIdAutofixStatus(ctx context.Context, params url.Values) ([]byte, error) { + path := "/cspm/findings/{findingId}/autofix/status" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + // CreateCspmFindingsFindingIdTicket - Create Ticket for CSPM Finding // POST /cspm/findings/{findingId}/ticket func (c *Client) CreateCspmFindingsFindingIdTicket(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { diff --git a/internal/api/dast.go b/internal/api/dast.go index 840835f..3de1564 100644 --- a/internal/api/dast.go +++ b/internal/api/dast.go @@ -9,9 +9,9 @@ import ( "strings" ) -// UpdateDastBughuntConfig - Put BugHunt Config -// PUT /dast/bughunt/config -func (c *Client) UpdateDastBughuntConfig(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListDastBughuntConfig - Get BugHunt Config +// GET /dast/bughunt/config +func (c *Client) ListDastBughuntConfig(ctx context.Context, params url.Values) ([]byte, error) { path := "/dast/bughunt/config" query := url.Values{} @@ -51,12 +51,12 @@ func (c *Client) UpdateDastBughuntConfig(ctx context.Context, params url.Values, fullURL += "?" + query.Encode() } - return c.do(ctx, "PUT", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListDastBughuntConfig - Get BugHunt Config -// GET /dast/bughunt/config -func (c *Client) ListDastBughuntConfig(ctx context.Context, params url.Values) ([]byte, error) { +// UpdateDastBughuntConfig - Put BugHunt Config +// PUT /dast/bughunt/config +func (c *Client) UpdateDastBughuntConfig(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/dast/bughunt/config" query := url.Values{} @@ -96,7 +96,7 @@ func (c *Client) ListDastBughuntConfig(ctx context.Context, params url.Values) ( fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PUT", fullURL, body) } // CreateDastBughuntConfigValidate - Validate BugHunt Config @@ -373,9 +373,9 @@ func (c *Client) ListDastBughuntFindingsFindingIdTriage(ctx context.Context, par return c.do(ctx, "GET", fullURL, nil) } -// CreateDastBughuntScans - Start BugHunt Scan -// POST /dast/bughunt/scans -func (c *Client) CreateDastBughuntScans(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListDastBughuntScans - Get BugHunt Scans +// GET /dast/bughunt/scans +func (c *Client) ListDastBughuntScans(ctx context.Context, params url.Values) ([]byte, error) { path := "/dast/bughunt/scans" query := url.Values{} @@ -415,12 +415,12 @@ func (c *Client) CreateDastBughuntScans(ctx context.Context, params url.Values, fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListDastBughuntScans - Get BugHunt Scans -// GET /dast/bughunt/scans -func (c *Client) ListDastBughuntScans(ctx context.Context, params url.Values) ([]byte, error) { +// CreateDastBughuntScans - Start BugHunt Scan +// POST /dast/bughunt/scans +func (c *Client) CreateDastBughuntScans(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/dast/bughunt/scans" query := url.Values{} @@ -460,7 +460,7 @@ func (c *Client) ListDastBughuntScans(ctx context.Context, params url.Values) ([ fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } // GetDastBughuntScansScanId - Get BugHunt Scan @@ -877,9 +877,9 @@ func (c *Client) CreateDastCredentials(ctx context.Context, params url.Values, b return c.do(ctx, "POST", fullURL, body) } -// GetDastCredentialsCredentialId - Get Credential -// GET /dast/credentials/{credentialId} -func (c *Client) GetDastCredentialsCredentialId(ctx context.Context, params url.Values) ([]byte, error) { +// DeleteDastCredentialsCredentialId - Delete Credential +// DELETE /dast/credentials/{credentialId} +func (c *Client) DeleteDastCredentialsCredentialId(ctx context.Context, params url.Values) ([]byte, error) { path := "/dast/credentials/{credentialId}" path = strings.Replace(path, "{credentialId}", params.Get("credentialId"), 1) @@ -920,12 +920,12 @@ func (c *Client) GetDastCredentialsCredentialId(ctx context.Context, params url. fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// DeleteDastCredentialsCredentialId - Delete Credential -// DELETE /dast/credentials/{credentialId} -func (c *Client) DeleteDastCredentialsCredentialId(ctx context.Context, params url.Values) ([]byte, error) { +// GetDastCredentialsCredentialId - Get Credential +// GET /dast/credentials/{credentialId} +func (c *Client) GetDastCredentialsCredentialId(ctx context.Context, params url.Values) ([]byte, error) { path := "/dast/credentials/{credentialId}" path = strings.Replace(path, "{credentialId}", params.Get("credentialId"), 1) @@ -966,7 +966,7 @@ func (c *Client) DeleteDastCredentialsCredentialId(ctx context.Context, params u fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "GET", fullURL, nil) } // UpdateDastCredentialsCredentialId - Update Credential @@ -1061,15 +1061,21 @@ func (c *Client) CreateDastCredentialsCredentialIdValidate(ctx context.Context, return c.do(ctx, "POST", fullURL, nil) } -// CreateDastPentestApplications - Create Application -// POST /dast/pentest/applications -func (c *Client) CreateDastPentestApplications(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListDastPentestApplications - Get Pentest App Configs +// GET /dast/pentest/applications +func (c *Client) ListDastPentestApplications(ctx context.Context, params url.Values) ([]byte, error) { path := "/dast/pentest/applications" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1103,24 +1109,18 @@ func (c *Client) CreateDastPentestApplications(ctx context.Context, params url.V fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListDastPentestApplications - Get Pentest App Configs -// GET /dast/pentest/applications -func (c *Client) ListDastPentestApplications(ctx context.Context, params url.Values) ([]byte, error) { +// CreateDastPentestApplications - Create Application +// POST /dast/pentest/applications +func (c *Client) CreateDastPentestApplications(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/dast/pentest/applications" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("nextToken"); v != "" { - query.Set("nextToken", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) - } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1154,12 +1154,12 @@ func (c *Client) ListDastPentestApplications(ctx context.Context, params url.Val fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// GetDastPentestApplicationsApplicationId - Get Pentest App Config -// GET /dast/pentest/applications/{applicationId} -func (c *Client) GetDastPentestApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { +// DeleteDastPentestApplicationsApplicationId - Delete Pentest App Config +// DELETE /dast/pentest/applications/{applicationId} +func (c *Client) DeleteDastPentestApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { path := "/dast/pentest/applications/{applicationId}" path = strings.Replace(path, "{applicationId}", params.Get("applicationId"), 1) @@ -1200,12 +1200,12 @@ func (c *Client) GetDastPentestApplicationsApplicationId(ctx context.Context, pa fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// UpdateDastPentestApplicationsApplicationId - Update Application -// PUT /dast/pentest/applications/{applicationId} -func (c *Client) UpdateDastPentestApplicationsApplicationId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// GetDastPentestApplicationsApplicationId - Get Pentest App Config +// GET /dast/pentest/applications/{applicationId} +func (c *Client) GetDastPentestApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { path := "/dast/pentest/applications/{applicationId}" path = strings.Replace(path, "{applicationId}", params.Get("applicationId"), 1) @@ -1246,12 +1246,12 @@ func (c *Client) UpdateDastPentestApplicationsApplicationId(ctx context.Context, fullURL += "?" + query.Encode() } - return c.do(ctx, "PUT", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// DeleteDastPentestApplicationsApplicationId - Delete Pentest App Config -// DELETE /dast/pentest/applications/{applicationId} -func (c *Client) DeleteDastPentestApplicationsApplicationId(ctx context.Context, params url.Values) ([]byte, error) { +// UpdateDastPentestApplicationsApplicationId - Update Application +// PUT /dast/pentest/applications/{applicationId} +func (c *Client) UpdateDastPentestApplicationsApplicationId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/dast/pentest/applications/{applicationId}" path = strings.Replace(path, "{applicationId}", params.Get("applicationId"), 1) @@ -1292,7 +1292,7 @@ func (c *Client) DeleteDastPentestApplicationsApplicationId(ctx context.Context, fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "PUT", fullURL, body) } // CreateDastPentestApplicationsApplicationIdPreflight - Start Pentest Preflight @@ -1600,16 +1600,22 @@ func (c *Client) CreateDastPentestFindingsFindingIdAllowlist(ctx context.Context return c.do(ctx, "POST", fullURL, body) } -// CreateDastPentestFindingsFindingIdAutofixCacheCreatePr - Create PR from Cached Pentest Finding Autofix -// POST /dast/pentest/findings/{findingId}/autofix/cache/create_pr -func (c *Client) CreateDastPentestFindingsFindingIdAutofixCacheCreatePr(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/dast/pentest/findings/{findingId}/autofix/cache/create_pr" +// ListDastPentestFindingsFindingIdAutofixActivity - Get DAST Pentest Finding Autofix Activity +// GET /dast/pentest/findings/{findingId}/autofix/activity +func (c *Client) ListDastPentestFindingsFindingIdAutofixActivity(ctx context.Context, params url.Values) ([]byte, error) { + path := "/dast/pentest/findings/{findingId}/autofix/activity" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("since_id"); v != "" { + query.Set("since_id", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1643,7 +1649,7 @@ func (c *Client) CreateDastPentestFindingsFindingIdAutofixCacheCreatePr(ctx cont fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } // ListDastPentestFindingsFindingIdAutofixCacheDiff - Get Pentest Finding Autofix Diff @@ -1692,6 +1698,144 @@ func (c *Client) ListDastPentestFindingsFindingIdAutofixCacheDiff(ctx context.Co return c.do(ctx, "GET", fullURL, nil) } +// CreateDastPentestFindingsFindingIdAutofixFix - Post DAST Pentest Finding AutoFix +// POST /dast/pentest/findings/{findingId}/autofix/fix +func (c *Client) CreateDastPentestFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/dast/pentest/findings/{findingId}/autofix/fix" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListDastPentestFindingsFindingIdAutofixState - Get DAST Pentest Finding Autofix State +// GET /dast/pentest/findings/{findingId}/autofix/state +func (c *Client) ListDastPentestFindingsFindingIdAutofixState(ctx context.Context, params url.Values) ([]byte, error) { + path := "/dast/pentest/findings/{findingId}/autofix/state" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListDastPentestFindingsFindingIdAutofixStatus - Get DAST Pentest Finding Autofix Status +// GET /dast/pentest/findings/{findingId}/autofix/status +func (c *Client) ListDastPentestFindingsFindingIdAutofixStatus(ctx context.Context, params url.Values) ([]byte, error) { + path := "/dast/pentest/findings/{findingId}/autofix/status" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + // ListDastPentestFindingsFindingIdEvents - Get Pentest Finding Events // GET /dast/pentest/findings/{findingId}/events func (c *Client) ListDastPentestFindingsFindingIdEvents(ctx context.Context, params url.Values) ([]byte, error) { diff --git a/internal/api/infrastructure.go b/internal/api/infrastructure.go new file mode 100644 index 0000000..0e78dba --- /dev/null +++ b/internal/api/infrastructure.go @@ -0,0 +1,329 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package api + +import ( + "context" + "fmt" + "net/url" + "strings" +) + +// ListInfrastructureGraphs - List Infrastructure Graphs +// GET /infrastructure/graphs +func (c *Client) ListInfrastructureGraphs(ctx context.Context, params url.Values) ([]byte, error) { + path := "/infrastructure/graphs" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListInfrastructureGraphsInfo - Get Infrastructure Graph Info +// GET /infrastructure/graphs/info +func (c *Client) ListInfrastructureGraphsInfo(ctx context.Context, params url.Values) ([]byte, error) { + path := "/infrastructure/graphs/info" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListInfrastructureGraphsSummary - Get Infrastructure Graph Summary +// GET /infrastructure/graphs/summary +func (c *Client) ListInfrastructureGraphsSummary(ctx context.Context, params url.Values) ([]byte, error) { + path := "/infrastructure/graphs/summary" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// GetInfrastructureGraphsAccountId - Get Infrastructure Graph +// GET /infrastructure/graphs/{accountId} +func (c *Client) GetInfrastructureGraphsAccountId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/infrastructure/graphs/{accountId}" + path = strings.Replace(path, "{accountId}", params.Get("accountId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListInfrastructureGraphsAccountIdDownload - Get Infrastructure Graph Download URL +// GET /infrastructure/graphs/{accountId}/download +func (c *Client) ListInfrastructureGraphsAccountIdDownload(ctx context.Context, params url.Values) ([]byte, error) { + path := "/infrastructure/graphs/{accountId}/download" + path = strings.Replace(path, "{accountId}", params.Get("accountId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListInfrastructureGraphsAccountIdVersions - List Infrastructure Graph Versions +// GET /infrastructure/graphs/{accountId}/versions +func (c *Client) ListInfrastructureGraphsAccountIdVersions(ctx context.Context, params url.Values) ([]byte, error) { + path := "/infrastructure/graphs/{accountId}/versions" + path = strings.Replace(path, "{accountId}", params.Get("accountId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListInfrastructureGraphsAccountIdVersionsVersion - Get Infrastructure Graph Version +// GET /infrastructure/graphs/{accountId}/versions/{version} +func (c *Client) ListInfrastructureGraphsAccountIdVersionsVersion(ctx context.Context, params url.Values) ([]byte, error) { + path := "/infrastructure/graphs/{accountId}/versions/{version}" + path = strings.Replace(path, "{accountId}", params.Get("accountId"), 1) + path = strings.Replace(path, "{version}", params.Get("version"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} diff --git a/internal/api/manager.go b/internal/api/manager.go index 6710abd..e70c8bc 100644 --- a/internal/api/manager.go +++ b/internal/api/manager.go @@ -9,15 +9,21 @@ import ( "strings" ) -// CreateManagerCampaigns - Post Campaign -// POST /manager/campaigns -func (c *Client) CreateManagerCampaigns(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListManagerCampaigns - List Campaigns +// GET /manager/campaigns +func (c *Client) ListManagerCampaigns(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/campaigns" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("page"); v != "" { + query.Set("page", v) + } + if v := params.Get("pageSize"); v != "" { + query.Set("pageSize", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -51,24 +57,18 @@ func (c *Client) CreateManagerCampaigns(ctx context.Context, params url.Values, fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListManagerCampaigns - List Campaigns -// GET /manager/campaigns -func (c *Client) ListManagerCampaigns(ctx context.Context, params url.Values) ([]byte, error) { +// CreateManagerCampaigns - Post Campaign +// POST /manager/campaigns +func (c *Client) CreateManagerCampaigns(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/manager/campaigns" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("page"); v != "" { - query.Set("page", v) - } - if v := params.Get("pageSize"); v != "" { - query.Set("pageSize", v) - } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -102,7 +102,7 @@ func (c *Client) ListManagerCampaigns(ctx context.Context, params url.Values) ([ fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } // ListManagerCampaignsDefault - Get Default Campaigns @@ -255,6 +255,9 @@ func (c *Client) ListManagerCampaignsMetricsRefresh(ctx context.Context, params for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("includeExpired"); v != "" { + query.Set("includeExpired", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -393,9 +396,9 @@ func (c *Client) ListManagerCampaignsSummaries(ctx context.Context, params url.V return c.do(ctx, "GET", fullURL, nil) } -// PatchManagerCampaignsCampaignId - Patch Campaign -// PATCH /manager/campaigns/{campaignId} -func (c *Client) PatchManagerCampaignsCampaignId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// DeleteManagerCampaignsCampaignId - Delete Campaign +// DELETE /manager/campaigns/{campaignId} +func (c *Client) DeleteManagerCampaignsCampaignId(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/campaigns/{campaignId}" path = strings.Replace(path, "{campaignId}", params.Get("campaignId"), 1) @@ -436,12 +439,12 @@ func (c *Client) PatchManagerCampaignsCampaignId(ctx context.Context, params url fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "DELETE", fullURL, nil) } -// DeleteManagerCampaignsCampaignId - Delete Campaign -// DELETE /manager/campaigns/{campaignId} -func (c *Client) DeleteManagerCampaignsCampaignId(ctx context.Context, params url.Values) ([]byte, error) { +// GetManagerCampaignsCampaignId - Get Campaign by ID +// GET /manager/campaigns/{campaignId} +func (c *Client) GetManagerCampaignsCampaignId(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/campaigns/{campaignId}" path = strings.Replace(path, "{campaignId}", params.Get("campaignId"), 1) @@ -482,12 +485,12 @@ func (c *Client) DeleteManagerCampaignsCampaignId(ctx context.Context, params ur fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "GET", fullURL, nil) } -// GetManagerCampaignsCampaignId - Get Campaign by ID -// GET /manager/campaigns/{campaignId} -func (c *Client) GetManagerCampaignsCampaignId(ctx context.Context, params url.Values) ([]byte, error) { +// PatchManagerCampaignsCampaignId - Patch Campaign +// PATCH /manager/campaigns/{campaignId} +func (c *Client) PatchManagerCampaignsCampaignId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/manager/campaigns/{campaignId}" path = strings.Replace(path, "{campaignId}", params.Get("campaignId"), 1) @@ -528,7 +531,7 @@ func (c *Client) GetManagerCampaignsCampaignId(ctx context.Context, params url.V fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } // ListManagerCampaignsCampaignIdEvents - Get Campaign Events @@ -681,6 +684,105 @@ func (c *Client) ListManagerCampaignsCampaignIdPreview(ctx context.Context, para return c.do(ctx, "GET", fullURL, nil) } +// ListManagerCampaignsCampaignIdRuns - List Campaign Runs +// GET /manager/campaigns/{campaignId}/runs +func (c *Client) ListManagerCampaignsCampaignIdRuns(ctx context.Context, params url.Values) ([]byte, error) { + path := "/manager/campaigns/{campaignId}/runs" + path = strings.Replace(path, "{campaignId}", params.Get("campaignId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("cursor"); v != "" { + query.Set("cursor", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// GetManagerCampaignsCampaignIdRunsRunId - Get Campaign Run +// GET /manager/campaigns/{campaignId}/runs/{runId} +func (c *Client) GetManagerCampaignsCampaignIdRunsRunId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/manager/campaigns/{campaignId}/runs/{runId}" + path = strings.Replace(path, "{campaignId}", params.Get("campaignId"), 1) + path = strings.Replace(path, "{runId}", params.Get("runId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + // ListManagerChatSessions - List Chat Sessions // GET /manager/chat/sessions func (c *Client) ListManagerChatSessions(ctx context.Context, params url.Values) ([]byte, error) { @@ -916,7 +1018,7 @@ func (c *Client) ListManagerChatSessionsChatIDActions(ctx context.Context, param return c.do(ctx, "GET", fullURL, nil) } -// ListManagerChatSessionsChatIDAudit - Get Chat Session Audit Trail +// ListManagerChatSessionsChatIDAudit - Get chat session audit trail // GET /manager/chat/sessions/{chatID}/audit func (c *Client) ListManagerChatSessionsChatIDAudit(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/chat/sessions/{chatID}/audit" @@ -1020,9 +1122,9 @@ func (c *Client) ListManagerChatSessionsChatIDHistory(ctx context.Context, param return c.do(ctx, "GET", fullURL, nil) } -// CreateManagerConfig - Post a Manager Config object to S3 -// POST /manager/config -func (c *Client) CreateManagerConfig(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListManagerConfig - Get Manager config +// GET /manager/config +func (c *Client) ListManagerConfig(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/config" query := url.Values{} @@ -1062,12 +1164,12 @@ func (c *Client) CreateManagerConfig(ctx context.Context, params url.Values, bod fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListManagerConfig - Get the Manager Agent Config -// GET /manager/config -func (c *Client) ListManagerConfig(ctx context.Context, params url.Values) ([]byte, error) { +// CreateManagerConfig - Update Manager config +// POST /manager/config +func (c *Client) CreateManagerConfig(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/manager/config" query := url.Values{} @@ -1107,12 +1209,12 @@ func (c *Client) ListManagerConfig(ctx context.Context, params url.Values) ([]by fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// CreateManagerCredits - Post an update to agent credits -// POST /manager/credits -func (c *Client) CreateManagerCredits(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// ListManagerCredits - Get Manager credit balance +// GET /manager/credits +func (c *Client) ListManagerCredits(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/credits" query := url.Values{} @@ -1152,12 +1254,12 @@ func (c *Client) CreateManagerCredits(ctx context.Context, params url.Values, bo fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListManagerCredits - Get the credit balance available -// GET /manager/credits -func (c *Client) ListManagerCredits(ctx context.Context, params url.Values) ([]byte, error) { +// CreateManagerCredits - Update Manager credit balance +// POST /manager/credits +func (c *Client) CreateManagerCredits(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/manager/credits" query := url.Values{} @@ -1197,24 +1299,18 @@ func (c *Client) ListManagerCredits(ctx context.Context, params url.Values) ([]b fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// ListManagerCustomerQuestions - List Customer Question Sets -// GET /manager/customer-questions -func (c *Client) ListManagerCustomerQuestions(ctx context.Context, params url.Values) ([]byte, error) { +// DeleteManagerCustomerQuestions - Delete All Customer Question Sets +// DELETE /manager/customer-questions +func (c *Client) DeleteManagerCustomerQuestions(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/customer-questions" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("page"); v != "" { - query.Set("page", v) - } - if v := params.Get("pageSize"); v != "" { - query.Set("pageSize", v) - } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1248,18 +1344,24 @@ func (c *Client) ListManagerCustomerQuestions(ctx context.Context, params url.Va fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "DELETE", fullURL, nil) } -// DeleteManagerCustomerQuestions - Delete All Customer Question Sets -// DELETE /manager/customer-questions -func (c *Client) DeleteManagerCustomerQuestions(ctx context.Context, params url.Values) ([]byte, error) { +// ListManagerCustomerQuestions - List Customer Question Sets +// GET /manager/customer-questions +func (c *Client) ListManagerCustomerQuestions(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/customer-questions" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("page"); v != "" { + query.Set("page", v) + } + if v := params.Get("pageSize"); v != "" { + query.Set("pageSize", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1293,7 +1395,7 @@ func (c *Client) DeleteManagerCustomerQuestions(ctx context.Context, params url. fullURL += "?" + query.Encode() } - return c.do(ctx, "DELETE", fullURL, nil) + return c.do(ctx, "GET", fullURL, nil) } // DeleteManagerCustomerQuestionsQuestionSetId - Delete Customer Question Set @@ -1779,7 +1881,7 @@ func (c *Client) ListManagerFindingsFindingIdEvents(ctx context.Context, params return c.do(ctx, "GET", fullURL, nil) } -// ListManagerGroundrules - Get the Manager Agent GroundRules +// ListManagerGroundrules - Get Manager ground rules // GET /manager/groundrules func (c *Client) ListManagerGroundrules(ctx context.Context, params url.Values) ([]byte, error) { path := "/manager/groundrules" @@ -2154,10 +2256,100 @@ func (c *Client) ListManagerStates(ctx context.Context, params url.Values) ([]by return c.do(ctx, "GET", fullURL, nil) } -// CreateManagerTacitKnowledgeTrigger - Trigger TacitKnowledge -// POST /manager/tacit-knowledge/trigger -func (c *Client) CreateManagerTacitKnowledgeTrigger(ctx context.Context, params url.Values) ([]byte, error) { - path := "/manager/tacit-knowledge/trigger" +// ListManagerStrategy - Get Active Strategy +// GET /manager/strategy +func (c *Client) ListManagerStrategy(ctx context.Context, params url.Values) ([]byte, error) { + path := "/manager/strategy" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// PatchManagerStrategy - Patch Active Strategy +// PATCH /manager/strategy +func (c *Client) PatchManagerStrategy(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/manager/strategy" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "PATCH", fullURL, body) +} + +// CreateManagerStrategyTrigger - Trigger Strategy Generation +// POST /manager/strategy/trigger +func (c *Client) CreateManagerStrategyTrigger(ctx context.Context, params url.Values) ([]byte, error) { + path := "/manager/strategy/trigger" query := url.Values{} for k, v := range c.DefaultParams { @@ -2199,10 +2391,10 @@ func (c *Client) CreateManagerTacitKnowledgeTrigger(ctx context.Context, params return c.do(ctx, "POST", fullURL, nil) } -// CreateManagerThreatInvestigations - Post Threat Investigation -// POST /manager/threat-investigations -func (c *Client) CreateManagerThreatInvestigations(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/manager/threat-investigations" +// ListManagerStrategyVersions - List Strategy Versions +// GET /manager/strategy/versions +func (c *Client) ListManagerStrategyVersions(ctx context.Context, params url.Values) ([]byte, error) { + path := "/manager/strategy/versions" query := url.Values{} for k, v := range c.DefaultParams { @@ -2235,13 +2427,64 @@ func (c *Client) CreateManagerThreatInvestigations(ctx context.Context, params u if v := params.Get("bitbucketRepositoryId"); v != "" { query.Set("bitbucketRepositoryId", v) } + if v := params.Get("page"); v != "" { + query.Set("page", v) + } + if v := params.Get("pageSize"); v != "" { + query.Set("pageSize", v) + } fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) if len(query) > 0 { fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateManagerTacitKnowledgeTrigger - Trigger TacitKnowledge +// POST /manager/tacit-knowledge/trigger +func (c *Client) CreateManagerTacitKnowledgeTrigger(ctx context.Context, params url.Values) ([]byte, error) { + path := "/manager/tacit-knowledge/trigger" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, nil) } // ListManagerThreatInvestigations - Get Threat Investigations @@ -2295,11 +2538,10 @@ func (c *Client) ListManagerThreatInvestigations(ctx context.Context, params url return c.do(ctx, "GET", fullURL, nil) } -// PatchManagerThreatInvestigationsThreatInvestigationId - Patch Threat Investigation -// PATCH /manager/threat-investigations/{threatInvestigationId} -func (c *Client) PatchManagerThreatInvestigationsThreatInvestigationId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/manager/threat-investigations/{threatInvestigationId}" - path = strings.Replace(path, "{threatInvestigationId}", params.Get("threatInvestigationId"), 1) +// CreateManagerThreatInvestigations - Post Threat Investigation +// POST /manager/threat-investigations +func (c *Client) CreateManagerThreatInvestigations(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/manager/threat-investigations" query := url.Values{} for k, v := range c.DefaultParams { @@ -2338,7 +2580,7 @@ func (c *Client) PatchManagerThreatInvestigationsThreatInvestigationId(ctx conte fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "POST", fullURL, body) } // GetManagerThreatInvestigationsThreatInvestigationId - Get Threat Investigation @@ -2387,7 +2629,53 @@ func (c *Client) GetManagerThreatInvestigationsThreatInvestigationId(ctx context return c.do(ctx, "GET", fullURL, nil) } -// CreateManagerTrigger - Trigger Orchestrator +// PatchManagerThreatInvestigationsThreatInvestigationId - Patch Threat Investigation +// PATCH /manager/threat-investigations/{threatInvestigationId} +func (c *Client) PatchManagerThreatInvestigationsThreatInvestigationId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/manager/threat-investigations/{threatInvestigationId}" + path = strings.Replace(path, "{threatInvestigationId}", params.Get("threatInvestigationId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "PATCH", fullURL, body) +} + +// CreateManagerTrigger - Start a Manager run // POST /manager/trigger func (c *Client) CreateManagerTrigger(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/manager/trigger" diff --git a/internal/api/orchestrator.go b/internal/api/orchestrator.go new file mode 100644 index 0000000..2a38234 --- /dev/null +++ b/internal/api/orchestrator.go @@ -0,0 +1,421 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package api + +import ( + "context" + "fmt" + "io" + "net/url" + "strings" +) + +// CreateOrchestratorAutofixBatch - Start Batch Autofix +// POST /orchestrator/autofix/batch +func (c *Client) CreateOrchestratorAutofixBatch(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/orchestrator/autofix/batch" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// GetOrchestratorAutofixBatchExecutionId - Get Batch Autofix Status +// GET /orchestrator/autofix/batch/{executionId} +func (c *Client) GetOrchestratorAutofixBatchExecutionId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/orchestrator/autofix/batch/{executionId}" + path = strings.Replace(path, "{executionId}", params.Get("executionId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListOrchestratorCodereviews - Get Code Reviews +// GET /orchestrator/codereviews +func (c *Client) ListOrchestratorCodereviews(ctx context.Context, params url.Values) ([]byte, error) { + path := "/orchestrator/codereviews" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// GetOrchestratorCodereviewsId - Get Code Review +// GET /orchestrator/codereviews/{id} +func (c *Client) GetOrchestratorCodereviewsId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/orchestrator/codereviews/{id}" + path = strings.Replace(path, "{id}", params.Get("id"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateOrchestratorFindingsRetriage - Retriage Findings +// POST /orchestrator/findings/retriage +func (c *Client) CreateOrchestratorFindingsRetriage(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/orchestrator/findings/retriage" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListOrchestratorFindingsFindingIDAutofixIterations - Get Finding Autofix Iterations +// GET /orchestrator/findings/{findingID}/autofix-iterations +func (c *Client) ListOrchestratorFindingsFindingIDAutofixIterations(ctx context.Context, params url.Values) ([]byte, error) { + path := "/orchestrator/findings/{findingID}/autofix-iterations" + path = strings.Replace(path, "{findingID}", params.Get("findingID"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("findingType"); v != "" { + query.Set("findingType", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateOrchestratorOnboardingComplete - Complete Onboarding (Test Only) +// POST /orchestrator/onboarding/complete +func (c *Client) CreateOrchestratorOnboardingComplete(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/orchestrator/onboarding/complete" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// CreateOrchestratorOnboardingStart - Start Onboarding +// POST /orchestrator/onboarding/start +func (c *Client) CreateOrchestratorOnboardingStart(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/orchestrator/onboarding/start" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListOrchestratorOnboardingStatus - Get Onboarding Status +// GET /orchestrator/onboarding/status +func (c *Client) ListOrchestratorOnboardingStatus(ctx context.Context, params url.Values) ([]byte, error) { + path := "/orchestrator/onboarding/status" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} diff --git a/internal/api/sast.go b/internal/api/sast.go index 885c1fc..0de308c 100644 --- a/internal/api/sast.go +++ b/internal/api/sast.go @@ -33,6 +33,9 @@ func (c *Client) ListSastEvents(ctx context.Context, params url.Values) ([]byte, if v := params.Get("fileOwnerName"); v != "" { query.Set("fileOwnerName", v) } + if v := params.Get("findingId"); v != "" { + query.Set("findingId", v) + } if v := params.Get("sort"); v != "" { query.Set("sort", v) } @@ -123,6 +126,15 @@ func (c *Client) ListSastFindings(ctx context.Context, params url.Values) ([]byt if v := params.Get("isArchived"); v != "" { query.Set("isArchived", v) } + if v := params.Get("aiGenerated"); v != "" { + query.Set("aiGenerated", v) + } + if v := params.Get("isLatest"); v != "" { + query.Set("isLatest", v) + } + if v := params.Get("autoFixState"); v != "" { + query.Set("autoFixState", v) + } if v := params.Get("sortBy"); v != "" { query.Set("sortBy", v) } @@ -210,51 +222,6 @@ func (c *Client) CreateSastFindingsAllowlist(ctx context.Context, params url.Val return c.do(ctx, "POST", fullURL, body) } -// CreateSastFindingsAutofixCache - Post Cache AutoFix -// POST /sast/findings/autofix/cache -func (c *Client) CreateSastFindingsAutofixCache(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sast/findings/autofix/cache" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "POST", fullURL, body) -} - // ListSastFindingsDetailed - Get Findings Detailed // GET /sast/findings/detailed func (c *Client) ListSastFindingsDetailed(ctx context.Context, params url.Values) ([]byte, error) { @@ -306,6 +273,9 @@ func (c *Client) ListSastFindingsDetailed(ctx context.Context, params url.Values if v := params.Get("isArchived"); v != "" { query.Set("isArchived", v) } + if v := params.Get("aiGenerated"); v != "" { + query.Set("aiGenerated", v) + } if v := params.Get("sortBy"); v != "" { query.Set("sortBy", v) } @@ -348,51 +318,6 @@ func (c *Client) ListSastFindingsDetailed(ctx context.Context, params url.Values return c.do(ctx, "GET", fullURL, nil) } -// CreateSastFindingsFix - Post Finding Fix -// POST /sast/findings/fix -func (c *Client) CreateSastFindingsFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sast/findings/fix" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "POST", fullURL, body) -} - // ListSastFindingsPreview - Get SAST Findings // GET /sast/findings/preview func (c *Client) ListSastFindingsPreview(ctx context.Context, params url.Values) ([]byte, error) { @@ -444,6 +369,15 @@ func (c *Client) ListSastFindingsPreview(ctx context.Context, params url.Values) if v := params.Get("isArchived"); v != "" { query.Set("isArchived", v) } + if v := params.Get("aiGenerated"); v != "" { + query.Set("aiGenerated", v) + } + if v := params.Get("isLatest"); v != "" { + query.Set("isLatest", v) + } + if v := params.Get("autoFixState"); v != "" { + query.Set("autoFixState", v) + } if v := params.Get("sortBy"); v != "" { query.Set("sortBy", v) } @@ -624,16 +558,22 @@ func (c *Client) CreateSastFindingsFindingIdAllowlist(ctx context.Context, param return c.do(ctx, "POST", fullURL, body) } -// CreateSastFindingsFindingIdAutofixCache - Post Cache AutoFix -// POST /sast/findings/{findingId}/autofix/cache -func (c *Client) CreateSastFindingsFindingIdAutofixCache(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sast/findings/{findingId}/autofix/cache" +// ListSastFindingsFindingIdAutofixActivity - Get SAST Finding Autofix Activity +// GET /sast/findings/{findingId}/autofix/activity +func (c *Client) ListSastFindingsFindingIdAutofixActivity(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sast/findings/{findingId}/autofix/activity" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("since_id"); v != "" { + query.Set("since_id", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -667,13 +607,59 @@ func (c *Client) CreateSastFindingsFindingIdAutofixCache(ctx context.Context, pa fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// CreateSastFindingsFindingIdAutofixCacheCreatePr - Post Finding AutoFix -// POST /sast/findings/{findingId}/autofix/cache/create_pr -func (c *Client) CreateSastFindingsFindingIdAutofixCacheCreatePr(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sast/findings/{findingId}/autofix/cache/create_pr" +// ListSastFindingsFindingIdAutofixCacheDiff - Get Finding Autofix Diff +// GET /sast/findings/{findingId}/autofix/cache/diff +func (c *Client) ListSastFindingsFindingIdAutofixCacheDiff(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sast/findings/{findingId}/autofix/cache/diff" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateSastFindingsFindingIdAutofixFix - Post Finding AutoFix +// POST /sast/findings/{findingId}/autofix/fix +func (c *Client) CreateSastFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/sast/findings/{findingId}/autofix/fix" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} @@ -716,10 +702,10 @@ func (c *Client) CreateSastFindingsFindingIdAutofixCacheCreatePr(ctx context.Con return c.do(ctx, "POST", fullURL, body) } -// ListSastFindingsFindingIdAutofixCacheDiff - Get Finding Autofix Diff -// GET /sast/findings/{findingId}/autofix/cache/diff -func (c *Client) ListSastFindingsFindingIdAutofixCacheDiff(ctx context.Context, params url.Values) ([]byte, error) { - path := "/sast/findings/{findingId}/autofix/cache/diff" +// ListSastFindingsFindingIdAutofixState - Get SAST Finding Autofix State +// GET /sast/findings/{findingId}/autofix/state +func (c *Client) ListSastFindingsFindingIdAutofixState(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sast/findings/{findingId}/autofix/state" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} @@ -762,10 +748,10 @@ func (c *Client) ListSastFindingsFindingIdAutofixCacheDiff(ctx context.Context, return c.do(ctx, "GET", fullURL, nil) } -// CreateSastFindingsFindingIdAutofixFix - Post Finding AutoFix -// POST /sast/findings/{findingId}/autofix/fix -func (c *Client) CreateSastFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sast/findings/{findingId}/autofix/fix" +// ListSastFindingsFindingIdAutofixStatus - Get SAST Finding Autofix Status +// GET /sast/findings/{findingId}/autofix/status +func (c *Client) ListSastFindingsFindingIdAutofixStatus(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sast/findings/{findingId}/autofix/status" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} @@ -805,7 +791,7 @@ func (c *Client) CreateSastFindingsFindingIdAutofixFix(ctx context.Context, para fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } // ListSastFindingsFindingIdEvents - Get Finding Events @@ -1134,3 +1120,60 @@ func (c *Client) GetSastRepositoriesRepositoryId(ctx context.Context, params url return c.do(ctx, "GET", fullURL, nil) } + +// ListSastScanRuns - List Scan Runs +// GET /sast/scan-runs +func (c *Client) ListSastScanRuns(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sast/scan-runs" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("offset"); v != "" { + query.Set("offset", v) + } + if v := params.Get("sort"); v != "" { + query.Set("sort", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} diff --git a/internal/api/sca.go b/internal/api/sca.go index 20da3c2..3323cf5 100644 --- a/internal/api/sca.go +++ b/internal/api/sca.go @@ -48,6 +48,9 @@ func (c *Client) ListScaContainersFindings(ctx context.Context, params url.Value if v := params.Get("isResolved"); v != "" { query.Set("isResolved", v) } + if v := params.Get("autoFixState"); v != "" { + query.Set("autoFixState", v) + } if v := params.Get("sortBy"); v != "" { query.Set("sortBy", v) } @@ -171,51 +174,6 @@ func (c *Client) ListScaContainersFindingsDetailed(ctx context.Context, params u return c.do(ctx, "GET", fullURL, nil) } -// CreateScaContainersFindingsFixIterate - Post SCA Container Finding Fix Iterate -// POST /sca/containers/findings/fixIterate -func (c *Client) CreateScaContainersFindingsFixIterate(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sca/containers/findings/fixIterate" - - query := url.Values{} - for k, v := range c.DefaultParams { - query.Set(k, v) - } - if v := params.Get("azureOrganizationId"); v != "" { - query.Set("azureOrganizationId", v) - } - if v := params.Get("bitbucketWorkspaceId"); v != "" { - query.Set("bitbucketWorkspaceId", v) - } - if v := params.Get("githubOwnerId"); v != "" { - query.Set("githubOwnerId", v) - } - if v := params.Get("gitlabGroupId"); v != "" { - query.Set("gitlabGroupId", v) - } - if v := params.Get("installationId"); v != "" { - query.Set("installationId", v) - } - if v := params.Get("azureRepositoryId"); v != "" { - query.Set("azureRepositoryId", v) - } - if v := params.Get("githubRepositoryId"); v != "" { - query.Set("githubRepositoryId", v) - } - if v := params.Get("githubTeamId"); v != "" { - query.Set("githubTeamId", v) - } - if v := params.Get("bitbucketRepositoryId"); v != "" { - query.Set("bitbucketRepositoryId", v) - } - - fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) - if len(query) > 0 { - fullURL += "?" + query.Encode() - } - - return c.do(ctx, "POST", fullURL, body) -} - // ListScaContainersFindingsPreview - Get SCA Container Findings Preview // GET /sca/containers/findings/preview func (c *Client) ListScaContainersFindingsPreview(ctx context.Context, params url.Values) ([]byte, error) { @@ -255,6 +213,9 @@ func (c *Client) ListScaContainersFindingsPreview(ctx context.Context, params ur if v := params.Get("isResolved"); v != "" { query.Set("isResolved", v) } + if v := params.Get("autoFixState"); v != "" { + query.Set("autoFixState", v) + } if v := params.Get("sortBy"); v != "" { query.Set("sortBy", v) } @@ -435,6 +396,58 @@ func (c *Client) CreateScaContainersFindingsFindingIdAllowlist(ctx context.Conte return c.do(ctx, "POST", fullURL, body) } +// ListScaContainersFindingsFindingIdAutofixActivity - Get SCA Container Finding Autofix Activity +// GET /sca/containers/findings/{findingId}/autofix/activity +func (c *Client) ListScaContainersFindingsFindingIdAutofixActivity(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/containers/findings/{findingId}/autofix/activity" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("since_id"); v != "" { + query.Set("since_id", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + // CreateScaContainersFindingsFindingIdAutofixFix - Fix Container Findings // POST /sca/containers/findings/{findingId}/autofix/fix func (c *Client) CreateScaContainersFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { @@ -481,6 +494,98 @@ func (c *Client) CreateScaContainersFindingsFindingIdAutofixFix(ctx context.Cont return c.do(ctx, "POST", fullURL, body) } +// ListScaContainersFindingsFindingIdAutofixState - Get Container Finding Autofix State +// GET /sca/containers/findings/{findingId}/autofix/state +func (c *Client) ListScaContainersFindingsFindingIdAutofixState(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/containers/findings/{findingId}/autofix/state" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListScaContainersFindingsFindingIdAutofixStatus - Get Container Finding Autofix Status +// GET /sca/containers/findings/{findingId}/autofix/status +func (c *Client) ListScaContainersFindingsFindingIdAutofixStatus(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/containers/findings/{findingId}/autofix/status" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + // ListScaContainersFindingsFindingIdEvents - Get SCA Container Finding Events // GET /sca/containers/findings/{findingId}/events func (c *Client) ListScaContainersFindingsFindingIdEvents(ctx context.Context, params url.Values) ([]byte, error) { @@ -750,6 +855,9 @@ func (c *Client) ListScaDependenciesFindings(ctx context.Context, params url.Val if v := params.Get("isResolved"); v != "" { query.Set("isResolved", v) } + if v := params.Get("autoFixState"); v != "" { + query.Set("autoFixState", v) + } if v := params.Get("sortBy"); v != "" { query.Set("sortBy", v) } @@ -873,15 +981,54 @@ func (c *Client) ListScaDependenciesFindingsDetailed(ctx context.Context, params return c.do(ctx, "GET", fullURL, nil) } -// CreateScaDependenciesFindingsFixIterate - Post Finding Fix Iterate -// POST /sca/dependencies/findings/fixIterate -func (c *Client) CreateScaDependenciesFindingsFixIterate(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sca/dependencies/findings/fixIterate" +// ListScaDependenciesFindingsPreview - Get SCA Dependency Findings Preview +// GET /sca/dependencies/findings/preview +func (c *Client) ListScaDependenciesFindingsPreview(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/dependencies/findings/preview" query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("package"); v != "" { + query.Set("package", v) + } + if v := params.Get("fileOwnerName"); v != "" { + query.Set("fileOwnerName", v) + } + if v := params.Get("branch"); v != "" { + query.Set("branch", v) + } + if v := params.Get("workflow"); v != "" { + query.Set("workflow", v) + } + if v := params.Get("isFalsePositive"); v != "" { + query.Set("isFalsePositive", v) + } + if v := params.Get("isFixed"); v != "" { + query.Set("isFixed", v) + } + if v := params.Get("isAllowlisted"); v != "" { + query.Set("isAllowlisted", v) + } + if v := params.Get("isResolved"); v != "" { + query.Set("isResolved", v) + } + if v := params.Get("autoFixState"); v != "" { + query.Set("autoFixState", v) + } + if v := params.Get("sortBy"); v != "" { + query.Set("sortBy", v) + } + if v := params.Get("sort"); v != "" { + query.Set("sort", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -915,53 +1062,64 @@ func (c *Client) CreateScaDependenciesFindingsFixIterate(ctx context.Context, pa fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// ListScaDependenciesFindingsPreview - Get SCA Dependency Findings Preview -// GET /sca/dependencies/findings/preview -func (c *Client) ListScaDependenciesFindingsPreview(ctx context.Context, params url.Values) ([]byte, error) { - path := "/sca/dependencies/findings/preview" +// GetScaDependenciesFindingsFindingId - Get Finding +// GET /sca/dependencies/findings/{findingId} +func (c *Client) GetScaDependenciesFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } - if v := params.Get("nextToken"); v != "" { - query.Set("nextToken", v) - } - if v := params.Get("limit"); v != "" { - query.Set("limit", v) + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) } - if v := params.Get("package"); v != "" { - query.Set("package", v) + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) } - if v := params.Get("fileOwnerName"); v != "" { - query.Set("fileOwnerName", v) + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) } - if v := params.Get("branch"); v != "" { - query.Set("branch", v) + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) } - if v := params.Get("workflow"); v != "" { - query.Set("workflow", v) + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) } - if v := params.Get("isFalsePositive"); v != "" { - query.Set("isFalsePositive", v) + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) } - if v := params.Get("isFixed"); v != "" { - query.Set("isFixed", v) + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) } - if v := params.Get("isAllowlisted"); v != "" { - query.Set("isAllowlisted", v) + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) } - if v := params.Get("isResolved"); v != "" { - query.Set("isResolved", v) + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) } - if v := params.Get("sortBy"); v != "" { - query.Set("sortBy", v) + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() } - if v := params.Get("sort"); v != "" { - query.Set("sort", v) + + return c.do(ctx, "GET", fullURL, nil) +} + +// PatchScaDependenciesFindingsFindingId - Update Dependencies Finding +// PATCH /sca/dependencies/findings/{findingId} +func (c *Client) PatchScaDependenciesFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) @@ -996,14 +1154,14 @@ func (c *Client) ListScaDependenciesFindingsPreview(ctx context.Context, params fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } -// CreateScaDependenciesFindingsFindingIDAutofixCacheCreatePr - Create Pull Request for Dependency Finding -// POST /sca/dependencies/findings/{findingID}/autofix/cache/create_pr -func (c *Client) CreateScaDependenciesFindingsFindingIDAutofixCacheCreatePr(ctx context.Context, params url.Values) ([]byte, error) { - path := "/sca/dependencies/findings/{findingID}/autofix/cache/create_pr" - path = strings.Replace(path, "{findingID}", params.Get("findingID"), 1) +// CreateScaDependenciesFindingsFindingIdAllowlist - Allowlist Dependency Finding +// POST /sca/dependencies/findings/{findingId}/allowlist +func (c *Client) CreateScaDependenciesFindingsFindingIdAllowlist(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}/allowlist" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} for k, v := range c.DefaultParams { @@ -1042,19 +1200,25 @@ func (c *Client) CreateScaDependenciesFindingsFindingIDAutofixCacheCreatePr(ctx fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, nil) + return c.do(ctx, "POST", fullURL, body) } -// GetScaDependenciesFindingsFindingId - Get Finding -// GET /sca/dependencies/findings/{findingId} -func (c *Client) GetScaDependenciesFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { - path := "/sca/dependencies/findings/{findingId}" +// ListScaDependenciesFindingsFindingIdAutofixActivity - Get SCA Dependency Finding Autofix Activity +// GET /sca/dependencies/findings/{findingId}/autofix/activity +func (c *Client) ListScaDependenciesFindingsFindingIdAutofixActivity(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}/autofix/activity" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} for k, v := range c.DefaultParams { query.Set(k, v) } + if v := params.Get("since_id"); v != "" { + query.Set("since_id", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } if v := params.Get("azureOrganizationId"); v != "" { query.Set("azureOrganizationId", v) } @@ -1091,10 +1255,10 @@ func (c *Client) GetScaDependenciesFindingsFindingId(ctx context.Context, params return c.do(ctx, "GET", fullURL, nil) } -// PatchScaDependenciesFindingsFindingId - Update Dependencies Finding -// PATCH /sca/dependencies/findings/{findingId} -func (c *Client) PatchScaDependenciesFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sca/dependencies/findings/{findingId}" +// ListScaDependenciesFindingsFindingIdAutofixCacheDiff - Get SCA Dependency Finding Fix +// GET /sca/dependencies/findings/{findingId}/autofix/cache/diff +func (c *Client) ListScaDependenciesFindingsFindingIdAutofixCacheDiff(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}/autofix/cache/diff" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} @@ -1134,13 +1298,13 @@ func (c *Client) PatchScaDependenciesFindingsFindingId(ctx context.Context, para fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// CreateScaDependenciesFindingsFindingIdAllowlist - Allowlist Dependency Finding -// POST /sca/dependencies/findings/{findingId}/allowlist -func (c *Client) CreateScaDependenciesFindingsFindingIdAllowlist(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sca/dependencies/findings/{findingId}/allowlist" +// CreateScaDependenciesFindingsFindingIdAutofixFix - Fix Dependency Finding +// POST /sca/dependencies/findings/{findingId}/autofix/fix +func (c *Client) CreateScaDependenciesFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}/autofix/fix" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} @@ -1183,10 +1347,10 @@ func (c *Client) CreateScaDependenciesFindingsFindingIdAllowlist(ctx context.Con return c.do(ctx, "POST", fullURL, body) } -// ListScaDependenciesFindingsFindingIdAutofixCacheDiff - Get SCA Dependency Finding Fix -// GET /sca/dependencies/findings/{findingId}/autofix/cache/diff -func (c *Client) ListScaDependenciesFindingsFindingIdAutofixCacheDiff(ctx context.Context, params url.Values) ([]byte, error) { - path := "/sca/dependencies/findings/{findingId}/autofix/cache/diff" +// ListScaDependenciesFindingsFindingIdAutofixState - Get Dependency Finding Autofix State +// GET /sca/dependencies/findings/{findingId}/autofix/state +func (c *Client) ListScaDependenciesFindingsFindingIdAutofixState(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}/autofix/state" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} @@ -1229,10 +1393,10 @@ func (c *Client) ListScaDependenciesFindingsFindingIdAutofixCacheDiff(ctx contex return c.do(ctx, "GET", fullURL, nil) } -// CreateScaDependenciesFindingsFindingIdAutofixFix - Fix Dependency Finding -// POST /sca/dependencies/findings/{findingId}/autofix/fix -func (c *Client) CreateScaDependenciesFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { - path := "/sca/dependencies/findings/{findingId}/autofix/fix" +// ListScaDependenciesFindingsFindingIdAutofixStatus - Get Dependency Finding Autofix Status +// GET /sca/dependencies/findings/{findingId}/autofix/status +func (c *Client) ListScaDependenciesFindingsFindingIdAutofixStatus(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/dependencies/findings/{findingId}/autofix/status" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) query := url.Values{} @@ -1272,7 +1436,7 @@ func (c *Client) CreateScaDependenciesFindingsFindingIdAutofixFix(ctx context.Co fullURL += "?" + query.Encode() } - return c.do(ctx, "POST", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } // ListScaDependenciesFindingsFindingIdEvents - Get SCA Dependency Finding Events @@ -1529,6 +1693,9 @@ func (c *Client) ListScaEvents(ctx context.Context, params url.Values) ([]byte, if v := params.Get("fileOwnerName"); v != "" { query.Set("fileOwnerName", v) } + if v := params.Get("findingId"); v != "" { + query.Set("findingId", v) + } if v := params.Get("sort"); v != "" { query.Set("sort", v) } @@ -1710,3 +1877,63 @@ func (c *Client) ListScaRepositoriesRepositoryIdSbom(ctx context.Context, params return c.do(ctx, "GET", fullURL, nil) } + +// ListScaScanRuns - List Scan Runs +// GET /sca/scan-runs +func (c *Client) ListScaScanRuns(ctx context.Context, params url.Values) ([]byte, error) { + path := "/sca/scan-runs" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("scanType"); v != "" { + query.Set("scanType", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("offset"); v != "" { + query.Set("offset", v) + } + if v := params.Get("sort"); v != "" { + query.Set("sort", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} diff --git a/internal/api/scpm.go b/internal/api/scpm.go new file mode 100644 index 0000000..c49d7db --- /dev/null +++ b/internal/api/scpm.go @@ -0,0 +1,1154 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package api + +import ( + "context" + "fmt" + "io" + "net/url" + "strings" +) + +// CreateScpmContainersAnalyze - Request malware analysis for an OCI container image +// POST /scpm/containers/analyze +func (c *Client) CreateScpmContainersAnalyze(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/containers/analyze" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListScpmDependencies - Get CI/CD Dependencies +// GET /scpm/dependencies +func (c *Client) ListScpmDependencies(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/dependencies" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("name"); v != "" { + query.Set("name", v) + } + if v := params.Get("version"); v != "" { + query.Set("version", v) + } + if v := params.Get("platform"); v != "" { + query.Set("platform", v) + } + if v := params.Get("pinned"); v != "" { + query.Set("pinned", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateScpmDependenciesAnalyze - Request malware analysis for a dependency +// POST /scpm/dependencies/analyze +func (c *Client) CreateScpmDependenciesAnalyze(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/dependencies/analyze" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// CreateScpmDependenciesQueryBatch - Batch query vulnerabilities + malware verdict for dependencies +// POST /scpm/dependencies/query/batch +func (c *Client) CreateScpmDependenciesQueryBatch(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/dependencies/query/batch" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListScpmEvents - Get SCPM Events +// GET /scpm/events +func (c *Client) ListScpmEvents(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/events" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListScpmFindings - Get SCPM Findings +// GET /scpm/findings +func (c *Client) ListScpmFindings(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("priorityLabel"); v != "" { + query.Set("priorityLabel", v) + } + if v := params.Get("severity"); v != "" { + query.Set("severity", v) + } + if v := params.Get("fileOwnerName"); v != "" { + query.Set("fileOwnerName", v) + } + if v := params.Get("hasPullRequest"); v != "" { + query.Set("hasPullRequest", v) + } + if v := params.Get("branch"); v != "" { + query.Set("branch", v) + } + if v := params.Get("workflow"); v != "" { + query.Set("workflow", v) + } + if v := params.Get("repositoryIds"); v != "" { + query.Set("repositoryIds", v) + } + if v := params.Get("isResolved"); v != "" { + query.Set("isResolved", v) + } + if v := params.Get("isFixed"); v != "" { + query.Set("isFixed", v) + } + if v := params.Get("isFalsePositive"); v != "" { + query.Set("isFalsePositive", v) + } + if v := params.Get("isAllowlisted"); v != "" { + query.Set("isAllowlisted", v) + } + if v := params.Get("isArchived"); v != "" { + query.Set("isArchived", v) + } + if v := params.Get("sortBy"); v != "" { + query.Set("sortBy", v) + } + if v := params.Get("sort"); v != "" { + query.Set("sort", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateScpmFindingsAllowlist - Allowlist Batch of SCPM Findings +// POST /scpm/findings/allowlist +func (c *Client) CreateScpmFindingsAllowlist(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/allowlist" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListScpmFindingsDetailed - Get Findings Detailed +// GET /scpm/findings/detailed +func (c *Client) ListScpmFindingsDetailed(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/detailed" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("priorityLabel"); v != "" { + query.Set("priorityLabel", v) + } + if v := params.Get("severity"); v != "" { + query.Set("severity", v) + } + if v := params.Get("fileOwnerName"); v != "" { + query.Set("fileOwnerName", v) + } + if v := params.Get("hasPullRequest"); v != "" { + query.Set("hasPullRequest", v) + } + if v := params.Get("branch"); v != "" { + query.Set("branch", v) + } + if v := params.Get("workflow"); v != "" { + query.Set("workflow", v) + } + if v := params.Get("isResolved"); v != "" { + query.Set("isResolved", v) + } + if v := params.Get("isFixed"); v != "" { + query.Set("isFixed", v) + } + if v := params.Get("isFalsePositive"); v != "" { + query.Set("isFalsePositive", v) + } + if v := params.Get("isAllowlisted"); v != "" { + query.Set("isAllowlisted", v) + } + if v := params.Get("isArchived"); v != "" { + query.Set("isArchived", v) + } + if v := params.Get("sortBy"); v != "" { + query.Set("sortBy", v) + } + if v := params.Get("sort"); v != "" { + query.Set("sort", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListScpmFindingsPreview - Get SCPM Findings +// GET /scpm/findings/preview +func (c *Client) ListScpmFindingsPreview(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/preview" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("nextToken"); v != "" { + query.Set("nextToken", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("priorityLabel"); v != "" { + query.Set("priorityLabel", v) + } + if v := params.Get("severity"); v != "" { + query.Set("severity", v) + } + if v := params.Get("fileOwnerName"); v != "" { + query.Set("fileOwnerName", v) + } + if v := params.Get("hasPullRequest"); v != "" { + query.Set("hasPullRequest", v) + } + if v := params.Get("branch"); v != "" { + query.Set("branch", v) + } + if v := params.Get("workflow"); v != "" { + query.Set("workflow", v) + } + if v := params.Get("repositoryIds"); v != "" { + query.Set("repositoryIds", v) + } + if v := params.Get("isResolved"); v != "" { + query.Set("isResolved", v) + } + if v := params.Get("isFixed"); v != "" { + query.Set("isFixed", v) + } + if v := params.Get("isFalsePositive"); v != "" { + query.Set("isFalsePositive", v) + } + if v := params.Get("isAllowlisted"); v != "" { + query.Set("isAllowlisted", v) + } + if v := params.Get("isArchived"); v != "" { + query.Set("isArchived", v) + } + if v := params.Get("sortBy"); v != "" { + query.Set("sortBy", v) + } + if v := params.Get("sort"); v != "" { + query.Set("sort", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateScpmFindingsRetriage - Retriage Findings +// POST /scpm/findings/retriage +func (c *Client) CreateScpmFindingsRetriage(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/retriage" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// CreateScpmFindingsUpload - Get Presigned URL to Upload SCPM Findings +// POST /scpm/findings/upload +func (c *Client) CreateScpmFindingsUpload(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/upload" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// GetScpmFindingsFindingId - Get Finding +// GET /scpm/findings/{findingId} +func (c *Client) GetScpmFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/{findingId}" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// PatchScpmFindingsFindingId - Update Finding +// PATCH /scpm/findings/{findingId} +func (c *Client) PatchScpmFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/{findingId}" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "PATCH", fullURL, body) +} + +// CreateScpmFindingsFindingIdAllowlist - Allowlist Finding +// POST /scpm/findings/{findingId}/allowlist +func (c *Client) CreateScpmFindingsFindingIdAllowlist(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/{findingId}/allowlist" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListScpmFindingsFindingIdAutofixActivity - Get SCPM Finding Autofix Activity +// GET /scpm/findings/{findingId}/autofix/activity +func (c *Client) ListScpmFindingsFindingIdAutofixActivity(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/{findingId}/autofix/activity" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("since_id"); v != "" { + query.Set("since_id", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateScpmFindingsFindingIdAutofixCache - Cache Autofix +// POST /scpm/findings/{findingId}/autofix/cache +func (c *Client) CreateScpmFindingsFindingIdAutofixCache(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/{findingId}/autofix/cache" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// CreateScpmFindingsFindingIdAutofixCacheCreatePr - Create Pull Request from Cached Fix +// POST /scpm/findings/{findingId}/autofix/cache/create_pr +func (c *Client) CreateScpmFindingsFindingIdAutofixCacheCreatePr(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/{findingId}/autofix/cache/create_pr" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListScpmFindingsFindingIdAutofixCacheDiff - Get SCPM Finding Autofix Diff +// GET /scpm/findings/{findingId}/autofix/cache/diff +func (c *Client) ListScpmFindingsFindingIdAutofixCacheDiff(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/{findingId}/autofix/cache/diff" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateScpmFindingsFindingIdAutofixFix - Autofix Finding +// POST /scpm/findings/{findingId}/autofix/fix +func (c *Client) CreateScpmFindingsFindingIdAutofixFix(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/{findingId}/autofix/fix" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} + +// ListScpmFindingsFindingIdAutofixState - Get SCPM Finding Autofix State +// GET /scpm/findings/{findingId}/autofix/state +func (c *Client) ListScpmFindingsFindingIdAutofixState(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/{findingId}/autofix/state" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListScpmFindingsFindingIdAutofixStatus - Get SCPM Finding Autofix Status +// GET /scpm/findings/{findingId}/autofix/status +func (c *Client) ListScpmFindingsFindingIdAutofixStatus(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/{findingId}/autofix/status" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListScpmFindingsFindingIdEvents - Get Finding Events +// GET /scpm/findings/{findingId}/events +func (c *Client) ListScpmFindingsFindingIdEvents(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/{findingId}/events" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// ListScpmFindingsFindingIdTriage - Get Triaged Finding +// GET /scpm/findings/{findingId}/triage +func (c *Client) ListScpmFindingsFindingIdTriage(ctx context.Context, params url.Values) ([]byte, error) { + path := "/scpm/findings/{findingId}/triage" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + +// CreateScpmFindingsFindingIdUnallowlist - Unallowlist Finding +// POST /scpm/findings/{findingId}/unallowlist +func (c *Client) CreateScpmFindingsFindingIdUnallowlist(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { + path := "/scpm/findings/{findingId}/unallowlist" + path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "POST", fullURL, body) +} diff --git a/internal/api/secrets.go b/internal/api/secrets.go index 36951c6..69d52b9 100644 --- a/internal/api/secrets.go +++ b/internal/api/secrets.go @@ -204,9 +204,9 @@ func (c *Client) ListSecretsCredentialsFindingsDetailed(ctx context.Context, par return c.do(ctx, "GET", fullURL, nil) } -// PatchSecretsCredentialsFindingsFindingId - Update Credential Finding -// PATCH /secrets/credentials/findings/{findingId} -func (c *Client) PatchSecretsCredentialsFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// GetSecretsCredentialsFindingsFindingId - Get Credential Finding +// GET /secrets/credentials/findings/{findingId} +func (c *Client) GetSecretsCredentialsFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { path := "/secrets/credentials/findings/{findingId}" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) @@ -247,12 +247,12 @@ func (c *Client) PatchSecretsCredentialsFindingsFindingId(ctx context.Context, p fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// GetSecretsCredentialsFindingsFindingId - Get Credential Finding -// GET /secrets/credentials/findings/{findingId} -func (c *Client) GetSecretsCredentialsFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { +// PatchSecretsCredentialsFindingsFindingId - Update Credential Finding +// PATCH /secrets/credentials/findings/{findingId} +func (c *Client) PatchSecretsCredentialsFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/secrets/credentials/findings/{findingId}" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) @@ -293,7 +293,7 @@ func (c *Client) GetSecretsCredentialsFindingsFindingId(ctx context.Context, par fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } // CreateSecretsCredentialsFindingsFindingIdAllowlist - Allowlist Credential Finding @@ -602,6 +602,9 @@ func (c *Client) ListSecretsEvents(ctx context.Context, params url.Values) ([]by if v := params.Get("fileOwnerName"); v != "" { query.Set("fileOwnerName", v) } + if v := params.Get("findingId"); v != "" { + query.Set("findingId", v) + } if v := params.Get("sort"); v != "" { query.Set("sort", v) } @@ -911,9 +914,9 @@ func (c *Client) ListSecretsFindingsPreview(ctx context.Context, params url.Valu return c.do(ctx, "GET", fullURL, nil) } -// PatchSecretsFindingsFindingId - Update Credential Finding -// PATCH /secrets/findings/{findingId} -func (c *Client) PatchSecretsFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// GetSecretsFindingsFindingId - Get Credential Finding +// GET /secrets/findings/{findingId} +func (c *Client) GetSecretsFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { path := "/secrets/findings/{findingId}" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) @@ -954,12 +957,12 @@ func (c *Client) PatchSecretsFindingsFindingId(ctx context.Context, params url.V fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// GetSecretsFindingsFindingId - Get Credential Finding -// GET /secrets/findings/{findingId} -func (c *Client) GetSecretsFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { +// PatchSecretsFindingsFindingId - Update Credential Finding +// PATCH /secrets/findings/{findingId} +func (c *Client) PatchSecretsFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/secrets/findings/{findingId}" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) @@ -1000,7 +1003,7 @@ func (c *Client) GetSecretsFindingsFindingId(ctx context.Context, params url.Val fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } // CreateSecretsFindingsFindingIdAllowlist - Allowlist Credential Finding @@ -1279,6 +1282,63 @@ func (c *Client) ListSecretsFindingsFindingIdUsers(ctx context.Context, params u return c.do(ctx, "GET", fullURL, nil) } +// ListSecretsScanRuns - List Scan Runs +// GET /secrets/scan-runs +func (c *Client) ListSecretsScanRuns(ctx context.Context, params url.Values) ([]byte, error) { + path := "/secrets/scan-runs" + + query := url.Values{} + for k, v := range c.DefaultParams { + query.Set(k, v) + } + if v := params.Get("repositoryId"); v != "" { + query.Set("repositoryId", v) + } + if v := params.Get("limit"); v != "" { + query.Set("limit", v) + } + if v := params.Get("offset"); v != "" { + query.Set("offset", v) + } + if v := params.Get("sort"); v != "" { + query.Set("sort", v) + } + if v := params.Get("azureOrganizationId"); v != "" { + query.Set("azureOrganizationId", v) + } + if v := params.Get("bitbucketWorkspaceId"); v != "" { + query.Set("bitbucketWorkspaceId", v) + } + if v := params.Get("githubOwnerId"); v != "" { + query.Set("githubOwnerId", v) + } + if v := params.Get("gitlabGroupId"); v != "" { + query.Set("gitlabGroupId", v) + } + if v := params.Get("installationId"); v != "" { + query.Set("installationId", v) + } + if v := params.Get("azureRepositoryId"); v != "" { + query.Set("azureRepositoryId", v) + } + if v := params.Get("githubRepositoryId"); v != "" { + query.Set("githubRepositoryId", v) + } + if v := params.Get("githubTeamId"); v != "" { + query.Set("githubTeamId", v) + } + if v := params.Get("bitbucketRepositoryId"); v != "" { + query.Set("bitbucketRepositoryId", v) + } + + fullURL := fmt.Sprintf("%s%s", c.BaseURL, path) + if len(query) > 0 { + fullURL += "?" + query.Encode() + } + + return c.do(ctx, "GET", fullURL, nil) +} + // ListSecretsSensitivedataFindings - Get Sensitive Data Findings // GET /secrets/sensitivedata/findings func (c *Client) ListSecretsSensitivedataFindings(ctx context.Context, params url.Values) ([]byte, error) { @@ -1399,9 +1459,9 @@ func (c *Client) CreateSecretsSensitivedataFindingsAllowlistBatch(ctx context.Co return c.do(ctx, "POST", fullURL, body) } -// PatchSecretsSensitivedataFindingsFindingId - Update Sensitive Data Finding -// PATCH /secrets/sensitivedata/findings/{findingId} -func (c *Client) PatchSecretsSensitivedataFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { +// GetSecretsSensitivedataFindingsFindingId - Get Sensitive Data Finding +// GET /secrets/sensitivedata/findings/{findingId} +func (c *Client) GetSecretsSensitivedataFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { path := "/secrets/sensitivedata/findings/{findingId}" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) @@ -1442,12 +1502,12 @@ func (c *Client) PatchSecretsSensitivedataFindingsFindingId(ctx context.Context, fullURL += "?" + query.Encode() } - return c.do(ctx, "PATCH", fullURL, body) + return c.do(ctx, "GET", fullURL, nil) } -// GetSecretsSensitivedataFindingsFindingId - Get Sensitive Data Finding -// GET /secrets/sensitivedata/findings/{findingId} -func (c *Client) GetSecretsSensitivedataFindingsFindingId(ctx context.Context, params url.Values) ([]byte, error) { +// PatchSecretsSensitivedataFindingsFindingId - Update Sensitive Data Finding +// PATCH /secrets/sensitivedata/findings/{findingId} +func (c *Client) PatchSecretsSensitivedataFindingsFindingId(ctx context.Context, params url.Values, body io.Reader) ([]byte, error) { path := "/secrets/sensitivedata/findings/{findingId}" path = strings.Replace(path, "{findingId}", params.Get("findingId"), 1) @@ -1488,7 +1548,7 @@ func (c *Client) GetSecretsSensitivedataFindingsFindingId(ctx context.Context, p fullURL += "?" + query.Encode() } - return c.do(ctx, "GET", fullURL, nil) + return c.do(ctx, "PATCH", fullURL, body) } // CreateSecretsSensitivedataFindingsFindingIdAllowlist - Allowlist Sensitive Data Finding diff --git a/internal/commands/admin.go b/internal/commands/admin.go index ba245c8..8faaf6c 100644 --- a/internal/commands/admin.go +++ b/internal/commands/admin.go @@ -68,7 +68,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-assessments-scan-coverage-findings", Short: "Get Scan Coverage Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -181,8 +181,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "update-fix-effort", - Short: "Put Fix Effort Mapping", + Use: "create-events", + Short: "List Unified Events", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -204,7 +204,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.UpdateAdminFixEffort(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminEvents(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -225,8 +225,9 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-fix-effort", - Short: "Get Fix Effort Mapping", + Use: "get-finding ", + Short: "Get Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -248,7 +249,10 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminFixEffort(cmd.Context(), params) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.GetAdminFindingFindingId(cmd.Context(), params) if err != nil { return err } @@ -269,8 +273,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-getFileContents", - Short: "Get File Contents", + Use: "create-findings", + Short: "Query Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -284,11 +288,6 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", - "repository-id": "repositoryId", - "file-path": "filePath", - "project-id": "projectId", - "start-line": "startLine", - "end-line": "endLine", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -297,7 +296,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminGetFileContents(cmd.Context(), params) + result, err := client.CreateAdminFindings(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -313,19 +312,13 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") - cmd.Flags().String("repository-id", "", "") - cmd.Flags().String("reference", "", "") - cmd.Flags().String("file-path", "", "") - cmd.Flags().String("project-id", "", "") - cmd.Flags().String("start-line", "", "") - cmd.Flags().String("end-line", "", "") serviceCmd.AddCommand(cmd) } { cmd := &cobra.Command{ - Use: "create-getFileOwners", - Short: "Get File Owners", + Use: "create-download", + Short: "Download Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -347,7 +340,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminGetFileOwners(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminFindingsDownload(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -368,14 +361,12 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-getPullRequest", - Short: "Get PR State", + Use: "list-fix-effort", + Short: "Get Fix Effort Mapping", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "repository-id": "repositoryId", - "pr-id": "prId", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -393,15 +384,13 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminGetPullRequest(cmd.Context(), params) + result, err := client.ListAdminFixEffort(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("repository-id", "", "") - cmd.Flags().String("pr-id", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -416,8 +405,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-installations", - Short: "Get App Installations", + Use: "update-fix-effort", + Short: "Put Fix Effort Mapping", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -439,7 +428,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminInstallations(cmd.Context(), params) + result, err := client.UpdateAdminFixEffort(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -460,8 +449,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-azure", - Short: "Get Azure Configuration", + Use: "list-getFileContents", + Short: "Get File Contents", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -475,6 +464,11 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", + "repository-id": "repositoryId", + "file-path": "filePath", + "project-id": "projectId", + "start-line": "startLine", + "end-line": "endLine", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -483,7 +477,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsAzure(cmd.Context(), params) + result, err := client.ListAdminGetFileContents(cmd.Context(), params) if err != nil { return err } @@ -499,13 +493,19 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + cmd.Flags().String("repository-id", "", "") + cmd.Flags().String("reference", "", "") + cmd.Flags().String("file-path", "", "") + cmd.Flags().String("project-id", "", "") + cmd.Flags().String("start-line", "", "") + cmd.Flags().String("end-line", "", "") serviceCmd.AddCommand(cmd) } { cmd := &cobra.Command{ - Use: "create-azure", - Short: "Install Azure DevOps Integration", + Use: "create-getFileOwners", + Short: "Get File Owners", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -527,7 +527,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsAzure(cmd.Context(), params) + result, err := client.CreateAdminGetFileOwners(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -548,12 +548,14 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-credentials", - Short: "Set Azure Credentials", + Use: "list-getPullRequest", + Short: "Get PR State", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "repository-id": "repositoryId", + "pr-id": "prId", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -571,13 +573,15 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsAzureCredentials(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminGetPullRequest(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("repository-id", "", "") + cmd.Flags().String("pr-id", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -592,8 +596,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-settings", - Short: "Upsert Cloud AWS Settings", + Use: "list-installations", + Short: "Get App Installations", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -615,7 +619,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsCloudAwsSettings(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminInstallations(cmd.Context(), params) if err != nil { return err } @@ -636,8 +640,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-settings", - Short: "Get Cloud AWS Settings", + Use: "list-azure", + Short: "Get Azure Configuration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -659,7 +663,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsCloudAwsSettings(cmd.Context(), params) + result, err := client.ListAdminIntegrationsAzure(cmd.Context(), params) if err != nil { return err } @@ -680,8 +684,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "delete-settings", - Short: "Delete Cloud AWS Settings", + Use: "create-azure", + Short: "Install Azure DevOps Integration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -703,7 +707,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.DeleteAdminIntegrationsCloudAwsSettings(cmd.Context(), params) + result, err := client.CreateAdminIntegrationsAzure(cmd.Context(), params) if err != nil { return err } @@ -724,8 +728,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-validate-role", - Short: "Validate AWS Role", + Use: "create-credentials", + Short: "Set Azure Credentials", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -747,7 +751,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsCloudAwsValidateRole(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsAzureCredentials(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -768,8 +772,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "delete-settings", - Short: "Delete Cloud Azure Settings", + Use: "delete-buildkite", + Short: "Delete Buildkite Integration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -791,7 +795,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.DeleteAdminIntegrationsCloudAzureSettings(cmd.Context(), params) + result, err := client.DeleteAdminIntegrationsBuildkite(cmd.Context(), params) if err != nil { return err } @@ -812,8 +816,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-settings", - Short: "Get Cloud Azure Settings", + Use: "list-buildkite", + Short: "Get Buildkite Integration Status", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -835,7 +839,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsCloudAzureSettings(cmd.Context(), params) + result, err := client.ListAdminIntegrationsBuildkite(cmd.Context(), params) if err != nil { return err } @@ -856,8 +860,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-settings", - Short: "Upsert Cloud Azure Settings", + Use: "create-integrations-buildkite-token", + Short: "Set Buildkite API Token", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -879,7 +883,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsCloudAzureSettings(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsBuildkiteToken(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -900,8 +904,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "delete-settings", - Short: "Delete Cloud GCP Settings", + Use: "delete-circleci", + Short: "Delete CircleCI Integration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -923,7 +927,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.DeleteAdminIntegrationsCloudGcpSettings(cmd.Context(), params) + result, err := client.DeleteAdminIntegrationsCircleci(cmd.Context(), params) if err != nil { return err } @@ -944,8 +948,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-settings", - Short: "Get Cloud GCP Settings", + Use: "list-circleci", + Short: "Get CircleCI Integration Status", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -967,7 +971,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsCloudGcpSettings(cmd.Context(), params) + result, err := client.ListAdminIntegrationsCircleci(cmd.Context(), params) if err != nil { return err } @@ -988,8 +992,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-settings", - Short: "Upsert Cloud GCP Settings", + Use: "create-integrations-circleci-token", + Short: "Set CircleCI API Token", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1011,7 +1015,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsCloudGcpSettings(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsCircleciToken(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1032,8 +1036,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-validate", - Short: "Validate GCP Credentials", + Use: "delete-integrations-cloud-aws-settings", + Short: "Delete Cloud AWS Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1055,7 +1059,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsCloudGcpValidate(cmd.Context(), params, os.Stdin) + result, err := client.DeleteAdminIntegrationsCloudAwsSettings(cmd.Context(), params) if err != nil { return err } @@ -1076,8 +1080,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-whitelist", - Short: "Whitelist K8s Connector Accounts", + Use: "list-integrations-cloud-aws-settings", + Short: "Get Cloud AWS Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1099,7 +1103,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsCloudK8sWhitelist(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminIntegrationsCloudAwsSettings(cmd.Context(), params) if err != nil { return err } @@ -1120,8 +1124,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-app-settings", - Short: "Get GitHub App Settings", + Use: "create-integrations-cloud-aws-settings", + Short: "Upsert Cloud AWS Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1143,7 +1147,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsGithubAppSettings(cmd.Context(), params) + result, err := client.CreateAdminIntegrationsCloudAwsSettings(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1164,8 +1168,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-jira", - Short: "Update Jira Configuration", + Use: "create-validate-role", + Short: "Validate AWS Role", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1187,7 +1191,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsJira(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsCloudAwsValidateRole(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1208,8 +1212,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-jira", - Short: "Get Jira Configuration", + Use: "delete-integrations-cloud-azure-settings", + Short: "Delete Cloud Azure Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1231,7 +1235,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsJira(cmd.Context(), params) + result, err := client.DeleteAdminIntegrationsCloudAzureSettings(cmd.Context(), params) if err != nil { return err } @@ -1252,8 +1256,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-install", - Short: "Start Linear OAuth install", + Use: "list-integrations-cloud-azure-settings", + Short: "Get Cloud Azure Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1275,7 +1279,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsLinearInstall(cmd.Context(), params) + result, err := client.ListAdminIntegrationsCloudAzureSettings(cmd.Context(), params) if err != nil { return err } @@ -1296,8 +1300,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-oauth", - Short: "Get Linear OAuth install status", + Use: "create-integrations-cloud-azure-settings", + Short: "Upsert Cloud Azure Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1319,7 +1323,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsLinearOauth(cmd.Context(), params) + result, err := client.CreateAdminIntegrationsCloudAzureSettings(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1340,8 +1344,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-notifications", - Short: "Get Notification Config", + Use: "delete-integrations-cloud-gcp-settings", + Short: "Delete Cloud GCP Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1363,7 +1367,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsNotifications(cmd.Context(), params) + result, err := client.DeleteAdminIntegrationsCloudGcpSettings(cmd.Context(), params) if err != nil { return err } @@ -1384,8 +1388,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "update-notifications", - Short: "Put Notification Config", + Use: "list-integrations-cloud-gcp-settings", + Short: "Get Cloud GCP Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1407,7 +1411,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.UpdateAdminIntegrationsNotifications(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminIntegrationsCloudGcpSettings(cmd.Context(), params) if err != nil { return err } @@ -1428,8 +1432,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-slack", - Short: "Get Slack Configuration", + Use: "create-integrations-cloud-gcp-settings", + Short: "Upsert Cloud GCP Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1451,7 +1455,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsSlack(cmd.Context(), params) + result, err := client.CreateAdminIntegrationsCloudGcpSettings(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1472,8 +1476,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-install", - Short: "Start Slack distributed install", + Use: "create-validate", + Short: "Validate GCP Credentials", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1495,7 +1499,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsSlackInstall(cmd.Context(), params) + result, err := client.CreateAdminIntegrationsCloudGcpValidate(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1516,8 +1520,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-key", - Short: "Set Slack API Key", + Use: "create-whitelist", + Short: "Whitelist K8s Connector Accounts", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1539,7 +1543,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminIntegrationsSlackKey(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsCloudK8sWhitelist(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1560,8 +1564,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-teams", - Short: "Get Integration Teams", + Use: "list-app-settings", + Short: "Get GitHub App Settings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1583,14 +1587,13 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsTeams(cmd.Context(), params) + result, err := client.ListAdminIntegrationsGithubAppSettings(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("provider", "", "The integration provider to query teams from") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1605,8 +1608,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-users", - Short: "Get Integration Users", + Use: "delete-jenkins", + Short: "Delete Jenkins Integration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1628,14 +1631,13 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminIntegrationsUsers(cmd.Context(), params) + result, err := client.DeleteAdminIntegrationsJenkins(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("provider", "", "The integration provider to query users from") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1650,9 +1652,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "get-finding ", - Short: "Get Finding", - Args: cobra.MaximumNArgs(1), + Use: "list-jenkins", + Short: "Get Jenkins Integration Status", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1674,10 +1675,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - if len(args) > 0 { - params.Set("findingId", args[0]) - } - result, err := client.GetAdminMetricsFindingFindingId(cmd.Context(), params) + result, err := client.ListAdminIntegrationsJenkins(cmd.Context(), params) if err != nil { return err } @@ -1698,8 +1696,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-findings", - Short: "Query Findings", + Use: "create-integrations-jenkins-token", + Short: "Set Jenkins API Token", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1721,7 +1719,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminMetricsFindings(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsJenkinsToken(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1742,8 +1740,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-analysis", - Short: "Post Findings Metrics", + Use: "list-jira", + Short: "Get Jira Configuration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1765,7 +1763,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminMetricsFindingsAnalysis(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminIntegrationsJira(cmd.Context(), params) if err != nil { return err } @@ -1786,8 +1784,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-download", - Short: "Download Findings", + Use: "create-jira", + Short: "Update Jira Configuration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1809,7 +1807,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminMetricsFindingsDownload(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsJira(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1830,8 +1828,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-interactions", - Short: "Get Interactions", + Use: "list-integrations-linear-install", + Short: "Start Linear OAuth install", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1853,7 +1851,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminMetricsInteractions(cmd.Context(), params) + result, err := client.ListAdminIntegrationsLinearInstall(cmd.Context(), params) if err != nil { return err } @@ -1874,8 +1872,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-over-time", - Short: "Get Metrics Over Time", + Use: "list-oauth", + Short: "Get Linear OAuth install status", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1897,14 +1895,13 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminMetricsOverTime(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminIntegrationsLinearOauth(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("resolution", "", "Time granularity for metrics aggregation (hour, day, week)") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1919,8 +1916,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-overview", - Short: "Query Overview", + Use: "list-notifications", + Short: "Get Notification Config", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1942,7 +1939,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminMetricsOverview(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminIntegrationsNotifications(cmd.Context(), params) if err != nil { return err } @@ -1963,8 +1960,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-raw", - Short: "Query Raw Metrics", + Use: "update-notifications", + Short: "Put Notification Config", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1986,7 +1983,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminMetricsRaw(cmd.Context(), params, os.Stdin) + result, err := client.UpdateAdminIntegrationsNotifications(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2007,8 +2004,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-organization", - Short: "Get Organization", + Use: "list-slack", + Short: "Get Slack Configuration", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2030,7 +2027,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminOrganization(cmd.Context(), params) + result, err := client.ListAdminIntegrationsSlack(cmd.Context(), params) if err != nil { return err } @@ -2051,13 +2048,12 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-acknowledgment", - Short: "Get Privacy Acknowledgment", + Use: "list-integrations-slack-install", + Short: "Start Slack distributed install", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "policy-version": "policyVersion", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -2075,14 +2071,13 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminPrivacyAcknowledgment(cmd.Context(), params) + result, err := client.ListAdminIntegrationsSlackInstall(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("policy-version", "", "The version of the privacy policy to check") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -2097,8 +2092,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-acknowledgment", - Short: "Post Privacy Acknowledgment", + Use: "create-key", + Short: "Set Slack API Key", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2120,7 +2115,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminPrivacyAcknowledgment(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminIntegrationsSlackKey(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2141,13 +2136,12 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-repositories", - Short: "Get Repositories", + Use: "list-integrations-teams", + Short: "Get Integration Teams", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "next-token": "nextToken", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -2165,16 +2159,620 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminRepositories(cmd.Context(), params) + result, err := client.ListAdminIntegrationsTeams(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("next-token", "", "Pagination token for the next page of results") - cmd.Flags().String("limit", "", "Maximum number of repositories to return per page") - cmd.Flags().String("search", "", "Case-insensitive search filter for repository names") + cmd.Flags().String("provider", "", "The integration provider to query teams from") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-integrations-users", + Short: "Get Integration Users", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminIntegrationsUsers(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("provider", "", "The integration provider to query users from") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-metrics-findings", + Short: "Post Findings Metrics", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminMetricsFindings(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-interactions", + Short: "Get Interactions", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminMetricsInteractions(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-over-time", + Short: "Get Metrics Over Time", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminMetricsOverTime(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("resolution", "", "Time granularity for metrics aggregation (hour, day, week)") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-overview", + Short: "Query Overview", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminMetricsOverview(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-raw", + Short: "Query Raw Metrics", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminMetricsRaw(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-aggregate", + Short: "Usage Aggregate", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "branch-type": "branchType", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminMetricsUsageAggregate(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("window", "", "") + cmd.Flags().String("class", "", "") + cmd.Flags().String("agent", "", "") + cmd.Flags().String("branch-type", "", "") + cmd.Flags().String("from", "", "") + cmd.Flags().String("to", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-ledger", + Short: "Usage Ledger", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "branch-type": "branchType", + "run-id": "runId", + "finding-id": "findingId", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminMetricsUsageLedger(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("class", "", "") + cmd.Flags().String("agent", "", "") + cmd.Flags().String("branch-type", "", "") + cmd.Flags().String("run-id", "", "") + cmd.Flags().String("finding-id", "", "") + cmd.Flags().String("from", "", "") + cmd.Flags().String("to", "", "") + cmd.Flags().String("cursor", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-timeseries", + Short: "Usage Timeseries", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminMetricsUsageTimeseries(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("granularity", "", "") + cmd.Flags().String("from", "", "") + cmd.Flags().String("to", "", "") + cmd.Flags().String("class", "", "") + cmd.Flags().String("agent", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-organization", + Short: "Get Organization", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminOrganization(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-acknowledgment", + Short: "Get Privacy Acknowledgment", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "policy-version": "policyVersion", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminPrivacyAcknowledgment(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("policy-version", "", "The version of the privacy policy to check") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-acknowledgment", + Short: "Post Privacy Acknowledgment", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminPrivacyAcknowledgment(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-repositories", + Short: "Get Repositories", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "next-token": "nextToken", + "team-i-ds": "teamIDs", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminRepositories(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("next-token", "", "Pagination token for the next page of results") + cmd.Flags().String("limit", "", "Maximum number of repositories to return per page") + cmd.Flags().String("search", "", "Case-insensitive search filter for repository names") + cmd.Flags().String("team-i-ds", "", "Filter repositories by team ULID") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -2212,7 +2810,319 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminRepositoriesInitialize(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminRepositoriesInitialize(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-uninitialize", + Short: "Uninitialize Repositories", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminRepositoriesUninitialize(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "delete-repository-property-team-keys", + Short: "Delete Repository Property Team Key", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "key-id": "keyId", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.DeleteAdminRepositoryPropertyTeamKeys(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("key-id", "", "The repository property team key ID") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-repository-property-team-keys", + Short: "List Repository Property Team Keys", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminRepositoryPropertyTeamKeys(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-repository-property-team-keys", + Short: "Create Repository Property Team Key", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminRepositoryPropertyTeamKeys(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "delete-service_accounts", + Short: "Delete Service Account", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "service-account-id": "serviceAccountId", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.DeleteAdminServiceAccounts(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("service-account-id", "", "The service account ID") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-service_accounts", + Short: "Get Service Accounts", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAdminServiceAccounts(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-service_accounts", + Short: "Create Service Account", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminServiceAccounts(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2233,8 +3143,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-uninitialize", - Short: "Uninitialize Repositories", + Use: "list-sla", + Short: "Get SLAs", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2256,7 +3166,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminRepositoriesUninitialize(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminSla(cmd.Context(), params) if err != nil { return err } @@ -2277,8 +3187,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-service_accounts", - Short: "Create Service Account", + Use: "create-sla", + Short: "Post SLA", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2300,7 +3210,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminServiceAccounts(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminSla(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2321,8 +3231,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-service_accounts", - Short: "Get Service Accounts", + Use: "update-bulk", + Short: "Put Bulk SLA", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2344,7 +3254,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminServiceAccounts(cmd.Context(), params) + result, err := client.UpdateAdminSlaBulk(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2365,13 +3275,13 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "delete-service_accounts", - Short: "Delete Service Account", + Use: "patch-sla ", + Short: "Patch SLA", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "service-account-id": "serviceAccountId", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -2389,14 +3299,16 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.DeleteAdminServiceAccounts(cmd.Context(), params) + if len(args) > 0 { + params.Set("slaId", args[0]) + } + result, err := client.PatchAdminSlaSlaId(cmd.Context(), params, os.Stdin) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("service-account-id", "", "The service account ID") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -2411,8 +3323,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-sla", - Short: "Get SLAs", + Use: "list-team-source-preferences", + Short: "Get Team Source Preferences", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2434,7 +3346,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminSla(cmd.Context(), params) + result, err := client.ListAdminTeamSourcePreferences(cmd.Context(), params) if err != nil { return err } @@ -2455,8 +3367,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-sla", - Short: "Post SLA", + Use: "update-team-source-preferences", + Short: "Update Team Source Preferences", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2478,7 +3390,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminSla(cmd.Context(), params, os.Stdin) + result, err := client.UpdateAdminTeamSourcePreferences(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2499,8 +3411,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "update-bulk", - Short: "Put Bulk SLA", + Use: "list-team-sync-runs", + Short: "List Team Sync Runs", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2522,13 +3434,15 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.UpdateAdminSlaBulk(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminTeamSyncRuns(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("source", "", "") + cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -2543,9 +3457,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "patch-sla ", - Short: "Patch SLA", - Args: cobra.MaximumNArgs(1), + Use: "create-team-sync-runs", + Short: "Trigger Team Sync", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2567,10 +3480,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - if len(args) > 0 { - params.Set("slaId", args[0]) - } - result, err := client.PatchAdminSlaSlaId(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminTeamSyncRuns(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2593,7 +3503,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "get-team ", Short: "Get Team", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2639,8 +3549,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-teams", - Short: "Post Team", + Use: "list-teams", + Short: "Get All Teams", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2654,6 +3564,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", + "next-token": "nextToken", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -2662,7 +3573,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminTeams(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminTeams(cmd.Context(), params) if err != nil { return err } @@ -2678,13 +3589,16 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + cmd.Flags().String("next-token", "", "Pagination token for the next page of results") + cmd.Flags().String("limit", "", "Maximum number of teams to return per page") + cmd.Flags().String("search", "", "Case-insensitive search filter for team names") serviceCmd.AddCommand(cmd) } { cmd := &cobra.Command{ - Use: "list-teams", - Short: "Get All Teams", + Use: "create-teams", + Short: "Post Team", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2698,7 +3612,6 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", - "next-token": "nextToken", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -2707,7 +3620,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminTeams(cmd.Context(), params) + result, err := client.CreateAdminTeams(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2723,9 +3636,6 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") - cmd.Flags().String("next-token", "", "Pagination token for the next page of results") - cmd.Flags().String("limit", "", "Maximum number of teams to return per page") - cmd.Flags().String("search", "", "Case-insensitive search filter for team names") serviceCmd.AddCommand(cmd) } @@ -2819,7 +3729,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-teams-findings", Short: "Get All Team Findings mapping", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -2861,6 +3771,50 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "create-teams-findings", + Short: "Manual Team Findings Assignment", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminTeamsFindings(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "create-sync", @@ -2886,7 +3840,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminTeamsFindingsSync(cmd.Context(), params) + result, err := client.CreateAdminTeamsFindingsSync(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2949,11 +3903,59 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "delete-teams ", + Short: "Delete Manual Team", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("teamID", args[0]) + } + result, err := client.DeleteAdminTeamsTeamID(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "patch-teams ", Short: "Patch Team", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2999,9 +4001,9 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "get-findings ", - Short: "Get Team Findings mapping", - Args: cobra.MaximumNArgs(1), + Use: "create-events-by-id ", + Short: "List Team Unified Events", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3026,7 +4028,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) if len(args) > 0 { params.Set("teamID", args[0]) } - result, err := client.ListAdminTeamsTeamIDFindings(cmd.Context(), params) + result, err := client.CreateAdminTeamsTeamIDEvents(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -3047,8 +4049,9 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-savedViews", - Short: "Post UI Saved View", + Use: "get-findings ", + Short: "Get Team Findings mapping", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3070,7 +4073,10 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminUiSavedViews(cmd.Context(), params, os.Stdin) + if len(args) > 0 { + params.Set("teamID", args[0]) + } + result, err := client.ListAdminTeamsTeamIDFindings(cmd.Context(), params) if err != nil { return err } @@ -3135,9 +4141,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "patch-savedViews ", - Short: "Patch UI Saved View", - Args: cobra.MaximumNArgs(1), + Use: "create-savedViews", + Short: "Post UI Saved View", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3159,10 +4164,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - if len(args) > 0 { - params.Set("savedViewId", args[0]) - } - result, err := client.PatchAdminUiSavedViewsSavedViewId(cmd.Context(), params, os.Stdin) + result, err := client.CreateAdminUiSavedViews(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -3185,7 +4187,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "delete-savedViews ", Short: "Delete UI Saved View", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3231,8 +4233,9 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "list-current", - Short: "Get Current User", + Use: "patch-savedViews ", + Short: "Patch UI Saved View", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3254,7 +4257,10 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListAdminUserCurrent(cmd.Context(), params) + if len(args) > 0 { + params.Set("savedViewId", args[0]) + } + result, err := client.PatchAdminUiSavedViewsSavedViewId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -3275,8 +4281,8 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "create-mapping", - Short: "Post Add User Mappings", + Use: "list-current", + Short: "Get Current User", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3298,7 +4304,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateAdminUserMapping(cmd.Context(), params, os.Stdin) + result, err := client.ListAdminUserCurrent(cmd.Context(), params) if err != nil { return err } @@ -3365,6 +4371,50 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "create-mapping", + Short: "Post Add User Mappings", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateAdminUserMapping(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "list-suggestions", @@ -3413,7 +4463,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "delete-mapping ", Short: "Delete User Mapping", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3461,7 +4511,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "update-mapping ", Short: "Edit User Mapping", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3553,7 +4603,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "get-user ", Short: "Get User", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3733,7 +4783,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "get-users ", Short: "Get Provider Users", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3779,9 +4829,9 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ - Use: "get-users ", + Use: "get-users-2 ", Short: "Get User By Provider", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3832,7 +4882,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "delete-erasure ", Short: "Delete User Erasure (GDPR Art. 17)", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3880,7 +4930,7 @@ func RegisterAdminCommands(parent *cobra.Command, getClient func() *api.Client) cmd := &cobra.Command{ Use: "get-export ", Short: "Get User Data Export (GDPR Art. 15, 20)", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} diff --git a/internal/commands/asset-graph.go b/internal/commands/asset-graph.go new file mode 100644 index 0000000..5abf23f --- /dev/null +++ b/internal/commands/asset-graph.go @@ -0,0 +1,214 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package commands + +import ( + "net/url" + + "github.com/nullify-platform/cli/internal/api" + "github.com/nullify-platform/cli/internal/output" + "github.com/spf13/cobra" + "github.com/spf13/pflag" +) + +func RegisterAssetGraphCommands(parent *cobra.Command, getClient func() *api.Client) { + serviceCmd := &cobra.Command{ + Use: "asset-graph", + Short: "Asset Graph (reachability, search, subgraph, summary)", + } + parent.AddCommand(serviceCmd) + + { + cmd := &cobra.Command{ + Use: "list-reachability", + Short: "Get Asset Graph Reachability", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "node-id": "nodeId", + "account-id": "accountId", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAssetGraphReachability(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("node-id", "", "") + cmd.Flags().String("account-id", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-search", + Short: "Search Asset Graph", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "object-types": "objectTypes", + "max-results": "maxResults", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAssetGraphSearch(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("q", "", "") + cmd.Flags().String("object-types", "", "") + cmd.Flags().String("max-results", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-subgraph", + Short: "Get Asset Graph Subgraph", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "root-node-id": "rootNodeId", + "max-nodes": "maxNodes", + "account-id": "accountId", + "object-types": "objectTypes", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAssetGraphSubgraph(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("root-node-id", "", "") + cmd.Flags().String("depth", "", "") + cmd.Flags().String("max-nodes", "", "") + cmd.Flags().String("account-id", "", "") + cmd.Flags().String("object-types", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-summary", + Short: "Get Asset Graph Summary", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListAssetGraphSummary(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + +} diff --git a/internal/commands/context.go b/internal/commands/context.go index 80ee15b..4532f5e 100644 --- a/internal/commands/context.go +++ b/internal/commands/context.go @@ -152,9 +152,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-applications ", - Short: "Get Application", - Args: cobra.MaximumNArgs(1), + Use: "delete-applications ", + Short: "Delete Application", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -179,7 +179,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("applicationId", args[0]) } - result, err := client.GetContextApplicationsApplicationId(cmd.Context(), params) + result, err := client.DeleteContextApplicationsApplicationId(cmd.Context(), params) if err != nil { return err } @@ -200,9 +200,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "patch-applications ", - Short: "Update Application", - Args: cobra.MaximumNArgs(1), + Use: "get-applications ", + Short: "Get Application", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -227,7 +227,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("applicationId", args[0]) } - result, err := client.PatchContextApplicationsApplicationId(cmd.Context(), params, os.Stdin) + result, err := client.GetContextApplicationsApplicationId(cmd.Context(), params) if err != nil { return err } @@ -248,9 +248,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-applications ", - Short: "Delete Application", - Args: cobra.MaximumNArgs(1), + Use: "patch-applications ", + Short: "Update Application", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -275,7 +275,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("applicationId", args[0]) } - result, err := client.DeleteContextApplicationsApplicationId(cmd.Context(), params) + result, err := client.PatchContextApplicationsApplicationId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -296,9 +296,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-schema ", + Use: "get-applications-schema ", Short: "Get Application Schema", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -403,7 +403,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-artifact-deployments ", Short: "Get Artifact Deployment", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -503,9 +503,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-artifacts ", - Short: "Get Artifact", - Args: cobra.MaximumNArgs(1), + Use: "delete-artifacts ", + Short: "Delete Artifact", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -530,7 +530,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("artifactId", args[0]) } - result, err := client.GetContextArtifactsArtifactId(cmd.Context(), params) + result, err := client.DeleteContextArtifactsArtifactId(cmd.Context(), params) if err != nil { return err } @@ -551,9 +551,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-artifacts ", - Short: "Delete Artifact", - Args: cobra.MaximumNArgs(1), + Use: "get-artifacts ", + Short: "Get Artifact", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -578,7 +578,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("artifactId", args[0]) } - result, err := client.DeleteContextArtifactsArtifactId(cmd.Context(), params) + result, err := client.GetContextArtifactsArtifactId(cmd.Context(), params) if err != nil { return err } @@ -856,9 +856,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-cicd-pipelines ", - Short: "Get CI/CD Pipeline", - Args: cobra.MaximumNArgs(1), + Use: "delete-cicd-pipelines ", + Short: "Delete CI/CD Pipeline", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -883,7 +883,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("pipelineId", args[0]) } - result, err := client.GetContextCicdPipelinesPipelineId(cmd.Context(), params) + result, err := client.DeleteContextCicdPipelinesPipelineId(cmd.Context(), params) if err != nil { return err } @@ -904,9 +904,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-cicd-pipelines ", - Short: "Delete CI/CD Pipeline", - Args: cobra.MaximumNArgs(1), + Use: "get-cicd-pipelines ", + Short: "Get CI/CD Pipeline", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -931,7 +931,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("pipelineId", args[0]) } - result, err := client.DeleteContextCicdPipelinesPipelineId(cmd.Context(), params) + result, err := client.GetContextCicdPipelinesPipelineId(cmd.Context(), params) if err != nil { return err } @@ -954,7 +954,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-discovered-nodes ", Short: "Get Cloud Recon Discovered Nodes", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1007,7 +1007,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-hotspots ", Short: "Get Cloud Recon Hotspots", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1056,9 +1056,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-latest ", + Use: "get-cloud-recon-accounts-scans-latest ", Short: "Get Latest Cloud Recon Scan", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1238,7 +1238,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-status ", Short: "Get Cloud Scan Status", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1282,6 +1282,60 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "delete-deps", + Short: "Delete dependency data", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + "repository-id": "repositoryId", + "project-id": "projectId", + "introduced-at": "introducedAt", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.DeleteContextDeps(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + cmd.Flags().String("repository-id", "", "") + cmd.Flags().String("project-id", "", "") + cmd.Flags().String("ecosystem", "", "") + cmd.Flags().String("name", "", "") + cmd.Flags().String("version", "", "") + cmd.Flags().String("introduced-at", "", "") + cmd.Flags().String("global", "", "") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "list-deps", @@ -1331,8 +1385,8 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-deps", - Short: "Delete dependency data", + Use: "list-active", + Short: "List Tenant Wide Active Dependencies", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1346,9 +1400,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", + "page-size": "pageSize", "repository-id": "repositoryId", "project-id": "projectId", - "introduced-at": "introducedAt", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -1357,7 +1411,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.DeleteContextDeps(cmd.Context(), params) + result, err := client.ListContextDepsActive(cmd.Context(), params) if err != nil { return err } @@ -1373,20 +1427,22 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") - cmd.Flags().String("repository-id", "", "") - cmd.Flags().String("project-id", "", "") + cmd.Flags().String("page-size", "", "") + cmd.Flags().String("cursor", "", "") + cmd.Flags().String("search", "", "") cmd.Flags().String("ecosystem", "", "") cmd.Flags().String("name", "", "") - cmd.Flags().String("version", "", "") - cmd.Flags().String("introduced-at", "", "") - cmd.Flags().String("global", "", "") + cmd.Flags().String("direct", "", "") + cmd.Flags().String("repository-id", "", "") + cmd.Flags().String("project-id", "", "") + cmd.Flags().String("range", "", "") serviceCmd.AddCommand(cmd) } { cmd := &cobra.Command{ - Use: "list-active", - Short: "List Tenant Wide Active Dependencies", + Use: "list-summary", + Short: "Tenant Wide Active Dependency Summary", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1400,7 +1456,8 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", - "page-size": "pageSize", + "repository-id": "repositoryId", + "project-id": "projectId", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -1409,7 +1466,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListContextDepsActive(cmd.Context(), params) + result, err := client.ListContextDepsActiveSummary(cmd.Context(), params) if err != nil { return err } @@ -1425,8 +1482,13 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") - cmd.Flags().String("page-size", "", "") - cmd.Flags().String("cursor", "", "") + cmd.Flags().String("search", "", "") + cmd.Flags().String("ecosystem", "", "") + cmd.Flags().String("name", "", "") + cmd.Flags().String("direct", "", "") + cmd.Flags().String("repository-id", "", "") + cmd.Flags().String("project-id", "", "") + cmd.Flags().String("range", "", "") serviceCmd.AddCommand(cmd) } @@ -1434,7 +1496,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-by-ref ", Short: "Get Dependencies by Bom Ref", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1485,7 +1547,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-dependents ", Short: "List Dependents of a Bom Ref", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1583,7 +1645,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-active ", Short: "List Active Dependencies", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1627,6 +1689,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + cmd.Flags().String("search", "", "") + cmd.Flags().String("ecosystem", "", "") + cmd.Flags().String("direct", "", "") serviceCmd.AddCommand(cmd) } @@ -1634,7 +1699,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-at ", Short: "Dependencies at commit", - Args: cobra.MaximumNArgs(3), + Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1688,7 +1753,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-diff ", Short: "Dependency diff between two commits", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1743,7 +1808,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-exposure ", Short: "Project package exposure by version filter (semver or hash)", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1797,7 +1862,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-history ", Short: "Package exposure history (windows)", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1949,7 +2014,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "delete-entrypoints ", Short: "Delete Entrypoint", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1997,7 +2062,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-entrypoints ", Short: "Get Entrypoint", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2043,8 +2108,8 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-memories", - Short: "Create Memory", + Use: "list-memories", + Short: "Get Memories", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2058,6 +2123,11 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", + "resource-id": "resourceId", + "resource-type": "resourceType", + "memory-type": "memoryType", + "is-latest": "isLatest", + "next-token": "nextToken", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -2066,7 +2136,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateContextMemories(cmd.Context(), params, os.Stdin) + result, err := client.ListContextMemories(cmd.Context(), params) if err != nil { return err } @@ -2082,13 +2152,20 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + cmd.Flags().String("resource-id", "", "Filter by resource ID (e.g., document ID, finding ID)") + cmd.Flags().String("resource-type", "", "Filter by resource type (e.g., 'document', 'finding', 'chat')") + cmd.Flags().String("memory-type", "", "Filter by memory type") + cmd.Flags().String("priority", "", "Filter by priority level") + cmd.Flags().String("is-latest", "", "Filter for latest memories only") + cmd.Flags().String("limit", "", "Maximum number of results (default: 50, max: 1000)") + cmd.Flags().String("next-token", "", "Pagination token for next page") serviceCmd.AddCommand(cmd) } { cmd := &cobra.Command{ - Use: "list-memories", - Short: "Get Memories", + Use: "create-memories", + Short: "Create Memory", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2102,11 +2179,6 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client "github-repository-id": "githubRepositoryId", "github-team-id": "githubTeamId", "bitbucket-repository-id": "bitbucketRepositoryId", - "resource-id": "resourceId", - "resource-type": "resourceType", - "memory-type": "memoryType", - "is-latest": "isLatest", - "next-token": "nextToken", } cmd.Flags().Visit(func(f *pflag.Flag) { if apiName, ok := flagMap[f.Name]; ok { @@ -2115,7 +2187,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListContextMemories(cmd.Context(), params) + result, err := client.CreateContextMemories(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2131,13 +2203,6 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") - cmd.Flags().String("resource-id", "", "Filter by resource ID (e.g., document ID, finding ID)") - cmd.Flags().String("resource-type", "", "Filter by resource type (e.g., 'document', 'finding', 'chat')") - cmd.Flags().String("memory-type", "", "Filter by memory type") - cmd.Flags().String("priority", "", "Filter by priority level") - cmd.Flags().String("is-latest", "", "Filter for latest memories only") - cmd.Flags().String("limit", "", "Maximum number of results (default: 50, max: 1000)") - cmd.Flags().String("next-token", "", "Pagination token for next page") serviceCmd.AddCommand(cmd) } @@ -2196,7 +2261,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "delete-memories ", Short: "Delete Memory", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2244,7 +2309,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-memories ", Short: "Get Memory", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2293,7 +2358,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "patch-memories ", Short: "Update Memory", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2341,7 +2406,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-versions ", Short: "Get Memory Versions", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2388,8 +2453,8 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "update-organization", - Short: "Upsert Classification of the Organization", + Use: "list-organization", + Short: "Get Organization Context", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2411,7 +2476,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.UpdateContextOrganization(cmd.Context(), params, os.Stdin) + result, err := client.ListContextOrganization(cmd.Context(), params) if err != nil { return err } @@ -2476,8 +2541,8 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-organization", - Short: "Get Organization Context", + Use: "update-organization", + Short: "Upsert Classification of the Organization", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2499,7 +2564,243 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListContextOrganization(cmd.Context(), params) + result, err := client.UpdateContextOrganization(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-resync", + Short: "Resync RAG Vector Store", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateContextRagResync(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-repo-scans", + Short: "List Repo Context Scans", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "repository-id": "repositoryId", + "commit-sha": "commitSha", + "page-size": "pageSize", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListContextRepoScans(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("repository-id", "", "") + cmd.Flags().String("commit-sha", "", "") + cmd.Flags().String("status", "", "") + cmd.Flags().String("page", "", "") + cmd.Flags().String("page-size", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-repo-scans", + Short: "Create Repo Context Scan", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateContextRepoScans(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-repo-scans ", + Short: "Get Repo Context Scan", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("scanId", args[0]) + } + result, err := client.GetContextRepoScansScanId(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "patch-repo-scans ", + Short: "Update Repo Context Scan", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("scanId", args[0]) + } + result, err := client.PatchContextRepoScansScanId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2566,7 +2867,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-reports ", Short: "Get Report Status", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2662,9 +2963,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "patch-repositories ", - Short: "Update Repository", - Args: cobra.MaximumNArgs(1), + Use: "delete-repositories ", + Short: "Delete Repository", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2689,7 +2990,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("repositoryId", args[0]) } - result, err := client.PatchContextRepositoriesRepositoryId(cmd.Context(), params, os.Stdin) + result, err := client.DeleteContextRepositoriesRepositoryId(cmd.Context(), params) if err != nil { return err } @@ -2712,7 +3013,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-repositories ", Short: "Get Repository", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2758,9 +3059,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-repositories ", - Short: "Delete Repository", - Args: cobra.MaximumNArgs(1), + Use: "patch-repositories ", + Short: "Update Repository", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2785,7 +3086,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("repositoryId", args[0]) } - result, err := client.DeleteContextRepositoriesRepositoryId(cmd.Context(), params) + result, err := client.PatchContextRepositoriesRepositoryId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2806,9 +3107,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-projects ", + Use: "get-repositories-projects ", Short: "List Projects", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2861,7 +3162,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "delete-projects ", Short: "Delete Project", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2910,9 +3211,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-projects ", + Use: "get-repositories-projects-2 ", Short: "Get Project", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2963,7 +3264,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "patch-projects ", Short: "Update Project", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3012,9 +3313,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-schema-by-id ", - Short: "Upload Project Schema", - Args: cobra.MaximumNArgs(2), + Use: "get-repositories-projects-schema ", + Short: "Get Project Schema", + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3042,7 +3343,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 1 { params.Set("projectId", args[1]) } - result, err := client.CreateContextRepositoriesRepositoryIdProjectsProjectIdSchema(cmd.Context(), params, os.Stdin) + result, err := client.ListContextRepositoriesRepositoryIdProjectsProjectIdSchema(cmd.Context(), params) if err != nil { return err } @@ -3063,9 +3364,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-schema ", - Short: "Get Project Schema", - Args: cobra.MaximumNArgs(2), + Use: "create-schema-by-id ", + Short: "Upload Project Schema", + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3093,7 +3394,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 1 { params.Set("projectId", args[1]) } - result, err := client.ListContextRepositoriesRepositoryIdProjectsProjectIdSchema(cmd.Context(), params) + result, err := client.CreateContextRepositoriesRepositoryIdProjectsProjectIdSchema(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -3116,7 +3417,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-metadata ", Short: "Get Project Schema Metadata", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3167,7 +3468,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-raw ", Short: "Get Project Schema Raw File", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3356,9 +3657,9 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-latest ", + Use: "get-sboms-repository-latest ", Short: "Get Latest SBOMs for Repository", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3406,7 +3707,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-project ", Short: "Get Repository/Project SBOMs", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3464,6 +3765,50 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "create-resolve", + Short: "Get or generate SBOM", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateContextSbomsResolve(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "create-scan", @@ -3645,7 +3990,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "delete-file ", Short: "Delete Vault File", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3693,7 +4038,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-file ", Short: "Get Vault File", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -3741,7 +4086,7 @@ func RegisterContextCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "patch-file ", Short: "Patch Vault File", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} diff --git a/internal/commands/cspm.go b/internal/commands/cspm.go index 4e6a338..a52d39b 100644 --- a/internal/commands/cspm.go +++ b/internal/commands/cspm.go @@ -81,7 +81,7 @@ func RegisterCspmCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-findings ", Short: "Get CSPM Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -125,11 +125,62 @@ func RegisterCspmCommands(parent *cobra.Command, getClient func() *api.Client) { serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "get-activity ", + Short: "Get CSPM Finding Autofix Activity", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "since-id": "since_id", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListCspmFindingsFindingIdAutofixActivity(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("since-id", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "get-diff ", Short: "Get CSPM Finding Autofix Diff", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -173,11 +224,155 @@ func RegisterCspmCommands(parent *cobra.Command, getClient func() *api.Client) { serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "create-fix-by-id ", + Short: "Post CSPM Finding Autofix", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.CreateCspmFindingsFindingIdAutofixFix(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-state ", + Short: "Get CSPM Finding Autofix State", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListCspmFindingsFindingIdAutofixState(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-status ", + Short: "Get CSPM Finding Autofix Status", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListCspmFindingsFindingIdAutofixStatus(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "create-ticket-by-id ", Short: "Create Ticket for CSPM Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -278,7 +473,7 @@ func RegisterCspmCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-scans ", Short: "Get CSPM Scan", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} diff --git a/internal/commands/dast.go b/internal/commands/dast.go index 87ea64c..c5236c2 100644 --- a/internal/commands/dast.go +++ b/internal/commands/dast.go @@ -20,8 +20,8 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "update-config", - Short: "Put BugHunt Config", + Use: "list-config", + Short: "Get BugHunt Config", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -43,7 +43,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.UpdateDastBughuntConfig(cmd.Context(), params, os.Stdin) + result, err := client.ListDastBughuntConfig(cmd.Context(), params) if err != nil { return err } @@ -64,8 +64,8 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-config", - Short: "Get BugHunt Config", + Use: "update-config", + Short: "Put BugHunt Config", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -87,7 +87,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListDastBughuntConfig(cmd.Context(), params) + result, err := client.UpdateDastBughuntConfig(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -152,7 +152,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-bughunt-findings", Short: "Get BugHunt Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -196,9 +196,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-findings ", + Use: "get-bughunt-findings ", Short: "Get BugHunt Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -246,7 +246,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "patch-allowlist ", Short: "Allowlist BugHunt Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -292,9 +292,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-bughunt-findings-events ", Short: "Get BugHunt Finding Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -340,9 +340,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-triage ", + Use: "get-bughunt-findings-triage ", Short: "Create Interactor []", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -388,8 +388,8 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-scans", - Short: "Start BugHunt Scan", + Use: "list-bughunt-scans", + Short: "Get BugHunt Scans", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -411,7 +411,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateDastBughuntScans(cmd.Context(), params, os.Stdin) + result, err := client.ListDastBughuntScans(cmd.Context(), params) if err != nil { return err } @@ -432,8 +432,8 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-scans", - Short: "Get BugHunt Scans", + Use: "create-scans", + Short: "Start BugHunt Scan", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -455,7 +455,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListDastBughuntScans(cmd.Context(), params) + result, err := client.CreateDastBughuntScans(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -476,9 +476,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-scans ", + Use: "get-bughunt-scans ", Short: "Get BugHunt Scan", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -524,9 +524,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-diff ", + Use: "get-bughunt-scans-diff ", Short: "Get BugHunt Scan Diff", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -573,9 +573,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-findings ", + Use: "get-bughunt-scans-findings ", Short: "Get BugHunt Scan Findings", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -621,9 +621,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-logs ", + Use: "get-bughunt-scans-logs ", Short: "Get BugHunt Sub-Agent Network Log", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -669,9 +669,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-stop-by-id ", + Use: "create-bughunt-scans-stop-by-id ", Short: "Stop BugHunt Scan", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -763,7 +763,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "create-run-now-by-id ", Short: "Run BugHunt Suite Now", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -897,9 +897,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-credentials ", - Short: "Get Credential", - Args: cobra.MaximumNArgs(1), + Use: "delete-credentials ", + Short: "Delete Credential", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -924,7 +924,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("credentialId", args[0]) } - result, err := client.GetDastCredentialsCredentialId(cmd.Context(), params) + result, err := client.DeleteDastCredentialsCredentialId(cmd.Context(), params) if err != nil { return err } @@ -945,9 +945,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "delete-credentials ", - Short: "Delete Credential", - Args: cobra.MaximumNArgs(1), + Use: "get-credentials ", + Short: "Get Credential", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -972,7 +972,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("credentialId", args[0]) } - result, err := client.DeleteDastCredentialsCredentialId(cmd.Context(), params) + result, err := client.GetDastCredentialsCredentialId(cmd.Context(), params) if err != nil { return err } @@ -995,7 +995,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "update-credentials ", Short: "Update Credential", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1043,7 +1043,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "create-validate-by-id ", Short: "Validate Credential", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1089,12 +1089,13 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-applications", - Short: "Create Application", + Use: "list-applications", + Short: "Get Pentest App Configs", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "next-token": "nextToken", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1112,13 +1113,15 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateDastPentestApplications(cmd.Context(), params, os.Stdin) + result, err := client.ListDastPentestApplications(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1133,13 +1136,12 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-applications", - Short: "Get Pentest App Configs", + Use: "create-applications", + Short: "Create Application", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "next-token": "nextToken", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1157,15 +1159,13 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListDastPentestApplications(cmd.Context(), params) + result, err := client.CreateDastPentestApplications(cmd.Context(), params, os.Stdin) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("next-token", "", "") - cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1180,9 +1180,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-applications ", - Short: "Get Pentest App Config", - Args: cobra.MaximumNArgs(1), + Use: "delete-applications ", + Short: "Delete Pentest App Config", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1207,7 +1207,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("applicationId", args[0]) } - result, err := client.GetDastPentestApplicationsApplicationId(cmd.Context(), params) + result, err := client.DeleteDastPentestApplicationsApplicationId(cmd.Context(), params) if err != nil { return err } @@ -1228,9 +1228,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "update-applications ", - Short: "Update Application", - Args: cobra.MaximumNArgs(1), + Use: "get-applications ", + Short: "Get Pentest App Config", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1255,7 +1255,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("applicationId", args[0]) } - result, err := client.UpdateDastPentestApplicationsApplicationId(cmd.Context(), params, os.Stdin) + result, err := client.GetDastPentestApplicationsApplicationId(cmd.Context(), params) if err != nil { return err } @@ -1276,9 +1276,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "delete-applications ", - Short: "Delete Pentest App Config", - Args: cobra.MaximumNArgs(1), + Use: "update-applications ", + Short: "Update Application", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1303,7 +1303,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("applicationId", args[0]) } - result, err := client.DeleteDastPentestApplicationsApplicationId(cmd.Context(), params) + result, err := client.UpdateDastPentestApplicationsApplicationId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1326,7 +1326,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "create-preflight-by-id ", Short: "Start Pentest Preflight", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1374,7 +1374,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-latest ", Short: "Get Latest Pentest Preflight for Application", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1422,7 +1422,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-quota ", Short: "Get Pentest Preflight Quota", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1468,7 +1468,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-pentest-findings", Short: "Get Pentest Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -1530,9 +1530,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-findings ", + Use: "get-pentest-findings ", Short: "Get Pentest Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1580,7 +1580,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "create-allowlist-by-id ", Short: "Allowlist Pentest Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1626,13 +1626,14 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-create_pr-by-id ", - Short: "Create PR from Cached Pentest Finding Autofix", - Args: cobra.MaximumNArgs(1), + Use: "get-activity ", + Short: "Get DAST Pentest Finding Autofix Activity", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "since-id": "since_id", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1653,13 +1654,15 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateDastPentestFindingsFindingIdAutofixCacheCreatePr(cmd.Context(), params, os.Stdin) + result, err := client.ListDastPentestFindingsFindingIdAutofixActivity(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("since-id", "", "") + cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1674,9 +1677,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-diff ", + Use: "get-pentest-findings-autofix-cache-diff ", Short: "Get Pentest Finding Autofix Diff", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1722,9 +1725,153 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-events ", + Use: "create-fix-by-id ", + Short: "Post DAST Pentest Finding AutoFix", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.CreateDastPentestFindingsFindingIdAutofixFix(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-state ", + Short: "Get DAST Pentest Finding Autofix State", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListDastPentestFindingsFindingIdAutofixState(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-status ", + Short: "Get DAST Pentest Finding Autofix Status", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListDastPentestFindingsFindingIdAutofixStatus(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-pentest-findings-events ", Short: "Get Pentest Finding Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1772,7 +1919,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-full ", Short: "Get Pentest Finding Full", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1820,7 +1967,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "create-ticket-by-id ", Short: "Create Jira Ticket for Pentest Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1866,9 +2013,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-triage ", + Use: "get-pentest-findings-triage ", Short: "Get Pentest Finding Full", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1916,7 +2063,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "create-unallowlist-by-id ", Short: "Unallowlist Pentest Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1964,7 +2111,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-preflights ", Short: "Get Pentest Preflight", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2010,9 +2157,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-pentest-preflights-events ", Short: "Get Pentest Preflight Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2061,7 +2208,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-scans", + Use: "list-pentest-scans", Short: "Get Pentest Scans", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -2108,9 +2255,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-scans ", + Use: "get-pentest-scans ", Short: "Get Pentest Scan", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2156,9 +2303,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-findings ", + Use: "get-pentest-scans-findings ", Short: "Get Pentest Scan Findings", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2206,7 +2353,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-hypotheses ", Short: "Get Auth Matrix Hypotheses", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2252,9 +2399,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-logs ", + Use: "get-pentest-scans-logs ", Short: "Get Sub-Agent Network Log", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2302,7 +2449,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-report ", Short: "Get Pentest Scan Report", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2350,7 +2497,7 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-download ", Short: "Get Pentest Scan Report Download URL", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2396,9 +2543,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-pdf ", + Use: "get-pentest-scans-report-external-pdf ", Short: "Get Pentest Scan External Report PDF", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2444,9 +2591,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-pdf ", + Use: "get-pentest-scans-report-pdf ", Short: "Get Pentest Scan Report PDF", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2492,9 +2639,9 @@ func RegisterDastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-stop-by-id ", + Use: "create-pentest-scans-stop-by-id ", Short: "Stop Pentest Scan", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} diff --git a/internal/commands/infrastructure.go b/internal/commands/infrastructure.go new file mode 100644 index 0000000..624cec2 --- /dev/null +++ b/internal/commands/infrastructure.go @@ -0,0 +1,347 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package commands + +import ( + "net/url" + + "github.com/nullify-platform/cli/internal/api" + "github.com/nullify-platform/cli/internal/output" + "github.com/spf13/cobra" + "github.com/spf13/pflag" +) + +func RegisterInfrastructureCommands(parent *cobra.Command, getClient func() *api.Client) { + serviceCmd := &cobra.Command{ + Use: "infrastructure", + Short: "Infrastructure Graphs", + } + parent.AddCommand(serviceCmd) + + { + cmd := &cobra.Command{ + Use: "list-graphs", + Short: "List Infrastructure Graphs", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListInfrastructureGraphs(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-info", + Short: "Get Infrastructure Graph Info", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListInfrastructureGraphsInfo(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-summary", + Short: "Get Infrastructure Graph Summary", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListInfrastructureGraphsSummary(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-graphs ", + Short: "Get Infrastructure Graph", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("accountId", args[0]) + } + result, err := client.GetInfrastructureGraphsAccountId(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-download ", + Short: "Get Infrastructure Graph Download URL", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("accountId", args[0]) + } + result, err := client.ListInfrastructureGraphsAccountIdDownload(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-graphs-versions ", + Short: "List Infrastructure Graph Versions", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("accountId", args[0]) + } + result, err := client.ListInfrastructureGraphsAccountIdVersions(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-graphs-versions-2 ", + Short: "Get Infrastructure Graph Version", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("accountId", args[0]) + } + if len(args) > 1 { + params.Set("version", args[1]) + } + result, err := client.ListInfrastructureGraphsAccountIdVersionsVersion(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + +} diff --git a/internal/commands/manager.go b/internal/commands/manager.go index f3763b3..951ed8c 100644 --- a/internal/commands/manager.go +++ b/internal/commands/manager.go @@ -20,12 +20,13 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-campaigns", - Short: "Post Campaign", + Use: "list-campaigns", + Short: "List Campaigns", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "page-size": "pageSize", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -43,13 +44,15 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateManagerCampaigns(cmd.Context(), params, os.Stdin) + result, err := client.ListManagerCampaigns(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("page", "", "") + cmd.Flags().String("page-size", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -64,13 +67,12 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-campaigns", - Short: "List Campaigns", + Use: "create-campaigns", + Short: "Post Campaign", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "page-size": "pageSize", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -88,15 +90,13 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListManagerCampaigns(cmd.Context(), params) + result, err := client.CreateManagerCampaigns(cmd.Context(), params, os.Stdin) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("page", "", "") - cmd.Flags().String("page-size", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -252,6 +252,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client client := getClient() params := url.Values{} flagMap := map[string]string{ + "include-expired": "includeExpired", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -276,6 +277,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client return output.Print(cmd, result) }, } + cmd.Flags().String("include-expired", "", "Whether to include expired campaigns in the metrics refresh (default: false)") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -384,9 +386,9 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "patch-campaigns ", - Short: "Patch Campaign", - Args: cobra.MaximumNArgs(1), + Use: "delete-campaigns ", + Short: "Delete Campaign", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -411,7 +413,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("campaignId", args[0]) } - result, err := client.PatchManagerCampaignsCampaignId(cmd.Context(), params, os.Stdin) + result, err := client.DeleteManagerCampaignsCampaignId(cmd.Context(), params) if err != nil { return err } @@ -432,9 +434,9 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-campaigns ", - Short: "Delete Campaign", - Args: cobra.MaximumNArgs(1), + Use: "get-campaigns ", + Short: "Get Campaign by ID", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -459,7 +461,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("campaignId", args[0]) } - result, err := client.DeleteManagerCampaignsCampaignId(cmd.Context(), params) + result, err := client.GetManagerCampaignsCampaignId(cmd.Context(), params) if err != nil { return err } @@ -480,9 +482,9 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-campaigns ", - Short: "Get Campaign by ID", - Args: cobra.MaximumNArgs(1), + Use: "patch-campaigns ", + Short: "Patch Campaign", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -507,7 +509,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("campaignId", args[0]) } - result, err := client.GetManagerCampaignsCampaignId(cmd.Context(), params) + result, err := client.PatchManagerCampaignsCampaignId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -528,9 +530,9 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-campaigns-events ", Short: "Get Campaign Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -584,7 +586,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-findings ", Short: "Get (Triaged) Findings Associated with a campaign", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -632,7 +634,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-preview ", Short: "Get Campaign Preview Details", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -676,6 +678,107 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "get-campaigns-runs ", + Short: "List Campaign Runs", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("campaignId", args[0]) + } + result, err := client.ListManagerCampaignsCampaignIdRuns(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("cursor", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-campaigns-runs-2 ", + Short: "Get Campaign Run", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("campaignId", args[0]) + } + if len(args) > 1 { + params.Set("runId", args[1]) + } + result, err := client.GetManagerCampaignsCampaignIdRunsRunId(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "list-sessions", @@ -727,7 +830,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "delete-sessions ", Short: "Delete Chat Session", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -775,7 +878,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-sessions ", Short: "Get Chat Session", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -823,7 +926,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "patch-sessions ", Short: "Patch Chat Session", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -871,7 +974,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-actions ", Short: "Get Chat Session Actions", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -918,8 +1021,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ Use: "get-audit ", - Short: "Get Chat Session Audit Trail", - Args: cobra.MaximumNArgs(1), + Short: "Get chat session audit trail", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -970,7 +1073,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-history ", Short: "Get Chat Session History", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1019,8 +1122,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-config", - Short: "Post a Manager Config object to S3", + Use: "list-config", + Short: "Get Manager config", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1042,7 +1145,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateManagerConfig(cmd.Context(), params, os.Stdin) + result, err := client.ListManagerConfig(cmd.Context(), params) if err != nil { return err } @@ -1063,8 +1166,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-config", - Short: "Get the Manager Agent Config", + Use: "create-config", + Short: "Update Manager config", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1086,7 +1189,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListManagerConfig(cmd.Context(), params) + result, err := client.CreateManagerConfig(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1107,8 +1210,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-credits", - Short: "Post an update to agent credits", + Use: "list-credits", + Short: "Get Manager credit balance", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1130,7 +1233,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateManagerCredits(cmd.Context(), params, os.Stdin) + result, err := client.ListManagerCredits(cmd.Context(), params) if err != nil { return err } @@ -1151,8 +1254,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-credits", - Short: "Get the credit balance available", + Use: "create-credits", + Short: "Update Manager credit balance", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1174,7 +1277,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListManagerCredits(cmd.Context(), params) + result, err := client.CreateManagerCredits(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1195,13 +1298,12 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-customer-questions", - Short: "List Customer Question Sets", + Use: "delete-customer-questions", + Short: "Delete All Customer Question Sets", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "page-size": "pageSize", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1219,15 +1321,13 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListManagerCustomerQuestions(cmd.Context(), params) + result, err := client.DeleteManagerCustomerQuestions(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("page", "", "") - cmd.Flags().String("page-size", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1242,12 +1342,13 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-customer-questions", - Short: "Delete All Customer Question Sets", + Use: "list-customer-questions", + Short: "List Customer Question Sets", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "page-size": "pageSize", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1265,13 +1366,15 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.DeleteManagerCustomerQuestions(cmd.Context(), params) + result, err := client.ListManagerCustomerQuestions(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("page", "", "") + cmd.Flags().String("page-size", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1286,9 +1389,9 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "delete-customer-questions ", + Use: "delete-customer-questions-2 ", Short: "Delete Customer Question Set", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1336,7 +1439,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-customer-questions ", Short: "Get Customer Question Set", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1384,7 +1487,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "patch-answers ", Short: "Submit Question Answer", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1435,7 +1538,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "delete-questions ", Short: "Delete Customer Question", - Args: cobra.MaximumNArgs(2), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1533,7 +1636,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "patch-escalations ", Short: "Patch Escalation", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1672,7 +1775,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "delete-events ", Short: "Delete Event", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1718,9 +1821,9 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-findings-events ", Short: "Get Finding Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1772,7 +1875,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ Use: "list-groundrules", - Short: "Get the Manager Agent GroundRules", + Short: "Get Manager ground rules", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2131,8 +2234,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-trigger", - Short: "Trigger TacitKnowledge", + Use: "list-strategy", + Short: "Get Active Strategy", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2154,7 +2257,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateManagerTacitKnowledgeTrigger(cmd.Context(), params) + result, err := client.ListManagerStrategy(cmd.Context(), params) if err != nil { return err } @@ -2175,8 +2278,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-threat-investigations", - Short: "Post Threat Investigation", + Use: "patch-strategy", + Short: "Patch Active Strategy", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2198,7 +2301,142 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateManagerThreatInvestigations(cmd.Context(), params, os.Stdin) + result, err := client.PatchManagerStrategy(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-strategy-trigger", + Short: "Trigger Strategy Generation", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateManagerStrategyTrigger(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-versions", + Short: "List Strategy Versions", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + "page-size": "pageSize", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListManagerStrategyVersions(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + cmd.Flags().String("page", "", "") + cmd.Flags().String("page-size", "", "") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-tacit-knowledge-trigger", + Short: "Trigger TacitKnowledge", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateManagerTacitKnowledgeTrigger(cmd.Context(), params) if err != nil { return err } @@ -2266,9 +2504,8 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "patch-threat-investigations ", - Short: "Patch Threat Investigation", - Args: cobra.MaximumNArgs(1), + Use: "create-threat-investigations", + Short: "Post Threat Investigation", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2290,10 +2527,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client params.Set(f.Name, f.Value.String()) } }) - if len(args) > 0 { - params.Set("threatInvestigationId", args[0]) - } - result, err := client.PatchManagerThreatInvestigationsThreatInvestigationId(cmd.Context(), params, os.Stdin) + result, err := client.CreateManagerThreatInvestigations(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -2316,7 +2550,7 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client cmd := &cobra.Command{ Use: "get-threat-investigations ", Short: "Get Threat Investigation", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -2360,10 +2594,58 @@ func RegisterManagerCommands(parent *cobra.Command, getClient func() *api.Client serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "patch-threat-investigations ", + Short: "Patch Threat Investigation", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("threatInvestigationId", args[0]) + } + result, err := client.PatchManagerThreatInvestigationsThreatInvestigationId(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + { cmd := &cobra.Command{ Use: "create-trigger", - Short: "Trigger Orchestrator", + Short: "Start a Manager run", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} diff --git a/internal/commands/orchestrator.go b/internal/commands/orchestrator.go new file mode 100644 index 0000000..7a03f79 --- /dev/null +++ b/internal/commands/orchestrator.go @@ -0,0 +1,431 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package commands + +import ( + "net/url" + "os" + + "github.com/nullify-platform/cli/internal/api" + "github.com/nullify-platform/cli/internal/output" + "github.com/spf13/cobra" + "github.com/spf13/pflag" +) + +func RegisterOrchestratorCommands(parent *cobra.Command, getClient func() *api.Client) { + serviceCmd := &cobra.Command{ + Use: "orchestrator", + Short: "Scan Orchestration (autofix batches, code reviews, retriage, onboarding)", + } + parent.AddCommand(serviceCmd) + + { + cmd := &cobra.Command{ + Use: "create-batch", + Short: "Start Batch Autofix", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateOrchestratorAutofixBatch(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-batch ", + Short: "Get Batch Autofix Status", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("executionId", args[0]) + } + result, err := client.GetOrchestratorAutofixBatchExecutionId(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-codereviews", + Short: "Get Code Reviews", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListOrchestratorCodereviews(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-codereviews ", + Short: "Get Code Review", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("id", args[0]) + } + result, err := client.GetOrchestratorCodereviewsId(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-retriage", + Short: "Retriage Findings", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateOrchestratorFindingsRetriage(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-autofix-iterations ", + Short: "Get Finding Autofix Iterations", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "finding-type": "findingType", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingID", args[0]) + } + result, err := client.ListOrchestratorFindingsFindingIDAutofixIterations(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("finding-type", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-complete", + Short: "Complete Onboarding (Test Only)", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateOrchestratorOnboardingComplete(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-start", + Short: "Start Onboarding", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateOrchestratorOnboardingStart(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-status", + Short: "Get Onboarding Status", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListOrchestratorOnboardingStatus(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + +} diff --git a/internal/commands/sast.go b/internal/commands/sast.go index 8a46005..9db6b9e 100644 --- a/internal/commands/sast.go +++ b/internal/commands/sast.go @@ -30,6 +30,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { "from-time": "fromTime", "event-type": "eventType", "file-owner-name": "fileOwnerName", + "finding-id": "findingId", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -59,6 +60,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd.Flags().String("from-time", "", "") cmd.Flags().String("event-type", "", "") cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("finding-id", "", "") cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") @@ -90,6 +92,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { "is-false-positive": "isFalsePositive", "is-allowlisted": "isAllowlisted", "is-archived": "isArchived", + "ai-generated": "aiGenerated", + "is-latest": "isLatest", + "auto-fix-state": "autoFixState", "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", @@ -129,6 +134,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd.Flags().String("is-false-positive", "", "") cmd.Flags().String("is-allowlisted", "", "") cmd.Flags().String("is-archived", "", "") + cmd.Flags().String("ai-generated", "", "true = AI code-review only, false = rule-only, omitted = both") + cmd.Flags().String("is-latest", "", "") + cmd.Flags().String("auto-fix-state", "", "filter by AutoFixState (e.g. 'none' for findings with no cached fix)") cmd.Flags().String("sort-by", "", "") cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") @@ -189,12 +197,23 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-cache", - Short: "Post Cache AutoFix", + Use: "list-detailed", + Short: "Get Findings Detailed", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "next-token": "nextToken", + "priority-label": "priorityLabel", + "file-owner-name": "fileOwnerName", + "has-pull-request": "hasPullRequest", + "is-resolved": "isResolved", + "is-fixed": "isFixed", + "is-false-positive": "isFalsePositive", + "is-allowlisted": "isAllowlisted", + "is-archived": "isArchived", + "ai-generated": "aiGenerated", + "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -212,13 +231,30 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateSastFindingsAutofixCache(cmd.Context(), params, os.Stdin) + result, err := client.ListSastFindingsDetailed(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("priority-label", "", "") + cmd.Flags().String("severity", "", "") + cmd.Flags().String("language", "", "") + cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("has-pull-request", "", "") + cmd.Flags().String("branch", "", "") + cmd.Flags().String("workflow", "", "") + cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive, isAllowlisted and isArchived") + cmd.Flags().String("is-fixed", "", "") + cmd.Flags().String("is-false-positive", "", "") + cmd.Flags().String("is-allowlisted", "", "") + cmd.Flags().String("is-archived", "", "") + cmd.Flags().String("ai-generated", "", "true = AI code-review only, false = rule-only, omitted = both") + cmd.Flags().String("sort-by", "", "") + cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -233,8 +269,8 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-detailed", - Short: "Get Findings Detailed", + Use: "list-preview", + Short: "Get SAST Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -243,11 +279,15 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { "priority-label": "priorityLabel", "file-owner-name": "fileOwnerName", "has-pull-request": "hasPullRequest", + "repository-ids": "repositoryIds", "is-resolved": "isResolved", "is-fixed": "isFixed", "is-false-positive": "isFalsePositive", "is-allowlisted": "isAllowlisted", "is-archived": "isArchived", + "ai-generated": "aiGenerated", + "is-latest": "isLatest", + "auto-fix-state": "autoFixState", "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", @@ -266,7 +306,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListSastFindingsDetailed(cmd.Context(), params) + result, err := client.ListSastFindingsPreview(cmd.Context(), params) if err != nil { return err } @@ -277,16 +317,19 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { cmd.Flags().String("limit", "", "") cmd.Flags().String("priority-label", "", "") cmd.Flags().String("severity", "", "") - cmd.Flags().String("language", "", "") cmd.Flags().String("file-owner-name", "", "") cmd.Flags().String("has-pull-request", "", "") cmd.Flags().String("branch", "", "") cmd.Flags().String("workflow", "", "") + cmd.Flags().String("repository-ids", "", "if not provided, all repositories will be included") cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive, isAllowlisted and isArchived") cmd.Flags().String("is-fixed", "", "") cmd.Flags().String("is-false-positive", "", "") cmd.Flags().String("is-allowlisted", "", "") cmd.Flags().String("is-archived", "", "") + cmd.Flags().String("ai-generated", "", "true = AI code-review only, false = rule-only, omitted = both") + cmd.Flags().String("is-latest", "", "") + cmd.Flags().String("auto-fix-state", "", "filter by AutoFixState (e.g. 'none' for findings with no cached fix)") cmd.Flags().String("sort-by", "", "") cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") @@ -303,8 +346,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-fix", - Short: "Post Finding Fix", + Use: "get-findings ", + Short: "Get Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -326,7 +370,10 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateSastFindingsFix(cmd.Context(), params, os.Stdin) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.GetSastFindingsFindingId(cmd.Context(), params) if err != nil { return err } @@ -347,23 +394,13 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-preview", - Short: "Get SAST Findings", + Use: "patch-findings ", + Short: "Update Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "next-token": "nextToken", - "priority-label": "priorityLabel", - "file-owner-name": "fileOwnerName", - "has-pull-request": "hasPullRequest", - "repository-ids": "repositoryIds", - "is-resolved": "isResolved", - "is-fixed": "isFixed", - "is-false-positive": "isFalsePositive", - "is-allowlisted": "isAllowlisted", - "is-archived": "isArchived", - "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -381,29 +418,16 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListSastFindingsPreview(cmd.Context(), params) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.PatchSastFindingsFindingId(cmd.Context(), params, os.Stdin) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("next-token", "", "") - cmd.Flags().String("limit", "", "") - cmd.Flags().String("priority-label", "", "") - cmd.Flags().String("severity", "", "") - cmd.Flags().String("file-owner-name", "", "") - cmd.Flags().String("has-pull-request", "", "") - cmd.Flags().String("branch", "", "") - cmd.Flags().String("workflow", "", "") - cmd.Flags().String("repository-ids", "", "if not provided, all repositories will be included") - cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive, isAllowlisted and isArchived") - cmd.Flags().String("is-fixed", "", "") - cmd.Flags().String("is-false-positive", "", "") - cmd.Flags().String("is-allowlisted", "", "") - cmd.Flags().String("is-archived", "", "") - cmd.Flags().String("sort-by", "", "") - cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -418,9 +442,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-findings ", - Short: "Get Finding", - Args: cobra.MaximumNArgs(1), + Use: "create-allowlist-by-id ", + Short: "Allowlist Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -445,7 +469,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.GetSastFindingsFindingId(cmd.Context(), params) + result, err := client.CreateSastFindingsFindingIdAllowlist(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -466,13 +490,14 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "patch-findings ", - Short: "Update Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-activity ", + Short: "Get SAST Finding Autofix Activity", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "since-id": "since_id", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -493,13 +518,15 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.PatchSastFindingsFindingId(cmd.Context(), params, os.Stdin) + result, err := client.ListSastFindingsFindingIdAutofixActivity(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("since-id", "", "") + cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -514,9 +541,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-allowlist-by-id ", - Short: "Allowlist Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-diff ", + Short: "Get Finding Autofix Diff", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -541,7 +568,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateSastFindingsFindingIdAllowlist(cmd.Context(), params, os.Stdin) + result, err := client.ListSastFindingsFindingIdAutofixCacheDiff(cmd.Context(), params) if err != nil { return err } @@ -562,9 +589,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-cache-by-id ", - Short: "Post Cache AutoFix", - Args: cobra.MaximumNArgs(1), + Use: "create-fix-by-id ", + Short: "Post Finding AutoFix", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -589,7 +616,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateSastFindingsFindingIdAutofixCache(cmd.Context(), params, os.Stdin) + result, err := client.CreateSastFindingsFindingIdAutofixFix(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -610,9 +637,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-create_pr-by-id ", - Short: "Post Finding AutoFix", - Args: cobra.MaximumNArgs(1), + Use: "get-state ", + Short: "Get SAST Finding Autofix State", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -637,7 +664,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateSastFindingsFindingIdAutofixCacheCreatePr(cmd.Context(), params, os.Stdin) + result, err := client.ListSastFindingsFindingIdAutofixState(cmd.Context(), params) if err != nil { return err } @@ -658,9 +685,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-diff ", - Short: "Get Finding Autofix Diff", - Args: cobra.MaximumNArgs(1), + Use: "get-status ", + Short: "Get SAST Finding Autofix Status", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -685,7 +712,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.ListSastFindingsFindingIdAutofixCacheDiff(cmd.Context(), params) + result, err := client.ListSastFindingsFindingIdAutofixStatus(cmd.Context(), params) if err != nil { return err } @@ -706,9 +733,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-fix-by-id ", - Short: "Post Finding AutoFix", - Args: cobra.MaximumNArgs(1), + Use: "get-events ", + Short: "Get Finding Events", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -733,7 +760,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateSastFindingsFindingIdAutofixFix(cmd.Context(), params, os.Stdin) + result, err := client.ListSastFindingsFindingIdEvents(cmd.Context(), params) if err != nil { return err } @@ -754,9 +781,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-events ", - Short: "Get Finding Events", - Args: cobra.MaximumNArgs(1), + Use: "create-ticket-by-id ", + Short: "Create Ticket", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -781,7 +808,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.ListSastFindingsFindingIdEvents(cmd.Context(), params) + result, err := client.CreateSastFindingsFindingIdTicket(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -802,9 +829,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-ticket-by-id ", - Short: "Create Ticket", - Args: cobra.MaximumNArgs(1), + Use: "get-triage ", + Short: "Get Triaged Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -829,7 +856,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateSastFindingsFindingIdTicket(cmd.Context(), params, os.Stdin) + result, err := client.ListSastFindingsFindingIdTriage(cmd.Context(), params) if err != nil { return err } @@ -850,9 +877,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-triage ", - Short: "Get Triaged Finding", - Args: cobra.MaximumNArgs(1), + Use: "create-unallowlist-by-id ", + Short: "Unallowlist Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -877,7 +904,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.ListSastFindingsFindingIdTriage(cmd.Context(), params) + result, err := client.CreateSastFindingsFindingIdUnallowlist(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -898,9 +925,9 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-unallowlist-by-id ", - Short: "Unallowlist Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-users ", + Short: "Get Finding Users", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -925,7 +952,7 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateSastFindingsFindingIdUnallowlist(cmd.Context(), params, os.Stdin) + result, err := client.ListSastFindingsFindingIdUsers(cmd.Context(), params) if err != nil { return err } @@ -946,13 +973,13 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-users ", - Short: "Get Finding Users", - Args: cobra.MaximumNArgs(1), + Use: "list-repositories", + Short: "Get Repositories", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "next-token": "nextToken", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -970,16 +997,15 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - if len(args) > 0 { - params.Set("findingId", args[0]) - } - result, err := client.ListSastFindingsFindingIdUsers(cmd.Context(), params) + result, err := client.ListSastRepositories(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -994,13 +1020,13 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-repositories", - Short: "Get Repositories", + Use: "get-repositories ", + Short: "Get Repository Stats", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "next-token": "nextToken", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1018,15 +1044,16 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListSastRepositories(cmd.Context(), params) + if len(args) > 0 { + params.Set("repositoryId", args[0]) + } + result, err := client.GetSastRepositoriesRepositoryId(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("next-token", "", "") - cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1041,13 +1068,13 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-repositories ", - Short: "Get Repository Stats", - Args: cobra.MaximumNArgs(1), + Use: "list-scan-runs", + Short: "List Scan Runs", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "repository-id": "repositoryId", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1065,16 +1092,17 @@ func RegisterSastCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - if len(args) > 0 { - params.Set("repositoryId", args[0]) - } - result, err := client.GetSastRepositoriesRepositoryId(cmd.Context(), params) + result, err := client.ListSastScanRuns(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("repository-id", "", "Repository ID to list scan runs for") + cmd.Flags().String("limit", "", "Max scan runs per page (default 10, max 50)") + cmd.Flags().String("offset", "", "Pagination offset (default 0)") + cmd.Flags().String("sort", "", "Sort order by start time (default newest)") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") diff --git a/internal/commands/sca.go b/internal/commands/sca.go index f97aec9..00df9cb 100644 --- a/internal/commands/sca.go +++ b/internal/commands/sca.go @@ -20,7 +20,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-containers-findings", Short: "Get SCA Container Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -32,6 +32,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { "is-fixed": "isFixed", "is-allowlisted": "isAllowlisted", "is-resolved": "isResolved", + "auto-fix-state": "autoFixState", "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", @@ -67,6 +68,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { cmd.Flags().String("is-fixed", "", "") cmd.Flags().String("is-allowlisted", "", "") cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive and isAllowlisted") + cmd.Flags().String("auto-fix-state", "", "filter by AutoFixState (e.g. 'none' for findings with no cached fix)") cmd.Flags().String("sort-by", "", "") cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") @@ -83,7 +85,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-detailed", + Use: "list-containers-findings-detailed", Short: "Get SCA Container Findings [DEPRECATED - TO BE REMOVED BY 2025]", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -146,12 +148,20 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-fixIterate", - Short: "Post SCA Container Finding Fix Iterate", + Use: "list-containers-findings-preview", + Short: "Get SCA Container Findings Preview", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "next-token": "nextToken", + "file-owner-name": "fileOwnerName", + "is-false-positive": "isFalsePositive", + "is-fixed": "isFixed", + "is-allowlisted": "isAllowlisted", + "is-resolved": "isResolved", + "auto-fix-state": "autoFixState", + "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -169,13 +179,26 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateScaContainersFindingsFixIterate(cmd.Context(), params, os.Stdin) + result, err := client.ListScaContainersFindingsPreview(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("package", "", "") + cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("branch", "", "") + cmd.Flags().String("workflow", "", "") + cmd.Flags().String("is-false-positive", "", "") + cmd.Flags().String("is-fixed", "", "") + cmd.Flags().String("is-allowlisted", "", "") + cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive and isAllowlisted") + cmd.Flags().String("auto-fix-state", "", "filter by AutoFixState (e.g. 'none' for findings with no cached fix)") + cmd.Flags().String("sort-by", "", "") + cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -190,19 +213,13 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-preview", - Short: "Get SCA Container Findings Preview", + Use: "get-containers-findings ", + Short: "Get Container Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "next-token": "nextToken", - "file-owner-name": "fileOwnerName", - "is-false-positive": "isFalsePositive", - "is-fixed": "isFixed", - "is-allowlisted": "isAllowlisted", - "is-resolved": "isResolved", - "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -220,25 +237,16 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListScaContainersFindingsPreview(cmd.Context(), params) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.GetScaContainersFindingsFindingId(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("next-token", "", "") - cmd.Flags().String("limit", "", "") - cmd.Flags().String("package", "", "") - cmd.Flags().String("file-owner-name", "", "") - cmd.Flags().String("branch", "", "") - cmd.Flags().String("workflow", "", "") - cmd.Flags().String("is-false-positive", "", "") - cmd.Flags().String("is-fixed", "", "") - cmd.Flags().String("is-allowlisted", "", "") - cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive and isAllowlisted") - cmd.Flags().String("sort-by", "", "") - cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -253,9 +261,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-findings ", - Short: "Get Container Finding", - Args: cobra.MaximumNArgs(1), + Use: "patch-containers-findings ", + Short: "Update Container Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -280,7 +288,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.GetScaContainersFindingsFindingId(cmd.Context(), params) + result, err := client.PatchScaContainersFindingsFindingId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -301,9 +309,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "patch-findings ", - Short: "Update Container Finding", - Args: cobra.MaximumNArgs(1), + Use: "create-containers-findings-allowlist-by-id ", + Short: "Allowlist Container Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -328,7 +336,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.PatchScaContainersFindingsFindingId(cmd.Context(), params, os.Stdin) + result, err := client.CreateScaContainersFindingsFindingIdAllowlist(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -349,13 +357,14 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-allowlist-by-id ", - Short: "Allowlist Container Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-containers-findings-autofix-activity ", + Short: "Get SCA Container Finding Autofix Activity", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "since-id": "since_id", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -376,13 +385,15 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateScaContainersFindingsFindingIdAllowlist(cmd.Context(), params, os.Stdin) + result, err := client.ListScaContainersFindingsFindingIdAutofixActivity(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("since-id", "", "") + cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -397,9 +408,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-fix-by-id ", + Use: "create-containers-findings-autofix-fix-by-id ", Short: "Fix Container Findings", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -445,9 +456,105 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-containers-findings-autofix-state ", + Short: "Get Container Finding Autofix State", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScaContainersFindingsFindingIdAutofixState(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-containers-findings-autofix-status ", + Short: "Get Container Finding Autofix Status", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScaContainersFindingsFindingIdAutofixStatus(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-containers-findings-events ", Short: "Get SCA Container Finding Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -493,9 +600,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-ticket-by-id ", + Use: "create-containers-findings-ticket-by-id ", Short: "Create Jira Ticket", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -541,9 +648,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-triage ", + Use: "get-containers-findings-triage ", Short: "Get Triaged Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -589,9 +696,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-unallowlist-by-id ", + Use: "create-containers-findings-unallowlist-by-id ", Short: "Unallowlist Container Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -637,9 +744,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-users ", + Use: "get-containers-findings-users ", Short: "Get Finding Related Users", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -685,7 +792,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-dependencies-findings", Short: "Get SCA Dependency Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -697,6 +804,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { "is-fixed": "isFixed", "is-allowlisted": "isAllowlisted", "is-resolved": "isResolved", + "auto-fix-state": "autoFixState", "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", @@ -732,6 +840,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { cmd.Flags().String("is-fixed", "", "") cmd.Flags().String("is-allowlisted", "", "") cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive and isAllowlisted") + cmd.Flags().String("auto-fix-state", "", "filter by AutoFixState (e.g. 'none' for findings with no cached fix)") cmd.Flags().String("sort-by", "", "") cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") @@ -748,7 +857,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-detailed", + Use: "list-dependencies-findings-detailed", Short: "Get SCA Dependency Findings Detailed [DEPRECATED - TO BE REMOVED BY 2025]", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -811,8 +920,74 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-fixIterate", - Short: "Post Finding Fix Iterate", + Use: "list-dependencies-findings-preview", + Short: "Get SCA Dependency Findings Preview", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "next-token": "nextToken", + "file-owner-name": "fileOwnerName", + "is-false-positive": "isFalsePositive", + "is-fixed": "isFixed", + "is-allowlisted": "isAllowlisted", + "is-resolved": "isResolved", + "auto-fix-state": "autoFixState", + "sort-by": "sortBy", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListScaDependenciesFindingsPreview(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("package", "", "") + cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("branch", "", "") + cmd.Flags().String("workflow", "", "") + cmd.Flags().String("is-false-positive", "", "") + cmd.Flags().String("is-fixed", "", "") + cmd.Flags().String("is-allowlisted", "", "") + cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive and isAllowlisted") + cmd.Flags().String("auto-fix-state", "", "filter by AutoFixState (e.g. 'none' for findings with no cached fix)") + cmd.Flags().String("sort-by", "", "") + cmd.Flags().String("sort", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-dependencies-findings ", + Short: "Get Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -834,7 +1009,10 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.CreateScaDependenciesFindingsFixIterate(cmd.Context(), params, os.Stdin) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.GetScaDependenciesFindingsFindingId(cmd.Context(), params) if err != nil { return err } @@ -855,19 +1033,13 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "list-preview", - Short: "Get SCA Dependency Findings Preview", + Use: "patch-dependencies-findings ", + Short: "Update Dependencies Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ - "next-token": "nextToken", - "file-owner-name": "fileOwnerName", - "is-false-positive": "isFalsePositive", - "is-fixed": "isFixed", - "is-allowlisted": "isAllowlisted", - "is-resolved": "isResolved", - "sort-by": "sortBy", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -885,25 +1057,16 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { params.Set(f.Name, f.Value.String()) } }) - result, err := client.ListScaDependenciesFindingsPreview(cmd.Context(), params) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.PatchScaDependenciesFindingsFindingId(cmd.Context(), params, os.Stdin) if err != nil { return err } return output.Print(cmd, result) }, } - cmd.Flags().String("next-token", "", "") - cmd.Flags().String("limit", "", "") - cmd.Flags().String("package", "", "") - cmd.Flags().String("file-owner-name", "", "") - cmd.Flags().String("branch", "", "") - cmd.Flags().String("workflow", "", "") - cmd.Flags().String("is-false-positive", "", "") - cmd.Flags().String("is-fixed", "", "") - cmd.Flags().String("is-allowlisted", "", "") - cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive and isAllowlisted") - cmd.Flags().String("sort-by", "", "") - cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -918,9 +1081,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-create_pr-by-id ", - Short: "Create Pull Request for Dependency Finding", - Args: cobra.MaximumNArgs(1), + Use: "create-dependencies-findings-allowlist-by-id ", + Short: "Allowlist Dependency Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -943,9 +1106,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { } }) if len(args) > 0 { - params.Set("findingID", args[0]) + params.Set("findingId", args[0]) } - result, err := client.CreateScaDependenciesFindingsFindingIDAutofixCacheCreatePr(cmd.Context(), params) + result, err := client.CreateScaDependenciesFindingsFindingIdAllowlist(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -966,13 +1129,14 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-findings ", - Short: "Get Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-dependencies-findings-autofix-activity ", + Short: "Get SCA Dependency Finding Autofix Activity", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} flagMap := map[string]string{ + "since-id": "since_id", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -993,13 +1157,15 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.GetScaDependenciesFindingsFindingId(cmd.Context(), params) + result, err := client.ListScaDependenciesFindingsFindingIdAutofixActivity(cmd.Context(), params) if err != nil { return err } return output.Print(cmd, result) }, } + cmd.Flags().String("since-id", "", "") + cmd.Flags().String("limit", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") cmd.Flags().String("github-owner-id", "", "The Github owner ID") @@ -1014,9 +1180,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "patch-findings ", - Short: "Update Dependencies Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-diff ", + Short: "Get SCA Dependency Finding Fix", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1041,7 +1207,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.PatchScaDependenciesFindingsFindingId(cmd.Context(), params, os.Stdin) + result, err := client.ListScaDependenciesFindingsFindingIdAutofixCacheDiff(cmd.Context(), params) if err != nil { return err } @@ -1062,9 +1228,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-allowlist-by-id ", - Short: "Allowlist Dependency Finding", - Args: cobra.MaximumNArgs(1), + Use: "create-dependencies-findings-autofix-fix-by-id ", + Short: "Fix Dependency Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1089,7 +1255,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateScaDependenciesFindingsFindingIdAllowlist(cmd.Context(), params, os.Stdin) + result, err := client.CreateScaDependenciesFindingsFindingIdAutofixFix(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1110,9 +1276,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-diff ", - Short: "Get SCA Dependency Finding Fix", - Args: cobra.MaximumNArgs(1), + Use: "get-dependencies-findings-autofix-state ", + Short: "Get Dependency Finding Autofix State", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1137,7 +1303,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.ListScaDependenciesFindingsFindingIdAutofixCacheDiff(cmd.Context(), params) + result, err := client.ListScaDependenciesFindingsFindingIdAutofixState(cmd.Context(), params) if err != nil { return err } @@ -1158,9 +1324,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-fix-by-id ", - Short: "Fix Dependency Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-dependencies-findings-autofix-status ", + Short: "Get Dependency Finding Autofix Status", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1185,7 +1351,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.CreateScaDependenciesFindingsFindingIdAutofixFix(cmd.Context(), params, os.Stdin) + result, err := client.ListScaDependenciesFindingsFindingIdAutofixStatus(cmd.Context(), params) if err != nil { return err } @@ -1206,9 +1372,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-dependencies-findings-events ", Short: "Get SCA Dependency Finding Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1254,9 +1420,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-ticket-by-id ", + Use: "create-dependencies-findings-ticket-by-id ", Short: "Create Jira Ticket", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1302,9 +1468,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-triage ", + Use: "get-dependencies-findings-triage ", Short: "Get Triaged Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1350,9 +1516,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "create-unallowlist-by-id ", + Use: "create-dependencies-findings-unallowlist-by-id ", Short: "Unallowlist Dependency Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1398,9 +1564,9 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { { cmd := &cobra.Command{ - Use: "get-users ", + Use: "get-dependencies-findings-users ", Short: "Get Finding Related Users", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1456,6 +1622,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { "from-time": "fromTime", "event-type": "eventType", "file-owner-name": "fileOwnerName", + "finding-id": "findingId", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -1485,6 +1652,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { cmd.Flags().String("from-time", "", "") cmd.Flags().String("event-type", "", "") cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("finding-id", "", "") cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") @@ -1549,7 +1717,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-repositories ", Short: "Get Repository Stats", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1597,7 +1765,7 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { cmd := &cobra.Command{ Use: "get-sbom ", Short: "Get Repository SBOM", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1641,4 +1809,55 @@ func RegisterScaCommands(parent *cobra.Command, getClient func() *api.Client) { serviceCmd.AddCommand(cmd) } + { + cmd := &cobra.Command{ + Use: "list-scan-runs", + Short: "List Scan Runs", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "repository-id": "repositoryId", + "scan-type": "scanType", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListScaScanRuns(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("repository-id", "", "Repository ID to list scan runs for") + cmd.Flags().String("scan-type", "", "SCA scan type") + cmd.Flags().String("limit", "", "Max scan runs per page (default 10, max 50)") + cmd.Flags().String("offset", "", "Pagination offset (default 0)") + cmd.Flags().String("sort", "", "Sort order by start time (default newest)") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + } diff --git a/internal/commands/scpm.go b/internal/commands/scpm.go new file mode 100644 index 0000000..a1d3826 --- /dev/null +++ b/internal/commands/scpm.go @@ -0,0 +1,1119 @@ +// Code generated by scripts/generate/main.go. DO NOT EDIT. +package commands + +import ( + "net/url" + "os" + + "github.com/nullify-platform/cli/internal/api" + "github.com/nullify-platform/cli/internal/output" + "github.com/spf13/cobra" + "github.com/spf13/pflag" +) + +func RegisterScpmCommands(parent *cobra.Command, getClient func() *api.Client) { + serviceCmd := &cobra.Command{ + Use: "scpm", + Short: "SaaS Security Posture Management (SCPM)", + } + parent.AddCommand(serviceCmd) + + { + cmd := &cobra.Command{ + Use: "create-containers-analyze", + Short: "Request malware analysis for an OCI container image", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + cmd.Flags().Visit(func(f *pflag.Flag) { + params.Set(f.Name, f.Value.String()) + }) + result, err := client.CreateScpmContainersAnalyze(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-dependencies", + Short: "Get CI/CD Dependencies", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + cmd.Flags().Visit(func(f *pflag.Flag) { + params.Set(f.Name, f.Value.String()) + }) + result, err := client.ListScpmDependencies(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("name", "", "Filter by dependency name (e.g., actions/checkout, tj-actions/changed-files)") + cmd.Flags().String("version", "", "Filter by version reference (requires name)") + cmd.Flags().String("platform", "", "Filter by CI/CD platform (github-actions, gitlab-ci, azure-pipelines)") + cmd.Flags().String("pinned", "", "Filter by pinned status") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-dependencies-analyze", + Short: "Request malware analysis for a dependency", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + cmd.Flags().Visit(func(f *pflag.Flag) { + params.Set(f.Name, f.Value.String()) + }) + result, err := client.CreateScpmDependenciesAnalyze(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-batch", + Short: "Batch query vulnerabilities + malware verdict for dependencies", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + cmd.Flags().Visit(func(f *pflag.Flag) { + params.Set(f.Name, f.Value.String()) + }) + result, err := client.CreateScpmDependenciesQueryBatch(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-events", + Short: "Get SCPM Events", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListScpmEvents(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-findings", + Short: "Get SCPM Findings", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "next-token": "nextToken", + "priority-label": "priorityLabel", + "file-owner-name": "fileOwnerName", + "has-pull-request": "hasPullRequest", + "repository-ids": "repositoryIds", + "is-resolved": "isResolved", + "is-fixed": "isFixed", + "is-false-positive": "isFalsePositive", + "is-allowlisted": "isAllowlisted", + "is-archived": "isArchived", + "sort-by": "sortBy", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListScpmFindings(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("priority-label", "", "") + cmd.Flags().String("severity", "", "") + cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("has-pull-request", "", "") + cmd.Flags().String("branch", "", "") + cmd.Flags().String("workflow", "", "") + cmd.Flags().String("repository-ids", "", "if not provided, all repositories will be included") + cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive, isAllowlisted and isArchived") + cmd.Flags().String("is-fixed", "", "") + cmd.Flags().String("is-false-positive", "", "") + cmd.Flags().String("is-allowlisted", "", "") + cmd.Flags().String("is-archived", "", "") + cmd.Flags().String("sort-by", "", "") + cmd.Flags().String("sort", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-allowlist", + Short: "Allowlist Batch of SCPM Findings", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateScpmFindingsAllowlist(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-detailed", + Short: "Get Findings Detailed", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "next-token": "nextToken", + "priority-label": "priorityLabel", + "file-owner-name": "fileOwnerName", + "has-pull-request": "hasPullRequest", + "is-resolved": "isResolved", + "is-fixed": "isFixed", + "is-false-positive": "isFalsePositive", + "is-allowlisted": "isAllowlisted", + "is-archived": "isArchived", + "sort-by": "sortBy", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListScpmFindingsDetailed(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("priority-label", "", "") + cmd.Flags().String("severity", "", "") + cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("has-pull-request", "", "") + cmd.Flags().String("branch", "", "") + cmd.Flags().String("workflow", "", "") + cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive, isAllowlisted and isArchived") + cmd.Flags().String("is-fixed", "", "") + cmd.Flags().String("is-false-positive", "", "") + cmd.Flags().String("is-allowlisted", "", "") + cmd.Flags().String("is-archived", "", "") + cmd.Flags().String("sort-by", "", "") + cmd.Flags().String("sort", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-preview", + Short: "Get SCPM Findings", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "next-token": "nextToken", + "priority-label": "priorityLabel", + "file-owner-name": "fileOwnerName", + "has-pull-request": "hasPullRequest", + "repository-ids": "repositoryIds", + "is-resolved": "isResolved", + "is-fixed": "isFixed", + "is-false-positive": "isFalsePositive", + "is-allowlisted": "isAllowlisted", + "is-archived": "isArchived", + "sort-by": "sortBy", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListScpmFindingsPreview(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("next-token", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("priority-label", "", "") + cmd.Flags().String("severity", "", "") + cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("has-pull-request", "", "") + cmd.Flags().String("branch", "", "") + cmd.Flags().String("workflow", "", "") + cmd.Flags().String("repository-ids", "", "if not provided, all repositories will be included") + cmd.Flags().String("is-resolved", "", "combination of isFixed, isFalsePositive, isAllowlisted and isArchived") + cmd.Flags().String("is-fixed", "", "") + cmd.Flags().String("is-false-positive", "", "") + cmd.Flags().String("is-allowlisted", "", "") + cmd.Flags().String("is-archived", "", "") + cmd.Flags().String("sort-by", "", "") + cmd.Flags().String("sort", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-retriage", + Short: "Retriage Findings", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateScpmFindingsRetriage(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-upload", + Short: "Get Presigned URL to Upload SCPM Findings", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.CreateScpmFindingsUpload(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-findings ", + Short: "Get Finding", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.GetScpmFindingsFindingId(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "patch-findings ", + Short: "Update Finding", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.PatchScpmFindingsFindingId(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-allowlist-by-id ", + Short: "Allowlist Finding", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.CreateScpmFindingsFindingIdAllowlist(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-activity ", + Short: "Get SCPM Finding Autofix Activity", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "since-id": "since_id", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScpmFindingsFindingIdAutofixActivity(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("since-id", "", "") + cmd.Flags().String("limit", "", "") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-cache-by-id ", + Short: "Cache Autofix", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.CreateScpmFindingsFindingIdAutofixCache(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-create_pr-by-id ", + Short: "Create Pull Request from Cached Fix", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.CreateScpmFindingsFindingIdAutofixCacheCreatePr(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-diff ", + Short: "Get SCPM Finding Autofix Diff", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScpmFindingsFindingIdAutofixCacheDiff(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-fix-by-id ", + Short: "Autofix Finding", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.CreateScpmFindingsFindingIdAutofixFix(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-state ", + Short: "Get SCPM Finding Autofix State", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScpmFindingsFindingIdAutofixState(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-status ", + Short: "Get SCPM Finding Autofix Status", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScpmFindingsFindingIdAutofixStatus(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-events ", + Short: "Get Finding Events", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScpmFindingsFindingIdEvents(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "get-triage ", + Short: "Get Triaged Finding", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.ListScpmFindingsFindingIdTriage(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "create-unallowlist-by-id ", + Short: "Unallowlist Finding", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + if len(args) > 0 { + params.Set("findingId", args[0]) + } + result, err := client.CreateScpmFindingsFindingIdUnallowlist(cmd.Context(), params, os.Stdin) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + +} diff --git a/internal/commands/secrets.go b/internal/commands/secrets.go index 13c487a..c2a7a36 100644 --- a/internal/commands/secrets.go +++ b/internal/commands/secrets.go @@ -20,7 +20,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-credentials-findings", Short: "Get Secrets Credential Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -81,7 +81,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-batch", + Use: "create-credentials-findings-allowlist-batch", Short: "Allowlist Batch of Credential Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -125,7 +125,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-detailed", + Use: "list-credentials-findings-detailed", Short: "Get Secrets Credential Findings Detailed", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -186,9 +186,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "patch-findings ", - Short: "Update Credential Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-credentials-findings ", + Short: "Get Credential Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -213,7 +213,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.PatchSecretsCredentialsFindingsFindingId(cmd.Context(), params, os.Stdin) + result, err := client.GetSecretsCredentialsFindingsFindingId(cmd.Context(), params) if err != nil { return err } @@ -234,9 +234,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-findings ", - Short: "Get Credential Finding", - Args: cobra.MaximumNArgs(1), + Use: "patch-credentials-findings ", + Short: "Update Credential Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -261,7 +261,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.GetSecretsCredentialsFindingsFindingId(cmd.Context(), params) + result, err := client.PatchSecretsCredentialsFindingsFindingId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -282,9 +282,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-allowlist-by-id ", + Use: "create-credentials-findings-allowlist-by-id ", Short: "Allowlist Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -330,9 +330,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-credentials-findings-events ", Short: "Get Finding Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -378,9 +378,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-ticket-by-id ", + Use: "create-credentials-findings-ticket-by-id ", Short: "Create Ticket for Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -426,9 +426,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-triage ", + Use: "get-credentials-findings-triage ", Short: "Get Triaged Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -474,9 +474,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-unallowlist-by-id ", + Use: "create-credentials-findings-unallowlist-by-id ", Short: "Unallowlist Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -522,9 +522,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-users ", + Use: "get-credentials-findings-users ", Short: "Get Credential Finding Related Users", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -581,6 +581,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client "num-items": "numItems", "event-type": "eventType", "file-owner-name": "fileOwnerName", + "finding-id": "findingId", "azure-organization-id": "azureOrganizationId", "bitbucket-workspace-id": "bitbucketWorkspaceId", "github-owner-id": "githubOwnerId", @@ -612,6 +613,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client cmd.Flags().String("num-items", "", "") cmd.Flags().String("event-type", "", "") cmd.Flags().String("file-owner-name", "", "") + cmd.Flags().String("finding-id", "", "") cmd.Flags().String("sort", "", "") cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") @@ -688,7 +690,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-batch", + Use: "create-findings-allowlist-batch", Short: "Allowlist Batch of Credential Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -732,7 +734,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-detailed", + Use: "list-findings-detailed", Short: "Get Secrets Credential Findings Detailed - [DEPRECATED - TO BE REMOVED BY 2025]", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -854,9 +856,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "patch-findings ", - Short: "Update Credential Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-findings ", + Short: "Get Credential Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -881,7 +883,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.PatchSecretsFindingsFindingId(cmd.Context(), params, os.Stdin) + result, err := client.GetSecretsFindingsFindingId(cmd.Context(), params) if err != nil { return err } @@ -902,9 +904,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-findings ", - Short: "Get Credential Finding", - Args: cobra.MaximumNArgs(1), + Use: "patch-findings ", + Short: "Update Credential Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -929,7 +931,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.GetSecretsFindingsFindingId(cmd.Context(), params) + result, err := client.PatchSecretsFindingsFindingId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -950,9 +952,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-allowlist-by-id ", + Use: "create-findings-allowlist-by-id ", Short: "Allowlist Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -998,9 +1000,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-events ", + Use: "get-findings-events ", Short: "Get Finding Events", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1046,9 +1048,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-ticket-by-id ", + Use: "create-findings-ticket-by-id ", Short: "Create Ticket for Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1094,9 +1096,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-triage ", + Use: "get-findings-triage ", Short: "Get Triaged Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1142,9 +1144,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-unallowlist-by-id ", + Use: "create-findings-unallowlist-by-id ", Short: "Unallowlist Credential Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1190,9 +1192,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-users ", + Use: "get-findings-users ", Short: "Get Credential Finding Related Users", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1238,7 +1240,56 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "list-findings", + Use: "list-scan-runs", + Short: "List Scan Runs", + RunE: func(cmd *cobra.Command, args []string) error { + client := getClient() + params := url.Values{} + flagMap := map[string]string{ + "repository-id": "repositoryId", + "azure-organization-id": "azureOrganizationId", + "bitbucket-workspace-id": "bitbucketWorkspaceId", + "github-owner-id": "githubOwnerId", + "gitlab-group-id": "gitlabGroupId", + "installation-id": "installationId", + "azure-repository-id": "azureRepositoryId", + "github-repository-id": "githubRepositoryId", + "github-team-id": "githubTeamId", + "bitbucket-repository-id": "bitbucketRepositoryId", + } + cmd.Flags().Visit(func(f *pflag.Flag) { + if apiName, ok := flagMap[f.Name]; ok { + params.Set(apiName, f.Value.String()) + } else { + params.Set(f.Name, f.Value.String()) + } + }) + result, err := client.ListSecretsScanRuns(cmd.Context(), params) + if err != nil { + return err + } + return output.Print(cmd, result) + }, + } + cmd.Flags().String("repository-id", "", "Repository ID to list scan runs for") + cmd.Flags().String("limit", "", "Max scan runs per page (default 10, max 50)") + cmd.Flags().String("offset", "", "Pagination offset (default 0)") + cmd.Flags().String("sort", "", "Sort order by start time (default newest)") + cmd.Flags().String("azure-organization-id", "", "The Azure organization ID") + cmd.Flags().String("bitbucket-workspace-id", "", "The Bitbucket workspace ID") + cmd.Flags().String("github-owner-id", "", "The Github owner ID") + cmd.Flags().String("gitlab-group-id", "", "The GitLab group ID") + cmd.Flags().String("installation-id", "", "The Nullify installation ID") + cmd.Flags().String("azure-repository-id", "", "Filter by Azure repository IDs") + cmd.Flags().String("github-repository-id", "", "Filter by GitHub repository IDs") + cmd.Flags().String("github-team-id", "", "Filter by GitHub team ID") + cmd.Flags().String("bitbucket-repository-id", "", "Filter by Bitbucket repository IDs") + serviceCmd.AddCommand(cmd) + } + + { + cmd := &cobra.Command{ + Use: "list-sensitivedata-findings", Short: "Get Sensitive Data Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -1299,7 +1350,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-batch", + Use: "create-sensitivedata-findings-allowlist-batch", Short: "Allowlist Batch of Sensitive Data Findings", RunE: func(cmd *cobra.Command, args []string) error { client := getClient() @@ -1343,9 +1394,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "patch-findings ", - Short: "Update Sensitive Data Finding", - Args: cobra.MaximumNArgs(1), + Use: "get-sensitivedata-findings ", + Short: "Get Sensitive Data Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1370,7 +1421,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.PatchSecretsSensitivedataFindingsFindingId(cmd.Context(), params, os.Stdin) + result, err := client.GetSecretsSensitivedataFindingsFindingId(cmd.Context(), params) if err != nil { return err } @@ -1391,9 +1442,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-findings ", - Short: "Get Sensitive Data Finding", - Args: cobra.MaximumNArgs(1), + Use: "patch-sensitivedata-findings ", + Short: "Update Sensitive Data Finding", + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1418,7 +1469,7 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client if len(args) > 0 { params.Set("findingId", args[0]) } - result, err := client.GetSecretsSensitivedataFindingsFindingId(cmd.Context(), params) + result, err := client.PatchSecretsSensitivedataFindingsFindingId(cmd.Context(), params, os.Stdin) if err != nil { return err } @@ -1439,9 +1490,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-allowlist-by-id ", + Use: "create-sensitivedata-findings-allowlist-by-id ", Short: "Allowlist Sensitive Data Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1487,9 +1538,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-ticket-by-id ", + Use: "create-sensitivedata-findings-ticket-by-id ", Short: "Create Ticket for Sensitive Data Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1535,9 +1586,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-triage ", + Use: "get-sensitivedata-findings-triage ", Short: "Get Triaged Sensitive Data Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1583,9 +1634,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "create-unallowlist-by-id ", + Use: "create-sensitivedata-findings-unallowlist-by-id ", Short: "Unallowlist Sensitive Data Finding", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} @@ -1631,9 +1682,9 @@ func RegisterSecretsCommands(parent *cobra.Command, getClient func() *api.Client { cmd := &cobra.Command{ - Use: "get-users ", + Use: "get-sensitivedata-findings-users ", Short: "Get Sensitive Data Finding Related Users", - Args: cobra.MaximumNArgs(1), + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { client := getClient() params := url.Values{} diff --git a/scripts/generate/main.go b/scripts/generate/main.go index b4822b0..8ff406c 100644 --- a/scripts/generate/main.go +++ b/scripts/generate/main.go @@ -1,7 +1,8 @@ -// generate reads the merged OpenAPI spec and produces a typed Go API client -// and cobra command files for the CLI. +// generate reads the OpenAPI bundle and produces a typed Go API client and +// cobra command files for the CLI. The bundle is vendored at spec/ from a +// pinned monorepo commit (see `make fetch-spec`). // -// Usage: go run ./scripts/generate/main.go --spec ../public-docs/specs/merged-openapi.yml +// Usage: go run ./scripts/generate/main.go --spec spec/nullify-openapi-bundle.yaml package main import ( @@ -64,35 +65,57 @@ type Schema struct { Required []string `yaml:"required"` } -// Service grouping based on path prefix +// Service grouping based on path prefix. +// +// NOTE: prefixes are matched against the full request path, so any path whose +// prefix is absent here is silently dropped from the generated CLI. Keep this in +// sync with the services published in the OpenAPI bundle. var serviceMapping = map[string]string{ - "/sast/": "sast", - "/sca/": "sca", - "/secrets/": "secrets", - "/dast/": "dast", - "/admin/": "admin", - "/manager/": "manager", - "/context/": "context", - "/cspm/": "cspm", - "/ticket/": "ticket", + "/sast/": "sast", + "/sca/": "sca", + "/secrets/": "secrets", + "/dast/": "dast", + "/admin/": "admin", + "/manager/": "manager", + "/context/": "context", + "/cspm/": "cspm", + "/scpm/": "scpm", + "/orchestrator/": "orchestrator", + "/asset-graph/": "asset-graph", + "/infrastructure/": "infrastructure", + "/ticket/": "ticket", } // serviceDescriptions maps service names to human-readable descriptions. var serviceDescriptions = map[string]string{ - "sast": "Static Application Security Testing (SAST)", - "sca": "Software Composition Analysis (SCA)", - "secrets": "Secrets Detection", - "dast": "Dynamic Application Security Testing (DAST)", - "admin": "Administration and Metrics", - "manager": "Finding Lifecycle Management", - "context": "Repository and Code Classification", - "cspm": "Cloud Security Posture Management (CSPM)", - "ticket": "Ticket Integration", -} - -// Paths to exclude from CLI generation + "sast": "Static Application Security Testing (SAST)", + "sca": "Software Composition Analysis (SCA)", + "secrets": "Secrets Detection", + "dast": "Dynamic Application Security Testing (DAST)", + "admin": "Administration and Metrics", + "manager": "Finding Lifecycle Management", + "context": "Repository and Code Classification", + "cspm": "Cloud Security Posture Management (CSPM)", + "scpm": "SaaS Security Posture Management (SCPM)", + "orchestrator": "Scan Orchestration (autofix batches, code reviews, retriage, onboarding)", + "asset-graph": "Asset Graph (reachability, search, subgraph, summary)", + "infrastructure": "Infrastructure Graphs", + "ticket": "Ticket Integration", +} + +// Paths to exclude from CLI generation. +// +// Prefer this list over silent absence from serviceMapping: a path whose prefix +// is in neither map is dropped anyway, but listing it here records the intent +// so a future spec audit doesn't rediscover it as a "missing service". +// These are all paths the published bundle does carry but that aren't useful +// CLI commands: /auth/* are the auth handshake endpoints (access/refresh/github +// tokens, logout) the CLI drives through internal/auth, and /core/{bitbucket,jira}/* +// are integration webhooks/descriptors. Genuinely internal endpoints are kept +// out of the published bundle at the source (each service's openapi-public.yml), +// so they never reach here. var excludePrefixes = []string{ - "/internal/", + "/auth/", "/core/bitbucket/", "/core/jira/", } @@ -110,10 +133,11 @@ type Endpoint struct { FuncName string CobraCmd string CobraPath string + CobraUse string // unique command name within its service (collision-disambiguated) } func main() { - specPath := "../public-docs/specs/merged-openapi.yml" + specPath := "spec/nullify-openapi-bundle.yaml" outputDir := "internal/api" cmdOutputDir := "internal/commands" @@ -144,6 +168,7 @@ func main() { endpoints := extractEndpoints(spec) grouped := groupByService(endpoints) + assignCobraUses(grouped) if err := os.MkdirAll(outputDir, 0755); err != nil { fmt.Fprintf(os.Stderr, "Error creating output dir: %v\n", err) @@ -216,11 +241,18 @@ func extractEndpoints(spec OpenAPISpec) []Endpoint { } } + // Sort fully deterministically. The spec's paths/methods are decoded from YAML + // maps (random iteration order), so we must tie-break all the way down to the + // method; otherwise two operations on the same path can swap order between runs + // and produce spurious regeneration diffs (flaky drift checks). sort.Slice(endpoints, func(i, j int) bool { if endpoints[i].Service != endpoints[j].Service { return endpoints[i].Service < endpoints[j].Service } - return endpoints[i].Path < endpoints[j].Path + if endpoints[i].Path != endpoints[j].Path { + return endpoints[i].Path < endpoints[j].Path + } + return endpoints[i].Method < endpoints[j].Method }) return endpoints @@ -559,7 +591,7 @@ func generateCommandFile(outputDir string, service string, endpoints []Endpoint) fmt.Fprintf(&sb, "\tserviceCmd := &cobra.Command{\n\t\tUse: %q,\n\t\tShort: %q,\n\t}\n\tparent.AddCommand(serviceCmd)\n\n", service, svcDesc) for _, ep := range endpoints { - cobraUse := generateCobraUse(ep) + cobraUse := ep.CobraUse summary := strings.ReplaceAll(ep.Summary, `"`, `\"`) // Collect path params in URL order (the OpenAPI parameters list is @@ -581,7 +613,9 @@ func generateCommandFile(outputDir string, service string, endpoints []Endpoint) fmt.Fprintf(&sb, "\t\tcmd := &cobra.Command{\n\t\t\tUse: %q,\n\t\t\tShort: %q,\n", useStr, summary) if len(pathParamNames) > 0 { - fmt.Fprintf(&sb, "\t\t\tArgs: cobra.MaximumNArgs(%d),\n", len(pathParamNames)) + // Path parameters are required; enforce exactly N positional args so a + // missing arg fails clearly instead of producing a malformed URL. + fmt.Fprintf(&sb, "\t\t\tArgs: cobra.ExactArgs(%d),\n", len(pathParamNames)) } sb.WriteString("\t\t\tRunE: func(cmd *cobra.Command, args []string) error {\n") @@ -643,54 +677,104 @@ func generateCommandFile(outputDir string, service string, endpoints []Endpoint) } } -func generateCobraUse(ep Endpoint) string { - // Extract the last meaningful segment as the command name - parts := strings.Split(ep.Path, "/") - var lastNonParam string - for i := len(parts) - 1; i >= 0; i-- { - if parts[i] != "" && !strings.HasPrefix(parts[i], "{") { - lastNonParam = parts[i] - break - } - } - - // Determine action from HTTP method - action := "" - hasID := false - for _, part := range parts { - if strings.HasPrefix(part, "{") { - hasID = true +// pathSegments returns the non-empty, non-parameter segments of a path. +func pathSegments(path string) []string { + var segs []string + for _, part := range strings.Split(path, "/") { + if part == "" || strings.HasPrefix(part, "{") { + continue } + segs = append(segs, part) } + return segs +} +// cobraAction maps an HTTP method (and whether the path has a path parameter) to +// the verb prefix used in command names. +func cobraAction(ep Endpoint) string { + hasID := len(extractPathParamNames(ep.Path)) > 0 switch ep.Method { case "GET": if hasID { - action = "get" - } else { - action = "list" + return "get" } + return "list" case "POST": - action = "create" + return "create" case "PUT": - action = "update" + return "update" case "PATCH": - action = "patch" + return "patch" case "DELETE": - action = "delete" + return "delete" } + return "" +} - if lastNonParam == "" { +// generateCobraUse builds the short command name from the action and the last +// meaningful path segment (e.g. GET /sast/findings -> "list-findings"). It can +// collide across endpoints that differ only by an intermediate segment +// (e.g. /dast/pentest/scans and /dast/bughunt/scans both -> "list-scans"); +// assignCobraUses disambiguates those. +func generateCobraUse(ep Endpoint) string { + segs := pathSegments(ep.Path) + action := cobraAction(ep) + if len(segs) == 0 { return action } - - name := fmt.Sprintf("%s-%s", action, lastNonParam) - - // When hasID is true and method is POST, append "-by-id" to avoid collisions - // with batch endpoints (e.g., POST /findings/allowlist vs POST /findings/{id}/allowlist) - if hasID && ep.Method == "POST" { + name := fmt.Sprintf("%s-%s", action, segs[len(segs)-1]) + // When the path has a parameter and method is POST, append "-by-id" to avoid + // collisions with batch endpoints (e.g. POST /findings/allowlist vs + // POST /findings/{id}/allowlist). + if len(extractPathParamNames(ep.Path)) > 0 && ep.Method == "POST" { name += "-by-id" } + return name +} +// disambiguatedUse builds a fully-qualified command name from every non-service +// path segment, used when the short name collides with another endpoint in the +// same service (e.g. /dast/pentest/scans -> "list-pentest-scans"). +func disambiguatedUse(ep Endpoint) string { + segs := pathSegments(ep.Path) + // Drop the leading service segment; the service is already the cobra parent. + if len(segs) > 1 { + segs = segs[1:] + } + action := cobraAction(ep) + name := action + "-" + strings.Join(segs, "-") + if len(extractPathParamNames(ep.Path)) > 0 && ep.Method == "POST" { + name += "-by-id" + } return name } + +// assignCobraUses sets a unique CobraUse on every endpoint within each service. +// Non-colliding endpoints keep the short name; colliding ones are expanded to +// include their distinguishing path segments, and any residual duplicates get a +// numeric suffix as a last resort. This guarantees no two commands under one +// service parent share a Use (which would silently shadow each other in cobra). +func assignCobraUses(grouped map[string][]Endpoint) { + for _, endpoints := range grouped { + base := make([]string, len(endpoints)) + counts := map[string]int{} + for i := range endpoints { + base[i] = generateCobraUse(endpoints[i]) + counts[base[i]]++ + } + seen := map[string]int{} + for i := range endpoints { + use := base[i] + if counts[use] > 1 { + use = disambiguatedUse(endpoints[i]) + } + if n := seen[use]; n > 0 { + seen[use] = n + 1 + use = fmt.Sprintf("%s-%d", use, n+1) + } else { + seen[use] = 1 + } + endpoints[i].CobraUse = use + } + } +} diff --git a/spec/nullify-openapi-bundle.yaml b/spec/nullify-openapi-bundle.yaml new file mode 100644 index 0000000..eab653e --- /dev/null +++ b/spec/nullify-openapi-bundle.yaml @@ -0,0 +1,75629 @@ +openapi: 3.0.3 +info: + title: Nullify API + version: 1.0.0 + description: Nullify REST API for enterprise tenants. All requests require a service-account bearer token. +servers: + - url: https://api..nullify.ai + description: Your single-tenant Nullify API endpoint +tags: [] +paths: + /admin/assessments/scan-coverage: + get: + description: Returns scan coverage data per repository for a given scanner type + parameters: + - description: Scanner type + in: query + name: type + required: true + schema: + description: Scanner type + enum: + - sast + - sca_dependencies + - sca_containers + - secrets + type: string + - description: Max repos per page (default 50) + in: query + name: limit + schema: + description: Max repos per page (default 50) + nullable: true + type: integer + - description: Pagination offset (default 0) + in: query + name: offset + schema: + description: Pagination offset (default 0) + nullable: true + type: integer + - description: Case-insensitive substring filter on repository name or owner + in: query + name: search + schema: + description: Case-insensitive substring filter on repository name or owner + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetScanCoverageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Scan Coverage + /admin/assessments/scan-coverage/findings: + get: + description: Returns individual findings for a repository in the scan coverage context + parameters: + - description: Scanner type + in: query + name: type + required: true + schema: + description: Scanner type + enum: + - sast + - sca_dependencies + - sca_containers + - secrets + type: string + - description: Repository ID to drill into + in: query + name: repositoryId + required: true + schema: + description: Repository ID to drill into + type: string + - description: Max findings per page (default 50, max 500) + in: query + name: limit + schema: + description: Max findings per page (default 50, max 500) + nullable: true + type: integer + - description: Pagination offset (default 0) + in: query + name: offset + schema: + description: Pagination offset (default 0) + nullable: true + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetScanCoverageFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Scan Coverage Findings + /admin/checklist: + get: + description: Get a checklist of post-install items + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminChecklistOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Checklist + /admin/context/ingest: + post: + description: Returns scoped STS credentials for uploading context data to S3 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsContextIngestInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsContextIngestOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Context Upload Credentials + /admin/events: + post: + description: Cross-service unified event feed with filtering and cursor pagination + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminListUnifiedEventsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminListUnifiedEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Unified Events + /admin/finding/{findingId}: + get: + description: Get a single finding by ID from the metrics store + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The finding ID + in: path + name: findingId + required: true + schema: + description: The finding ID + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding + /admin/findings: + post: + description: Query paginated findings with filtering and sorting + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminQueryFindingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminQueryFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Query Findings + /admin/findings/download: + post: + description: Download filtered findings as a CSV file + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminFindingsDownloadInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminFindingsDownloadOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Download Findings + /admin/fix-effort: + get: + description: Get Fix Effort Mapping that have been created for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetFixEffortOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Fix Effort Mapping + put: + description: Upsert Fix Effort Mapping for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminPutFixEffortInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminPutFixEffortOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Put Fix Effort Mapping + /admin/getFileContents: + get: + description: Gets contents of a file from source control + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: repositoryId + required: true + schema: + type: string + - in: query + name: reference + required: true + schema: + type: string + - in: query + name: filePath + required: true + schema: + type: string + - in: query + name: projectId + schema: + type: string + - in: query + name: startLine + schema: + type: integer + - in: query + name: endLine + schema: + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminFileContentsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get File Contents + /admin/getFileOwners: + post: + description: Gets the owners of a file path from previously cached codeowners files for a repo + branch + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminFileOwnersInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminFileOwnersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get File Owners + /admin/getPullRequest: + get: + description: Gets the current state of a pull request + parameters: + - in: query + name: repositoryId + required: true + schema: + type: string + - in: query + name: prId + required: true + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPullRequestStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get PR State + /admin/installations: + get: + description: Get a list of app installations the current user has access to + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetUserInstallationsOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get App Installations + /admin/integrations/azure: + get: + description: Get Azure integration client ID and tenant ID, either from config or DynamoDB. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetAzureConfigOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Azure Configuration + post: + description: Install Azure DevOps integration for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminPostAzureInstallOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Install Azure DevOps Integration + /admin/integrations/azure/credentials: + post: + description: Stores the Azure credentials (client ID, tenant ID, client secret) in DynamoDB & Parameter Store. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminPostAzureCredentialsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminPostAzureCredentialsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Set Azure Credentials + /admin/integrations/buildkite: + delete: + description: Removes the Buildkite API token and org slug from Parameter Store. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteBuildkiteIntegrationOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Buildkite Integration + get: + description: Returns whether a Buildkite integration is configured. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBuildkiteIntegrationOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Buildkite Integration Status + /admin/integrations/buildkite/token: + post: + description: Stores the Buildkite API token and org slug securely in Parameter Store. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBuildkiteTokenInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBuildkiteTokenOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Set Buildkite API Token + /admin/integrations/circleci: + delete: + description: Removes the CircleCI API token from Parameter Store. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteCircleCIIntegrationOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete CircleCI Integration + get: + description: Returns whether a CircleCI integration is configured. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCircleCIIntegrationOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CircleCI Integration Status + /admin/integrations/circleci/token: + post: + description: Stores the CircleCI API token securely in Parameter Store. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCircleCITokenInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCircleCITokenOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Set CircleCI API Token + /admin/integrations/cloud/aws/settings: + delete: + description: Deletes AWS cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminDeleteAWSSettingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Cloud AWS Settings + get: + description: Retrieves AWS cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetAWSSettingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Cloud AWS Settings + post: + description: Creates or updates AWS cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUpsertAWSSettingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUpsertAWSSettingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Upsert Cloud AWS Settings + /admin/integrations/cloud/aws/validate-role: + post: + description: Validates that Nullify can assume the specified IAM role in the customer's AWS account(s) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminValidateAWSRoleInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminValidateAWSRoleOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Validate AWS Role + /admin/integrations/cloud/azure/settings: + delete: + description: Deletes Azure cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminDeleteAzureSettingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Cloud Azure Settings + get: + description: Retrieves Azure cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetAzureSettingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Cloud Azure Settings + post: + description: Creates or updates Azure cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUpsertAzureSettingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUpsertAzureSettingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Upsert Cloud Azure Settings + /admin/integrations/cloud/gcp/settings: + delete: + description: Deletes GCP cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminDeleteGCPSettingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Cloud GCP Settings + get: + description: Retrieves GCP cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetGCPSettingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Cloud GCP Settings + post: + description: Creates or updates GCP cloud integration settings for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUpsertGCPSettingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUpsertGCPSettingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Upsert Cloud GCP Settings + /admin/integrations/cloud/gcp/validate: + post: + description: >- + Validates that Nullify can authenticate against the customer's GCP environment and access the configured + projects. Reads the persisted WIF configuration from postgres — the customer must Save before they can Verify. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminValidateGCPInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminValidateGCPOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '412': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Precondition Failed + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Validate GCP Credentials + /admin/integrations/cloud/k8s/whitelist: + post: + description: >- + Reconcile the S3 bucket and KMS key policies so the given AWS accounts (or all accounts from stored settings) + are allowed to write under k8s-collector/. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminK8SConnectorWhitelistInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminK8SConnectorWhitelistOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Whitelist K8s Connector Accounts + /admin/integrations/github/app-settings: + get: + description: Get the GitHub app installation settings (webhook events and permissions) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetGitHubAppSettingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get GitHub App Settings + /admin/integrations/jenkins: + delete: + description: Removes the Jenkins URL, username, and API token from Parameter Store. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteJenkinsIntegrationOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Jenkins Integration + get: + description: Returns whether a Jenkins integration is configured. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetJenkinsIntegrationOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Jenkins Integration Status + /admin/integrations/jenkins/token: + post: + description: Stores the Jenkins URL, username, and API token securely in Parameter Store. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostJenkinsTokenInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostJenkinsTokenOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Set Jenkins API Token + /admin/integrations/jira: + get: + description: Get global defaults for Jira integration + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetJiraConfigOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Jira Configuration + post: + description: Update global defaults for Jira integration + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsUpdateJiraConfigInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsUpdateJiraConfigOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Jira Configuration + /admin/integrations/linear/install: + get: + description: >- + Generates an OAuth authorize URL for the Nullify-owned Linear app and persists a short-lived state token keyed + to the caller's tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetLinearInstallOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '412': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Precondition Failed + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Start Linear OAuth install + /admin/integrations/linear/oauth: + get: + description: Returns whether the authenticated tenant has completed the Linear OAuth install. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetLinearOAuthStatusOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Linear OAuth install status + /admin/integrations/notifications: + get: + description: >- + Get per-tenant notification delivery configuration (Slack channels, email addresses, webhook URLs and their + event filters) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAdminNotificationConfigOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Notification Config + put: + description: >- + Replace the per-tenant notification delivery configuration. Each entry pairs an event filter (severity, CWEs, + CVEs) with target channels (Slack, email, webhook). + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutAdminNotificationConfigInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutAdminNotificationConfigOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Put Notification Config + /admin/integrations/slack: + get: + description: Get global defaults for Slack integration + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSlackConfigOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Slack Configuration + /admin/integrations/slack/install: + get: + description: >- + Generates an OAuth v2 authorize URL for the Nullify-owned Slack app and persists a short-lived state token keyed + to the caller's tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSlackDistributedInstallOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '412': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Precondition Failed + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Start Slack distributed install + /admin/integrations/slack/key: + post: + description: Stores the Slack API key securely in Parameter Store and associates the Slack workspace with this installation. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSlackAPIKeyInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSlackAPIKeyOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Set Slack API Key + /admin/integrations/teams: + get: + description: Get teams from an integrated platform (github, gitlab, azure, bitbucket, okta) + parameters: + - description: The integration provider to query teams from + in: query + name: provider + schema: + description: The integration provider to query teams from + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetIntegrationTeamsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Integration Teams + /admin/integrations/users: + get: + description: Get users from an integrated platform (github, jira, slack) + parameters: + - description: The integration provider to query users from + in: query + name: provider + schema: + description: The integration provider to query users from + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetIntegrationUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Integration Users + /admin/metrics/findings: + post: + description: Get aggregate findings metrics directly from the database + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminQueryFindingsMetricsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminQueryFindingsMetricsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Findings Metrics + /admin/metrics/interactions: + get: + description: Get interactions (autofix PRs, tickets, etc) from findings + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminBotInteractionsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Interactions + /admin/metrics/over-time: + post: + description: Get introduced and fixed finding counts over time + parameters: + - description: Time granularity for metrics aggregation (hour, day, week) + in: query + name: resolution + schema: + description: Time granularity for metrics aggregation (hour, day, week) + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsQueryMetricsOverTimeInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsQueryMetricsOverTimeOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Metrics Over Time + /admin/metrics/overview: + post: + description: Query aggregated overview metrics including funnel data and type breakdowns + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsQueryOverviewInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsQueryOverviewOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Query Overview + /admin/metrics/raw: + post: + description: Query raw finding metrics with flexible filtering + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsQueryMetricsRawInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsQueryMetricsRawOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Query Raw Metrics + /admin/metrics/usage/aggregate: + get: + description: Cost and token totals grouped by agent/class for a tenant + parameters: + - in: query + name: window + schema: + type: string + - in: query + name: class + schema: + nullable: true + type: string + - in: query + name: agent + schema: + nullable: true + type: string + - in: query + name: branchType + schema: + nullable: true + type: string + - in: query + name: from + schema: + nullable: true + type: string + - in: query + name: to + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUsageMetricsAggregateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Usage Aggregate + /admin/metrics/usage/ledger: + get: + description: Paginated per-run billing ledger entries for a tenant + parameters: + - in: query + name: class + schema: + nullable: true + type: string + - in: query + name: agent + schema: + nullable: true + type: string + - in: query + name: branchType + schema: + nullable: true + type: string + - in: query + name: runId + schema: + nullable: true + type: string + - in: query + name: findingId + schema: + items: + type: string + type: array + - in: query + name: from + schema: + nullable: true + type: string + - in: query + name: to + schema: + nullable: true + type: string + - in: query + name: cursor + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUsageLedgerResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Usage Ledger + /admin/metrics/usage/timeseries: + get: + description: Daily or hourly cost and token aggregation for a tenant + parameters: + - in: query + name: granularity + schema: + type: string + - in: query + name: from + schema: + type: string + - in: query + name: to + schema: + type: string + - in: query + name: class + schema: + nullable: true + type: string + - in: query + name: agent + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminUsageMetricsTimeseriesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Usage Timeseries + /admin/organization: + get: + description: Gets metadata and properties from an installed organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetOrganizationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Organization + /admin/privacy/acknowledgment: + get: + description: Check if the user has acknowledged a specific version of the privacy policy + parameters: + - description: The version of the privacy policy to check + in: query + name: policyVersion + required: true + schema: + description: The version of the privacy policy to check + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPrivacyAcknowledgmentOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Privacy Acknowledgment + post: + description: Record that the user has acknowledged a specific version of the privacy policy + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostPrivacyAcknowledgmentInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostPrivacyAcknowledgmentOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Privacy Acknowledgment + /admin/repositories: + get: + description: Get a list of repositories in the org + parameters: + - description: Pagination token for the next page of results + in: query + name: nextToken + schema: + description: Pagination token for the next page of results + nullable: true + type: string + - description: Maximum number of repositories to return per page + in: query + name: limit + schema: + description: Maximum number of repositories to return per page + nullable: true + type: integer + - description: Case-insensitive search filter for repository names + in: query + name: search + schema: + description: Case-insensitive search filter for repository names + nullable: true + type: string + - description: Filter repositories by team ULID + in: query + name: teamIDs + schema: + description: Filter repositories by team ULID + items: + type: string + type: array + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetRepositoriesOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repositories + /admin/repositories/initialize: + post: + description: Initialize any webhooks or other settings for the repositories + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostInitializeRepositoriesInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostInitializeRepositoriesOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Initialize Repositories + /admin/repositories/uninitialize: + post: + description: Uninitialize any webhooks or other settings for the repositories + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUninitializeRepositoriesInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUninitializeRepositoriesOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Uninitialize Repositories + /admin/repository-property-team-keys: + delete: + description: >- + Remove a repository property key from the tenant's team-derivation configuration. Property-derived teams without + any remaining ownership rows are cleaned up by the next sync run. + parameters: + - description: The repository property team key ID + in: query + name: keyId + schema: + description: The repository property team key ID + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteRepositoryPropertyTeamKeyOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Repository Property Team Key + get: + description: List the repository property keys this tenant uses to derive teams from repository metadata. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetRepositoryPropertyTeamKeysOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Repository Property Team Keys + post: + description: >- + Configure a repository property key that should drive team derivation for this tenant. The next sync run will + create teams from the distinct values seen for this property. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostRepositoryPropertyTeamKeyInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostRepositoryPropertyTeamKeyOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Repository Property Team Key + /admin/service_accounts: + delete: + description: Delete a given service account and revoke its access token + parameters: + - description: The service account ID + in: query + name: serviceAccountId + schema: + description: The service account ID + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteServiceAccountOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Service Account + get: + description: Get a list of service accounts that have been created for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetServiceAccountsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Service Accounts + post: + description: Created a service account with an access token for the Nullify API + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostServiceAccountInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostServiceAccountOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Service Account + /admin/sla: + get: + description: Get SLAs that have been created for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSLAsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SLAs + post: + description: Create a new SLA for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSLAInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSLAOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post SLA + /admin/sla/{slaId}: + patch: + description: Update an existing SLA for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the SLA to update + in: path + name: slaId + required: true + schema: + description: The ID of the SLA to update + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSLAInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSLAOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Patch SLA + /admin/sla/bulk: + put: + description: Upsert multiple SLAs for the organization + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutBulkSLAInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutBulkSLAOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Put Bulk SLA + /admin/team-source-preferences: + get: + description: >- + Read the per-tenant on/off state of the auto-sync team sources (GitHub Teams, repository custom properties). + Manual teams are always available and have no toggle. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetTeamSourcePreferencesOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Team Source Preferences + put: + description: >- + Enable or disable each auto-sync team source for this tenant. Disabling a source soft-hides every existing team + for that source; re-enabling restores them and triggers a teams-only sync so any upstream changes are picked up + immediately. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutTeamSourcePreferencesInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutTeamSourcePreferencesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Team Source Preferences + /admin/team-sync-runs: + get: + description: >- + Most-recent team-sync workflow runs for this tenant, newest first. The UI polls this to show in-flight / + last-sync state on the Configure > Teams page. + parameters: + - in: query + name: source + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetTeamSyncRunsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Team Sync Runs + post: + description: >- + Manually request a team-sync workflow run. Subject to dedup: if a pending or running run already exists for the + tenant + source, this is a no-op and the existing run is returned. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamSyncRunInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamSyncRunOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Trigger Team Sync + /admin/team/{teamID}: + get: + description: Retrieve a single team by teamID, with user and repository details populated + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: teamID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetTeamOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Team + /admin/teams: + get: + description: Get a paginated list of teams from all sources (database and git platform), with user details populated. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: Pagination token for the next page of results + in: query + name: nextToken + schema: + description: Pagination token for the next page of results + nullable: true + type: string + - description: Maximum number of teams to return per page + in: query + name: limit + schema: + description: Maximum number of teams to return per page + nullable: true + type: integer + - description: Case-insensitive search filter for team names + in: query + name: search + schema: + description: Case-insensitive search filter for team names + nullable: true + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetTeamsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get All Teams + post: + description: Create or update a team in DynamoDB under the given providerID (upsert repositories) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Team + /admin/teams/{teamID}: + delete: + description: >- + Soft-delete a manually created team. Returns 400 if the team's source is not 'manual' — synced teams are managed + by their sync workflow and cannot be removed individually. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the manual team to delete + in: path + name: teamID + required: true + schema: + description: The ID of the manual team to delete + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteTeamOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Manual Team + patch: + description: Update an existing team with partial data. Only provided fields will be updated. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the team to update + in: path + name: teamID + required: true + schema: + description: The ID of the team to update + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchTeamInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchTeamOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Patch Team + /admin/teams/{teamID}/events: + post: + description: Cross-service unified event feed filtered by team + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: teamID + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminListUnifiedEventsByTeamInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminListUnifiedEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Team Unified Events + /admin/teams/{teamID}/findings: + get: + description: Get a list of findings mapped to a specific team. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: teamID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetTeamFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Team Findings mapping + /admin/teams/appzip: + get: + description: Generate and download a Microsoft Teams app package with manifest and icons + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetTeamsAppZipOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Teams App Zip + /admin/teams/compass: + post: + description: Adapt a Compass/Atlassian‐style payload into our in‐house Team model and upsert users and repositories + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCompassTeamInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCompassTeamOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Compass/Atlassian Team + /admin/teams/findings: + get: + description: Get a list of teams with their mapped findings aggregated from DynamoDB. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListTeamFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get All Team Findings mapping + post: + description: Manually assign findings to teams. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamFindingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Manual Team Findings Assignment + /admin/teams/findings/sync: + post: + description: >- + Run the finding-to-team matcher. Optionally scope by repository IDs, names, or finding IDs. Set async=true to + dispatch to a background Lambda for large tenants. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamFindingsSyncInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamFindingsSyncOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Sync Team Findings + /admin/teams/merge: + post: + description: Merge multiple provider-specific teams into one unified team + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamMergeInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostTeamMergeOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Merge Teams + /admin/ui/savedViews: + get: + description: Get UI Saved Views for a user + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetUISavedViewsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get UI Saved Views + post: + description: Create a new UI Saved View + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUISavedViewInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUISavedViewOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post UI Saved View + /admin/ui/savedViews/{savedViewId}: + delete: + description: Delete an existing UI Saved View + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: savedViewId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteUISavedViewOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete UI Saved View + patch: + description: Update an existing UI Saved View + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: savedViewId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchUISavedViewInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchUISavedViewOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Patch UI Saved View + /admin/user/{userID}: + get: + description: Retrieve a single user by userID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the user to fetch + in: path + name: userID + required: true + schema: + description: The ID of the user to fetch + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetUserOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get User + /admin/user/current: + get: + description: Get the current user + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCurrentUserOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Current User + /admin/user/mapping: + get: + description: Get a User Mapping + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: providerId + required: true + schema: + type: string + - in: query + name: userId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetUserMappingOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get User Mapping + post: + description: Create new User Mappings; if useSuggestions=true, compute and persist suggestions + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUserMappingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUserMappingOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Add User Mappings + /admin/user/mapping/{userId}: + delete: + description: Delete a User Mapping + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: userId + required: true + schema: + type: string + responses: + '204': + description: No Content + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete User Mapping + put: + description: Edit a User Mapping + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: userId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutEditUserMappingInput' + responses: + '204': + description: No Content + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Edit User Mapping + /admin/user/mapping/suggestions: + get: + description: Get user mapping suggestions + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSuggestedUserMappingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get User Mapping Suggestions + /admin/user/mappings: + get: + description: Get all User Mappings + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetUserMappingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get User Mappings + /admin/users: + get: + description: Get a list of users, global across all platforms. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAdminGetUsersOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get All Users + post: + description: Create or update a user in DynamoDB under the given providerID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUserInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUserOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post User + /admin/users/{providerID}: + get: + description: Retrieve all users for a specific provider/platform + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The provider ID + in: path + name: providerID + required: true + schema: + description: The provider ID + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetProviderUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Provider Users + /admin/users/{providerID}/{userID}: + get: + description: Retrieve a single user by providerID and userID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The provider ID + in: path + name: providerID + required: true + schema: + description: The provider ID + type: string + - description: The ID of the user to fetch + in: path + name: userID + required: true + schema: + description: The ID of the user to fetch + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetUserOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get User By Provider + /admin/users/{userId}/erasure: + delete: + description: Permanently erase all personal data for a user in compliance with GDPR right to erasure + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the user to erase + in: path + name: userId + required: true + schema: + description: The ID of the user to erase + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteUserErasureOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete User Erasure (GDPR Art. 17) + /admin/users/{userId}/export: + get: + description: Export all personal data held for a user in compliance with GDPR right of access and data portability + parameters: + - description: Export format (json) + in: query + name: format + schema: + default: json + description: Export format (json) + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the user to export data for + in: path + name: userId + required: true + schema: + description: The ID of the user to export data for + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetUserDataExportOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get User Data Export (GDPR Art. 15, 20) + /admin/users/bulkSearchMappings: + post: + description: Get user mappings for a list of canonical user IDs + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBulkGetUserMappingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBulkGetUserMappingsOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Bulk Get User Mappings + /auth/access_token: + GET: + description: Exchange a one time code from cognito for a pair of access and refresh tokens + parameters: + - description: OAuth2 authorization code from identity provider + in: query + name: code + required: true + schema: + type: string + - description: Redirect URI used in the OAuth flow + in: query + name: redirect_uri + required: true + schema: + type: string + - description: >- + RFC 7636 PKCE verifier paired with the code_challenge sent on the authorize request. Required when the + original authorize request set a code_challenge; otherwise omit. + in: query + name: code_verifier + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + properties: + expiresAt: + description: Token expiration timestamp in milliseconds + format: int64 + type: integer + expiresIn: + description: Token expiration time in seconds + type: integer + installationIds: + description: List of GitHub installation IDs + items: + type: string + type: array + required: + - expiresIn + - installationIds + - expiresAt + type: object + description: Successful token exchange + '400': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Bad Request + '401': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Unauthorized + '403': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Forbidden + '500': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Internal Server Error + summary: Get Tokens + /auth/github_token: + GET: + description: Generate a JWT token for GitHub Actions or CLI access + parameters: + - description: GitHub organization or user name + in: query + name: owner + required: true + schema: + type: string + - description: GitHub token for authentication + in: query + name: token + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + properties: + accessToken: + description: JWT access token for Nullify API + type: string + required: + - accessToken + type: object + description: Successful token generation + '400': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Bad Request + '401': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Unauthorized + '403': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Forbidden + '500': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Internal Server Error + summary: Get GitHub Token + /auth/logout: + GET: + description: Clear authentication cookies and log out the user + responses: + '200': + description: OK + summary: Logout + /auth/refresh_token: + GET: + description: Exchange a refresh token for a new access token + parameters: + - description: Refresh token cookie + in: cookie + name: refresh_token + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + properties: + expiresAt: + description: Token expiration timestamp in milliseconds + format: int64 + type: integer + expiresIn: + description: Token expiration time in seconds + type: integer + installationIds: + description: List of GitHub installation IDs + items: + type: string + type: array + required: + - expiresIn + - installationIds + - expiresAt + type: object + description: Successful token refresh + '400': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Bad Request + '401': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Unauthorized + '403': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Forbidden + '500': + content: + application/json: + schema: + properties: + error: + description: Error message + type: string + required: + - error + type: object + description: Internal Server Error + summary: Refresh Access Token + /asset-graph/reachability: + get: + description: Computes network reachability and topology paths for a node in the asset graph + parameters: + - in: query + name: nodeId + required: true + schema: + type: string + - in: query + name: accountId + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAssetGraphReachabilityOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Asset Graph Reachability + /asset-graph/search: + get: + description: Searches the asset graph for nodes matching a query string + parameters: + - in: query + name: q + required: true + schema: + minLength: 2 + type: string + - in: query + name: objectTypes + schema: + items: + type: string + type: array + - in: query + name: maxResults + schema: + default: 20 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAssetGraphSearchOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Search Asset Graph + /asset-graph/subgraph: + get: + description: Extracts a bounded subgraph from the merged asset graph starting from a root node + parameters: + - in: query + name: rootNodeId + required: true + schema: + type: string + - in: query + name: depth + schema: + default: 1 + type: integer + - in: query + name: maxNodes + schema: + default: 150 + type: integer + - in: query + name: accountId + schema: + type: string + - in: query + name: objectTypes + schema: + items: + type: string + type: array + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAssetGraphSubgraphOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Asset Graph Subgraph + /asset-graph/summary: + get: + description: Retrieves a unified summary of all infrastructure and repo context graphs with presigned download URLs + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAssetGraphSummaryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Asset Graph Summary + /context/applications: + get: + description: Retrieves all applications for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetContextApplicationsOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Applications + post: + description: Create a new application + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostContextApplicationInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostContextApplicationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Application + /context/applications/{applicationId}: + delete: + description: Delete an application + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteContextApplicationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Application + get: + description: Retrieves a specific application by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetContextApplicationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Application + patch: + description: Update an existing application + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchContextApplicationInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchContextApplicationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Application + /context/applications/{applicationId}/schema: + get: + description: Returns the computed API schema for an application by merging all linked project schemas + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetApplicationSchemaOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Application Schema + /context/applications/rebuild: + post: + description: Trigger application context rebuilding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsRebuildApplicationsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsRebuildApplicationsOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Rebuild Applications + /context/artifact-deployments: + get: + description: Lists all artifact deployments with optional filtering + parameters: + - in: query + name: artifactId + schema: + type: string + - in: query + name: repositoryId + schema: + type: string + - in: query + name: cloudResourceId + schema: + type: string + - in: query + name: computeType + schema: + type: string + - in: query + name: limit + schema: + type: integer + - in: query + name: nextToken + schema: + type: string + - in: query + name: includeDeleted + schema: + type: boolean + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListArtifactDeploymentsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Artifact Deployments + /context/artifact-deployments/{deploymentId}: + get: + description: Retrieves a single artifact deployment by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: deploymentId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetArtifactDeploymentOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Artifact Deployment + /context/artifacts: + get: + description: Lists all build artifacts with optional filtering + parameters: + - in: query + name: repositoryId + schema: + type: string + - in: query + name: projectId + schema: + type: string + - in: query + name: type + schema: + type: string + - in: query + name: limit + schema: + type: integer + - in: query + name: nextToken + schema: + type: string + - in: query + name: includeDeleted + schema: + type: boolean + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListArtifactsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Artifacts + /context/artifacts/{artifactId}: + delete: + description: Soft-delete an artifact + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: artifactId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteArtifactOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Artifact + get: + description: Retrieves a single build artifact by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: artifactId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetArtifactOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Artifact + /context/asset-inventory/cloud-accounts: + get: + description: >- + Retrieves cloud accounts discovered during cloud integration scans. These are NOT integration configuration + settings, but accounts observed in scan results. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: provider + schema: + nullable: true + type: string + - in: query + name: active + schema: + nullable: true + type: boolean + - in: query + name: nextToken + schema: + type: string + - in: query + name: limit + schema: + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCloudAccountRecordsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Asset Inventory Cloud Accounts + /context/asset-inventory/cloud-resources: + get: + description: >- + Retrieves cloud resources from asset inventory with optional filtering by category, type, provider, account, and + status. Covers all resource types: compute, network, storage, database, messaging, identity, etc. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: category + schema: + nullable: true + type: string + - in: query + name: type + schema: + nullable: true + type: string + - in: query + name: provider + schema: + nullable: true + type: string + - in: query + name: accountId + schema: + nullable: true + type: string + - in: query + name: active + schema: + nullable: true + type: boolean + - in: query + name: nextToken + schema: + type: string + - in: query + name: limit + schema: + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAssetInventoryCloudResourcesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Asset Inventory Cloud Resources + /context/asset-inventory/public-facing: + get: + description: >- + Returns the unified list of public-facing assets across cloud providers. The bug hunter daily workflow calls + this once per scan to seed its scope. Backed by a single is_public_facing index column maintained by the cloud + scan converter. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: cloudProvider + schema: + nullable: true + type: string + - in: query + name: accountId + schema: + nullable: true + type: string + - in: query + name: nextToken + schema: + type: string + - in: query + name: limit + schema: + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPublicFacingAssetsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Public Facing Assets + /context/asset-inventory/resources: + get: + description: >- + Retrieves cloud resources from asset inventory with optional filtering by category, type, and status. Supports + CSPM-style resource categorization across multi-cloud environments (AWS, K8s, GCP, Azure). + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: category + schema: + nullable: true + type: string + - in: query + name: type + schema: + nullable: true + type: string + - in: query + name: active + schema: + nullable: true + type: boolean + - in: query + name: nextToken + schema: + type: string + - in: query + name: limit + schema: + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAssetInventoryResourcesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Asset Inventory Resources + /context/cicd-pipelines: + get: + description: Lists all CI/CD pipelines with optional filtering + parameters: + - in: query + name: repositoryId + schema: + type: string + - in: query + name: projectId + schema: + type: string + - in: query + name: platform + schema: + type: string + - in: query + name: limit + schema: + type: integer + - in: query + name: nextToken + schema: + type: string + - in: query + name: includeDeleted + schema: + type: boolean + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListPipelinesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List CI/CD Pipelines + /context/cicd-pipelines/{pipelineId}: + delete: + description: Soft-delete a CI/CD pipeline + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: pipelineId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeletePipelineOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete CI/CD Pipeline + get: + description: Retrieves a single CI/CD pipeline by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: pipelineId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPipelineOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CI/CD Pipeline + /context/cloud-recon/accounts/{accountId}/discovered-nodes: + get: + description: >- + Returns graph nodes from the latest cloud_recon scan, filterable by object type and source (use + source='cloudrecon' to get prescan additions only) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: objectType + schema: + type: string + - in: query + name: source + schema: + type: string + - in: query + name: limit + schema: + type: integer + - in: query + name: offset + schema: + type: integer + - in: path + name: accountId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCloudReconDiscoveredNodesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Cloud Recon Discovered Nodes + /context/cloud-recon/accounts/{accountId}/hotspots: + get: + description: Returns hotspots from the latest completed cloud_recon scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: severity + schema: + type: string + - in: query + name: limit + schema: + type: integer + - in: query + name: offset + schema: + type: integer + - in: path + name: accountId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCloudReconHotspotsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Cloud Recon Hotspots + /context/cloud-recon/accounts/{accountId}/scans/latest: + get: + description: Returns the latest completed cloud_recon scan metadata for an account + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: accountId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetLatestCloudReconScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Latest Cloud Recon Scan + /context/cloud-recon/scans: + post: + description: Persist a completed cloud_recon scan (S3 blob + indexed Postgres rows) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCloudReconScanInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCloudReconScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Persist Cloud Recon Scan + /context/cloud-recon/tenants/cross-account-trusts: + get: + description: Returns every external principal trusted by 2+ accounts in the tenant (latest scans only) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCloudReconTenantTrustsOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Tenant Cloud Recon Cross-Account Trusts + /context/cloud-scan/{scanId}/status: + get: + description: Returns the aggregated status of a cloud-scan across every provider the tenant scanned (AWS, Azure, GCP). + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsContextGetCloudScanStatusOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Cloud Scan Status + /context/cloud-scan/start: + post: + description: Starts an async cloud-scan Step Function that scans every cloud integration the calling tenant has installed. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsContextStartCloudScanOutput' + description: OK + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Start Cloud Scan + /context/deps: + delete: + description: >- + Deletes dependency occurrence records. Scope is inferred from query parameters: single entry + (repo+project+ecosystem+name+version+introducedAt), project-wide (repo+project), or tenant-wide (no selectors, + confirmGlobal=true). + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: repositoryId + schema: + nullable: true + type: string + - in: query + name: projectId + schema: + nullable: true + type: string + - in: query + name: ecosystem + schema: + nullable: true + type: string + - in: query + name: name + schema: + nullable: true + type: string + - in: query + name: version + schema: + nullable: true + type: string + - in: query + name: introducedAt + schema: + nullable: true + type: string + - in: query + name: global + schema: + nullable: true + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteDepsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete dependency data + get: + description: Returns dependency history across all repositories/projects. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: pageSize + schema: + format: int32 + type: integer + - in: query + name: cursor + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDepsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Tenant Wide Dependencies (Historical) + /context/deps/active: + get: + description: Returns dependencies that are active across all repositories/projects. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: pageSize + schema: + format: int32 + type: integer + - in: query + name: cursor + schema: + type: string + - in: query + name: search + schema: + type: string + - in: query + name: ecosystem + schema: + type: string + - in: query + name: name + schema: + type: string + - in: query + name: direct + schema: + nullable: true + type: boolean + - in: query + name: repositoryId + schema: + type: string + - in: query + name: projectId + schema: + type: string + - in: query + name: range + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetActiveDepsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Tenant Wide Active Dependencies + /context/deps/active/summary: + get: + description: Returns aggregate counts and the oldest active dependency across all repositories/projects, search-aware. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: search + schema: + type: string + - in: query + name: ecosystem + schema: + type: string + - in: query + name: name + schema: + type: string + - in: query + name: direct + schema: + nullable: true + type: boolean + - in: query + name: repositoryId + schema: + type: string + - in: query + name: projectId + schema: + type: string + - in: query + name: range + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetActiveDepsSummaryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Tenant Wide Active Dependency Summary + /context/deps/by-ref/{bomRef}: + get: + description: >- + Returns active dependency occurrences whose cdxgen bom-ref matches. A bom-ref is unique within a project but can + repeat across projects, so the result is a list. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: pageSize + schema: + format: int32 + type: integer + - in: query + name: cursor + schema: + type: string + - in: path + name: bomRef + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDepsByBomRefOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Dependencies by Bom Ref + /context/deps/dependents/{bomRef}: + get: + description: >- + Returns active dependency occurrences whose parent chain includes the given bom-ref. Walk recursively to + traverse the downstream dependency subtree. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: pageSize + schema: + format: int32 + type: integer + - in: query + name: cursor + schema: + type: string + - in: path + name: bomRef + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDepsDependentsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Dependents of a Bom Ref + /context/deps/exposure: + get: + description: Returns exposure windows across all repositories/projects intersecting a version filter (server-side filtering). + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: ecosystem + schema: + type: string + - in: query + name: name + schema: + type: string + - in: query + name: range + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetExposureOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Global package exposure by version filter (semver or hash) + /context/deps/repository/{repositoryId}/project/{projectId}/active: + get: + description: Returns dependencies that are active for the latest commit using the DependencyOccurrence database. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: search + schema: + type: string + - in: query + name: ecosystem + schema: + type: string + - in: query + name: direct + schema: + nullable: true + type: boolean + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetProjectActiveDepsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Active Dependencies + /context/deps/repository/{repositoryId}/project/{projectId}/at/{commit}: + get: + description: >- + Returns dependencies exposed at the specified commit (resolved to commit timestamp) using the + DependencyOccurrence database. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + - in: path + name: commit + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDepsAtCommitOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Dependencies at commit + /context/deps/repository/{repositoryId}/project/{projectId}/diff: + get: + description: Computes added, removed, and upgraded packages by comparing database snapshots at the two commit timestamps. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: fromCommit + schema: + nullable: true + type: string + - in: query + name: toCommit + schema: + nullable: true + type: string + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDepsDiffOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Dependency diff between two commits + /context/deps/repository/{repositoryId}/project/{projectId}/exposure: + get: + description: Returns exposure windows for a repo/project intersecting a version filter (server-side filtering). + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: ecosystem + schema: + type: string + - in: query + name: name + schema: + type: string + - in: query + name: range + schema: + type: string + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetProjectExposureOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Project package exposure by version filter (semver or hash) + /context/deps/repository/{repositoryId}/project/{projectId}/history: + get: + description: >- + Returns exposure windows for a given package (ecosystem+name), grouped by version, from the DependencyOccurrence + database. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: ecosystem + schema: + type: string + - in: query + name: name + schema: + type: string + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDepsHistoryOut' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Package exposure history (windows) + /context/deps/without-lockfile: + get: + description: >- + Returns projects or repositories whose dependencies were resolved without a committed lockfile. These are at + higher risk during supply chain incidents. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: level + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDepsWithoutLockfileOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List projects/repos without lockfiles + /context/entrypoints: + get: + description: Lists all application entrypoints with optional filtering + parameters: + - in: query + name: repositoryId + schema: + type: string + - in: query + name: projectId + schema: + type: string + - in: query + name: kind + schema: + type: string + - in: query + name: limit + schema: + type: integer + - in: query + name: nextToken + schema: + type: string + - in: query + name: includeDeleted + schema: + type: boolean + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListEntrypointsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Entrypoints + /context/entrypoints/{entrypointId}: + delete: + description: Soft-delete an entrypoint + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: entrypointId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteEntrypointOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Entrypoint + get: + description: Retrieves a single application entrypoint by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: entrypointId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetEntrypointOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Entrypoint + /context/memories: + get: + description: >- + Query memories with flexible filtering. Memories are first-class resources that can be associated with various + resource types. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: Filter by resource ID (e.g., document ID, finding ID) + in: query + name: resourceId + schema: + description: Filter by resource ID (e.g., document ID, finding ID) + nullable: true + type: string + - description: Filter by resource type (e.g., 'document', 'finding', 'chat') + in: query + name: resourceType + schema: + description: Filter by resource type (e.g., 'document', 'finding', 'chat') + nullable: true + type: string + - description: Filter by memory type + in: query + name: memoryType + schema: + description: Filter by memory type + nullable: true + type: string + - description: Filter by priority level + in: query + name: priority + schema: + description: Filter by priority level + nullable: true + type: string + - description: Filter for latest memories only + in: query + name: isLatest + schema: + description: Filter for latest memories only + nullable: true + type: boolean + - description: 'Maximum number of results (default: 50, max: 1000)' + in: query + name: limit + schema: + description: 'Maximum number of results (default: 50, max: 1000)' + nullable: true + type: integer + - description: Pagination token for next page + in: query + name: nextToken + schema: + description: Pagination token for next page + nullable: true + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetMemoriesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Memories + post: + description: Create a new memory as a first-class resource + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostMemoryInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostMemoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Memory + /context/memories/{memoryId}: + delete: + description: Deletes a memory permanently + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: ID of the memory to delete + in: path + name: memoryId + required: true + schema: + description: ID of the memory to delete + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteMemoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Memory + get: + description: Retrieves a specific memory by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: version + schema: + nullable: true + type: string + - description: ID of the memory to retrieve + in: path + name: memoryId + required: true + schema: + description: ID of the memory to retrieve + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetMemoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Memory + patch: + description: Updates the content of an existing memory + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: memoryId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchMemoryInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchMemoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Memory + /context/memories/{memoryId}/versions: + get: + description: Retrieve all versions of a specific memory + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: 'Maximum number of versions to return (default: 50)' + in: query + name: limit + schema: + description: 'Maximum number of versions to return (default: 50)' + format: int32 + type: integer + - description: Memory ID + in: path + name: memoryId + required: true + schema: + description: Memory ID + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetMemoryVersionsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Memory Versions + /context/memories/type: + get: + description: Query memories filtered by memory type. Use the memoryType query parameter to filter results. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: memoryType + schema: + type: string + - in: query + name: isLatest + schema: + nullable: true + type: boolean + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: paginationToken + schema: + nullable: true + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetMemoriesByTypeOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Memories By Type + /context/organization: + get: + description: Returns a classification of your entire organization and what software it builds + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetOrganizationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Organization Context + patch: + description: Updates a classification of your entire organization and what software it builds + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsUpdateOrganizationInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Classification of the Organization + put: + description: Creates a classification of your entire organization and what software it builds + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsCreateOrganizationInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsCreateOrganizationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Upsert Classification of the Organization + /context/rag/resync: + post: + description: >- + Enqueues a full reconciliation of the tenant's RAG vector store with the canonical S3 vault state. Returns + immediately after the message is queued. The onboardingagent Lambda lists every vault file and re-indexes; + anything in the vector store that no longer has a matching S3 file is removed. Use for backfill on first RAG + activation and for drift recovery. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostRAGResyncOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '412': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Precondition Failed + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Resync RAG Vector Store + /context/repo-scans: + get: + description: >- + Lists repo-context scans for the calling tenant. Filter by repositoryId, commitSha, status. Returns newest + first. + parameters: + - in: query + name: repositoryId + schema: + type: string + - in: query + name: commitSha + schema: + type: string + - in: query + name: status + schema: + type: string + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListRepoScansOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Repo Context Scans + post: + description: Records the start of a context-service run against a repository. Returns the persisted scan with a generated id. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsCreateRepoScanInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsCreateRepoScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Repo Context Scan + /context/repo-scans/{scanId}: + get: + description: Returns a single repo-context scan by id. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetRepoScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repo Context Scan + patch: + description: >- + Patches status, subagent execution metadata, projects touched, SBOMs generated, or error message on an existing + repo-context scan. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchRepoScanInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchRepoScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Repo Context Scan + /context/reports: + post: + description: Creates a new report generation job and returns a job ID. The report will be generated asynchronously. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostReportInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostReportOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Report Generation Job + /context/reports/{jobId}: + get: + description: Retrieves the status of a report generation job. Returns status, error (if failed), and URL (if success). + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: jobId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetReportStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Report Status + /context/repositories: + get: + description: Returns a classification of attributes of each repository + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetRepositoriesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Contexts of Repositories + /context/repositories/{repositoryId}: + delete: + description: Deletes a repository permanently + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: ID of the repository to delete + in: path + name: repositoryId + required: true + schema: + description: ID of the repository to delete + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteRepositoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Repository + get: + description: Returns context about a repository + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetRepositoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repository + patch: + description: Updates the classification of a repository + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsUpdateRepositoryInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Repository + /context/repositories/{repositoryId}/projects: + get: + description: Lists all projects in a repository with optional pagination and filtering + parameters: + - in: query + name: limit + schema: + type: integer + - in: query + name: nextToken + schema: + type: string + - in: query + name: includeDeleted + schema: + type: boolean + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListRepositoryProjectsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Projects + /context/repositories/{repositoryId}/projects/{projectId}: + delete: + description: Soft-delete a project + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteProjectOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Project + get: + description: Retrieves a single project by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetProjectOutput' + description: OK + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Project + patch: + description: Updates a project's metadata and properties + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsUpdateProjectInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsUpdateProjectOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Project + /context/repositories/{repositoryId}/projects/{projectId}/schema: + get: + description: Returns the API schema for a given project + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetProjectSchemaOutput' + description: OK + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Project Schema + post: + description: Uploads an API schema for a project + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostProjectSchemaInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostProjectSchemaOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Upload Project Schema + /context/repositories/{repositoryId}/projects/{projectId}/schema/metadata: + get: + description: Returns the metadata for a given project schema + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetProjectSchemaMetadataOutput' + description: OK + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Project Schema Metadata + /context/repositories/{repositoryId}/projects/{projectId}/schema/raw: + get: + description: >- + Returns a presigned download URL for the raw API spec file (OpenAPI JSON/YAML, Proto, or GraphQL SDL) that can + be rendered or imported directly + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetProjectSchemaRawOutput' + description: OK + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Project Schema Raw File + /context/sbomingestor/replay: + post: + description: Enqueue a full SBOM ingest replay; either global or for a specific repository and project + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsSBOMIngestReplayInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsSBOMIngestReplayOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Compute Dependencies Repository/Project SBOM Ingest Replay + /context/sboms: + delete: + description: >- + Deletes SBOM (software bill of materials) items for a tenant. Scope can be limited by repository/project, and + you can optionally restrict deletions to invalid SBOM objects only. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: repositoryId + schema: + type: string + - in: query + name: projectId + schema: + type: string + - in: query + name: invalidOnly + schema: + type: boolean + - in: query + name: dryRun + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteSBOMOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete SBOMs for tenant + /context/sboms/generate: + post: + description: >- + Triggers a full SBOM generation pipeline: clone repo, classify projects, run cdxgen with dep tree, store SBOMs, + and ingest dependencies. Returns immediately with status='generating' — poll GET /context/sboms/... for results. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSBOMGenerateInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSBOMGenerateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Generate SBOM + /context/sboms/repository/{repositoryId}/latest: + get: + description: Returns the most recent SBOM for each project within a repository. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetLatestSBOMsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Latest SBOMs for Repository + /context/sboms/repository/{repositoryId}/project/{projectId}: + get: + description: >- + Returns a list of SBOM (software bill of materials) items for a repository/project based on the query + parameters. Responses are paginated in reverse-time order. + parameters: + - in: query + name: page + schema: + nullable: true + type: integer + - in: query + name: pageSize + schema: + nullable: true + type: integer + - in: query + name: fromCommit + schema: + nullable: true + type: string + - in: query + name: untilCommit + schema: + nullable: true + type: string + - in: query + name: fromTime + schema: + format: date-time + nullable: true + type: string + - in: query + name: untilTime + schema: + format: date-time + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + - in: path + name: projectId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSBOMSOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repository/Project SBOMs + /context/sboms/resolve: + post: + description: >- + Returns the S3 key of the SBOM for the given (tenant, repo, commit). Walks a 3-tier cache (per-branch pointer → + hash-keyed cache → cdxgen via the sbomgenerator Lambda). Single source of truth for SBOM lifecycle. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSBOMResolveInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSBOMResolveOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get or generate SBOM + /context/sboms/scan: + post: + description: >- + Returns an existing SBOM if available, or enqueues generation and returns status='generating'. Callers can poll + the GET endpoint to retrieve the result once ready. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSBOMScanInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSBOMScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Scan SBOM (get-or-generate) + /context/sboms/tree: + get: + description: >- + Returns a tree structure of SBOM (software bill of materials) items for a tenant. Commits are paginated in time + order. Add optional verbose=true query parameter to include repository and project names. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: verbose + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSBOMTreeOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SBOM key tree for tenant + /context/schemas: + get: + description: Lists all project schemas across all repositories + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListSchemasOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Schemas + /context/vault/file: + post: + description: Returns a presigned upload URL for a file to S3 with metadata including document ID and optional description + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostVaultFileInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostVaultFileOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Vault File + /context/vault/file/{fileId}: + delete: + description: Deletes a vault file + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: fileId + required: true + schema: + type: string + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Vault File + get: + description: Returns a presigned url for a vault file + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: fileId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetVaultFileOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Vault File + /context/vault/file/{fileName}: + patch: + description: Update metadata for a vault file in S3 + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: fileName + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchVaultFileInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchVaultFileOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Patch Vault File + /context/vault/files: + get: + description: Returns a list of vault files + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetVaultFilesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Vault Files + /context/vault/files/list: + get: + description: Returns a simplified list of vault files with fileName and description + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetVaultFilesListOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Vault Files List + /context/vault/onboard: + post: + description: >- + Triggers the onboarding process asynchronously for specified vault files. Returns immediately after the message + is queued. The onboarding agent will extract organizational context from the provided documents in the + background. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostVaultOnboardInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostVaultOnboardOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Trigger Vault Onboarding + /infrastructure/graphs: + get: + description: Lists all infrastructure graphs for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListInfrastructureGraphsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Infrastructure Graphs + /infrastructure/graphs/{accountId}: + get: + description: Retrieves the latest infrastructure graph for a specific AWS account + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: accountId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetInfrastructureGraphOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Infrastructure Graph + /infrastructure/graphs/{accountId}/download: + get: + description: Generates a presigned URL to download the infrastructure graph + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: accountId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetInfrastructureGraphDownloadOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Infrastructure Graph Download URL + /infrastructure/graphs/{accountId}/versions: + get: + description: Lists all versions of an infrastructure graph for a specific AWS account + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: accountId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListInfrastructureGraphVersionsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Infrastructure Graph Versions + /infrastructure/graphs/{accountId}/versions/{version}: + get: + description: Retrieves a specific version of an infrastructure graph + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: accountId + required: true + schema: + type: string + - in: path + name: version + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetInfrastructureGraphVersionOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Infrastructure Graph Version + /infrastructure/graphs/info: + get: + description: Retrieves comprehensive statistics and metadata about all infrastructure graphs + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsInfrastructureGraphInfo' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Infrastructure Graph Info + /infrastructure/graphs/summary: + get: + description: Retrieves infrastructure graph summary with presigned download URLs for each account's graph + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetInfrastructureGraphSummaryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Infrastructure Graph Summary + /cspm/findings: + get: + description: Returns a filtered set of CSPM findings based on query parameters + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: Maximum number of findings to return + in: query + name: limit + schema: + description: Maximum number of findings to return + nullable: true + type: integer + - description: Token for pagination + in: query + name: nextToken + schema: + description: Token for pagination + nullable: true + type: string + - description: Sort order (asc or desc) + in: query + name: sort + schema: + description: Sort order (asc or desc) + nullable: true + type: string + - description: Field to sort by (priority, time, severity) + in: query + name: sortBy + schema: + description: Field to sort by (priority, time, severity) + nullable: true + type: string + - description: Filter by severity + in: query + name: severity + schema: + description: Filter by severity + nullable: true + type: string + - description: Filter by status + in: query + name: status + schema: + description: Filter by status + nullable: true + type: string + - description: Filter by account ID + in: query + name: accountId + schema: + description: Filter by account ID + nullable: true + type: string + - description: Filter by region + in: query + name: region + schema: + description: Filter by region + nullable: true + type: string + - description: Filter by resource type + in: query + name: resourceType + schema: + description: Filter by resource type + nullable: true + type: string + - description: Filter by scan ID + in: query + name: scanId + schema: + description: Filter by scan ID + nullable: true + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCSPMFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Findings + /cspm/findings/{findingId}: + get: + description: Returns a specific CSPM finding by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: ID of the CSPM finding + in: path + name: findingId + required: true + schema: + description: ID of the CSPM finding + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCSPMFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Finding + /cspm/findings/{findingId}/autofix/activity: + get: + description: >- + Cursor-paginated autofix activity log for UI polling. Returns empty list when no autofix run exists. `limit` + defaults to 50 and is clamped to [1, 200]; `since_id` is the ID of the last entry the client has already seen + (use the `nextCursor` value from a prior response). + parameters: + - in: query + name: since_id + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAutofixActivityLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Finding Autofix Activity + /cspm/findings/{findingId}/autofix/cache/diff: + get: + description: Get the cached autofix diff for a CSPM finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCSPMFindingAutofixDiffOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Finding Autofix Diff + /cspm/findings/{findingId}/autofix/fix: + post: + description: Generates a fix and creates an IaC pull request for a CSPM finding. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCSPMFindingAutofixInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCSPMFindingAutofixOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post CSPM Finding Autofix + /cspm/findings/{findingId}/autofix/state: + get: + description: >- + Authoritative per-finding autofix state — runs stale-state rescue + live git-platform reconcile. Slow by design; + the dashboard polls this on a ~30s cadence alongside the fast /autofix/status. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCSPMFindingAutofixStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Finding Autofix State + /cspm/findings/{findingId}/autofix/status: + get: + description: Lightweight per-finding autofix lifecycle status for UI polling. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCSPMFindingAutofixStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Finding Autofix Status + /cspm/findings/{findingId}/ticket: + post: + description: Creates a ticket (Jira, GitHub, etc.) for a given CSPM finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the CSPM finding to create a ticket for + in: path + name: findingId + required: true + schema: + description: The ID of the CSPM finding to create a ticket for + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketCSPMFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketCSPMFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '501': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Implemented + summary: Create Ticket for CSPM Finding + /cspm/scans: + get: + description: Returns a list of CSPM scans + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: Maximum number of scans to return + in: query + name: limit + schema: + description: Maximum number of scans to return + nullable: true + type: integer + - description: Token for pagination + in: query + name: nextToken + schema: + description: Token for pagination + nullable: true + type: string + - description: Filter by scan status + in: query + name: status + schema: + description: Filter by scan status + nullable: true + type: string + - description: Filter by account ID + in: query + name: accountId + schema: + description: Filter by account ID + nullable: true + type: string + - description: Filter by region + in: query + name: region + schema: + description: Filter by region + nullable: true + type: string + - description: Filter by scan type + in: query + name: scanType + schema: + description: Filter by scan type + nullable: true + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCSPMScansOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Scans + /cspm/scans/{scanId}: + get: + description: Returns a specific CSPM scan by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: ID of the CSPM scan + in: path + name: scanId + required: true + schema: + description: ID of the CSPM scan + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCSPMScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CSPM Scan + /dast/bughunt/config: + get: + description: Retrieve the BugHunt config for the tenant, creating a default if none exists + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntConfigOutput' + description: OK + summary: Get BugHunt Config + put: + description: Create or update BugHunt config for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutBugHuntConfigInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutBugHuntConfigOutput' + description: OK + summary: Put BugHunt Config + /dast/bughunt/config/validate: + post: + description: >- + Validate a BugHunt config payload without persisting it. Returns a typed slice of ConfigValidationError so the + configure UI can render inline errors. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsValidateBugHuntConfigInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsValidateBugHuntConfigOutput' + description: OK + summary: Validate BugHunt Config + /dast/bughunt/findings: + get: + description: List all BugHunt findings + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntFindingsOutput' + description: OK + summary: Get BugHunt Findings + /dast/bughunt/findings/{findingId}: + get: + description: Get a single BugHunt finding by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntFindingOutput' + description: OK + summary: Get BugHunt Finding + /dast/bughunt/findings/{findingId}/allowlist: + patch: + description: Mark/unmark an BugHunt finding as allowlisted + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchBugHuntFindingAllowlistInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchBugHuntFindingAllowlistOutput' + description: OK + summary: Allowlist BugHunt Finding + /dast/bughunt/findings/{findingId}/events: + get: + description: Get events for an BugHunt finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntFindingEventsOutput' + description: OK + summary: Get BugHunt Finding Events + /dast/bughunt/findings/{findingId}/triage: + get: + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntFindingTriageOutput' + description: OK + summary: Create Interactor [] + /dast/bughunt/scans: + get: + description: List BugHunt scans for tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntScansOutput' + description: OK + summary: Get BugHunt Scans + post: + description: Start a new BugHunt scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBugHuntScanInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBugHuntScanOutput' + description: OK + summary: Start BugHunt Scan + /dast/bughunt/scans/{scanId}: + get: + description: Get BugHunt scan by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntScanOutput' + description: OK + summary: Get BugHunt Scan + /dast/bughunt/scans/{scanId}/diff: + get: + description: >- + Diff two BugHunt scans into the four buckets New / Reopened / Unchanged / Resolved. The 'against' query + parameter is the older scan id; both scans must belong to the caller's tenant and must be in a successful + terminal state. + parameters: + - in: query + name: against + required: true + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntScanDiffOutput' + description: OK + summary: Get BugHunt Scan Diff + /dast/bughunt/scans/{scanId}/findings: + get: + description: Get findings for an BugHunt scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntScanFindingsOutput' + description: OK + summary: Get BugHunt Scan Findings + /dast/bughunt/scans/{scanId}/logs: + get: + description: Returns the network logs for a specific bughunt sub-agent + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSubAgentNetworkLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get BugHunt Sub-Agent Network Log + /dast/bughunt/scans/{scanId}/stop: + post: + description: Stop a running BugHunt scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStopBugHuntScanOutput' + description: OK + summary: Stop BugHunt Scan + /dast/bughunt/suite-runs: + get: + description: Returns the per-suite cadence state (last run at, last run id) for the tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBugHuntSuiteRunsOutput' + description: OK + summary: Get BugHunt Suite Runs + /dast/bughunt/suites/{suite}/run-now: + post: + description: >- + Manually trigger a single bug hunt test suite for the tenant. Honours the tenant's stored intensity unless the + request supplies an override. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: suite + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBugHuntSuiteRunNowInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBugHuntSuiteRunNowOutput' + description: OK + summary: Run BugHunt Suite Now + /dast/credentials: + get: + description: Get all credentials with optional context filtering + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCredentialsOutput' + description: OK + summary: Get All Credentials + tags: + - Credentials + - Vault + post: + description: Create a new unified credential for BugHunt or Pentest + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCredentialInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCredentialOutput' + description: OK + summary: Create Credential + tags: + - Credentials + - Vault + /dast/credentials/{credentialId}: + delete: + description: Delete a credential + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: credentialId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteCredentialOutput' + description: OK + summary: Delete Credential + tags: + - Credentials + - Vault + get: + description: Get a specific credential by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: credentialId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCredentialOutput' + description: OK + summary: Get Credential + tags: + - Credentials + - Vault + put: + description: Update an existing credential + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: credentialId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutCredentialInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutCredentialOutput' + description: OK + summary: Update Credential + tags: + - Credentials + - Vault + /dast/credentials/{credentialId}/validate: + post: + description: Validate a credential by testing it against a service + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: credentialId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsValidateCredentialOutput' + description: OK + summary: Validate Credential + tags: + - Credentials + - Validation + - Vault + /dast/pentest/applications: + get: + description: Get all pentest application configs for a tenant + parameters: + - in: query + name: nextToken + schema: + type: string + - in: query + name: limit + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestAppConfigsOutput' + description: OK + summary: Get Pentest App Configs + tags: + - Applications + - Vault + post: + description: Create a new application + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostPentestAppConfigInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostPentestAppConfigOutput' + description: OK + summary: Create Application + tags: + - Applications + - Vault + /dast/pentest/applications/{applicationId}: + delete: + description: Delete a pentest application config + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeletePentestAppConfigOutput' + description: OK + summary: Delete Pentest App Config + tags: + - Applications + - Vault + get: + description: Get a specific pentest application config by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestAppConfigOutput' + description: OK + summary: Get Pentest App Config + tags: + - Applications + - Vault + put: + description: Update an existing application + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutPentestAppConfigInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPutPentestAppConfigOutput' + description: OK + summary: Update Application + tags: + - Applications + - Vault + /dast/pentest/applications/{applicationId}/preflight: + post: + description: >- + Runs a readiness check for an application before a pentest scan. Validates credentials, retrieves application + context, enumerates network-reachable findings, and produces a typed three-level summary plus a duration / cost + estimate for the upcoming pentest. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStartPentestPreflightInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStartPentestPreflightOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Too Many Requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Start Pentest Preflight + tags: + - Applications + - Pentest + - Preflight + /dast/pentest/applications/{applicationId}/preflight/latest: + get: + description: Returns the most recent pentest preflight for an application, or null if the customer has never run one. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetLatestPentestPreflightOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Latest Pentest Preflight for Application + tags: + - Applications + - Pentest + - Preflight + /dast/pentest/applications/{applicationId}/preflight/quota: + get: + description: >- + Returns the daily preflight usage and limit for an application. Used by the UI to render an indicator and + disable buttons when the limit is reached. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: applicationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestPreflightQuotaOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Preflight Quota + tags: + - Applications + - Pentest + - Preflight + /dast/pentest/findings: + get: + description: Returns the list of all pentest findings + parameters: + - in: query + name: nextToken + schema: + type: string + - in: query + name: limit + schema: + type: integer + - in: query + name: scanId + schema: + nullable: true + type: string + - in: query + name: priorityLabel + schema: + nullable: true + type: string + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isLatest + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isResolved + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + type: string + - in: query + name: sort + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Findings + /dast/pentest/findings/{findingId}: + get: + description: Get all the details of a pentest finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Finding + /dast/pentest/findings/{findingId}/allowlist: + post: + description: Allowlist a pentest finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistPentestFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + summary: Allowlist Pentest Finding + /dast/pentest/findings/{findingId}/autofix/activity: + get: + description: >- + Cursor-paginated autofix activity log for UI polling. Returns empty list when no autofix run exists. `limit` + defaults to 50 and is clamped to [1, 200]; `since_id` is the ID of the last entry the client has already seen + (use the `nextCursor` value from a prior response). + parameters: + - in: query + name: since_id + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAutofixActivityLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get DAST Pentest Finding Autofix Activity + /dast/pentest/findings/{findingId}/autofix/cache/diff: + get: + description: Get the cached autofix diff for a pentest finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestFindingAutofixDiffOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Finding Autofix Diff + /dast/pentest/findings/{findingId}/autofix/fix: + post: + description: Creates a pull request to fix a given DAST pentest finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAutofixDASTPentestFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAutofixDASTPentestFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post DAST Pentest Finding AutoFix + /dast/pentest/findings/{findingId}/autofix/state: + get: + description: >- + Authoritative per-finding autofix state — runs stale-state rescue + live git-platform reconcile. Slow by design; + the dashboard polls this on a ~30s cadence alongside the fast /autofix/status. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDASTFindingAutofixStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get DAST Pentest Finding Autofix State + /dast/pentest/findings/{findingId}/autofix/status: + get: + description: Lightweight per-finding autofix lifecycle status for UI polling. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDASTFindingAutofixStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get DAST Pentest Finding Autofix Status + /dast/pentest/findings/{findingId}/events: + get: + description: Returns the list of all the events for a given Pentest finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + summary: Get Pentest Finding Events + /dast/pentest/findings/{findingId}/full: + get: + description: Get the full pentest finding, including the triage + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestFindingFullOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Finding Full + /dast/pentest/findings/{findingId}/ticket: + post: + description: Creates a Jira ticket for a given pentest finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketPentestFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketPentestFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Jira Ticket for Pentest Finding + /dast/pentest/findings/{findingId}/triage: + get: + description: Get the full pentest finding, including the triage + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestFindingFullOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Finding Full + /dast/pentest/findings/{findingId}/unallowlist: + post: + description: Unallowlist a pentest finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowlistPentestFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + summary: Unallowlist Pentest Finding + /dast/pentest/preflights/{preflightId}: + get: + description: Returns a single pentest preflight by ID, including the readiness summary when complete. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: preflightId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestPreflightOutput' + description: OK + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Preflight + tags: + - Applications + - Pentest + - Preflight + /dast/pentest/preflights/{preflightId}/events: + get: + description: >- + Returns the live event stream for a preflight execution. Use the `afterSeq` query parameter (echoing the + previous response's `highestSeq`) for incremental polling. + parameters: + - in: query + name: afterSeq + schema: + format: int64 + type: integer + - in: query + name: limit + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: preflightId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestPreflightEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Preflight Events + tags: + - Applications + - Pentest + - Preflight + /dast/pentest/scans: + get: + description: Returns all pentest scans for a tenant + parameters: + - in: query + name: nextToken + schema: + type: string + - in: query + name: limit + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestScansOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Scans + /dast/pentest/scans/{scanId}: + get: + description: Returns the details of a pentest scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Scan + /dast/pentest/scans/{scanId}/findings: + get: + description: Returns the list of all the pentest findings from a scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestScanFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Scan Findings + /dast/pentest/scans/{scanId}/hypotheses: + get: + description: Returns the auth matrix hypotheses with full evidence for a pentest scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAuthMatrixHypothesesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Auth Matrix Hypotheses + /dast/pentest/scans/{scanId}/logs: + get: + description: Returns the network logs for a specific pentest sub-agent + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSubAgentNetworkLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Sub-Agent Network Log + /dast/pentest/scans/{scanId}/report: + get: + description: Returns the report of a pentest scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestScanReportOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Scan Report + /dast/pentest/scans/{scanId}/report/download: + get: + description: Returns the download url of a pentest scan report + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestScanReportDownloadURLOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Scan Report Download URL + /dast/pentest/scans/{scanId}/report/external/pdf: + get: + description: Returns a presigned URL to download the external customer-facing PDF report of a pentest scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestScanReportPDFOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Scan External Report PDF + /dast/pentest/scans/{scanId}/report/pdf: + get: + description: Returns a presigned URL to download the PDF report of a pentest scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPentestScanReportPDFOutput' + description: OK + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Scan Report PDF + /dast/pentest/scans/{scanId}/stop: + post: + description: Request to stop a pentest scan + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: scanId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStopPentestScanOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Stop Pentest Scan + /dast/pentest/start: + post: + description: >- + Start a new pentest scan using the supplied Application configuration. The pentest workflow runs its own + preflight check internally and aborts the scan to human_fallback if the application is not pentestable. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStartPentestScanFromApplicationInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStartPentestScanFromApplicationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Start Pentest Scan from Application + tags: + - Applications + - Pentest + /dast/scans/status/last: + get: + description: Returns the status of the most recent BugHunt scan for the tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDASTLastScanStatusesOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Pentest Last Scan Status + /dast/sourceips: + get: + description: Returns the public IP addresses from which DAST scans originate + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSourceIPsOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Source IPs + /manager/campaigns: + get: + description: Returns a list of campaigns containing full campaign details. + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: List Campaigns + post: + description: Register a new campaign + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCampaignInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCampaignOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Post Campaign + /manager/campaigns/{campaignId}: + delete: + description: Delete a campaign (remove permanently) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Delete Campaign + get: + description: Returns a campaign + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Campaign by ID + patch: + description: Update an existing campaign + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchCampaignInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchCampaignOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Patch Campaign + /manager/campaigns/{campaignId}/events: + get: + description: Returns a list of events for a campaign + parameters: + - description: 'Page number, 1-indexed (default: 1)' + in: query + name: page + schema: + description: 'Page number, 1-indexed (default: 1)' + type: integer + - description: 'Number of events per page (default: 1000)' + in: query + name: pageSize + schema: + description: 'Number of events per page (default: 1000)' + type: integer + - description: Filter by action types (e.g., PR_CREATE, TICKET_CREATE) + in: query + name: actionTypes + schema: + description: Filter by action types (e.g., PR_CREATE, TICKET_CREATE) + items: + type: string + type: array + - description: Filter by statuses (e.g., PENDING, SUCCESSFUL, ERROR) + in: query + name: statuses + schema: + description: Filter by statuses (e.g., PENDING, SUCCESSFUL, ERROR) + items: + type: string + type: array + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Campaign Events + /manager/campaigns/{campaignId}/findings: + get: + description: Returns a list of findingIDs for current and historical findings within the campaign scope. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get (Triaged) Findings Associated with a campaign + /manager/campaigns/{campaignId}/preview: + get: + description: >- + Returns a campaign preview model, with title, description, and mapped finding IDs. For full campaign details use + the GetCampaign endpoint. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignPreviewOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Campaign Preview Details + /manager/campaigns/{campaignId}/runs: + get: + description: Returns the run history (one row per Fargate execution) for a campaign, ordered newest first. + parameters: + - in: query + name: cursor + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignRunsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: List Campaign Runs + /manager/campaigns/{campaignId}/runs/{runId}: + get: + description: Returns a single campaign run with the resolved plan blob. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: campaignId + required: true + schema: + type: string + - in: path + name: runId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignRunOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Campaign Run + /manager/campaigns/default: + get: + description: Returns a list of generated default campaigns + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDefaultCampaignsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Default Campaigns + /manager/campaigns/default/generate: + post: + description: Trigger the campaign generator to create default campaigns + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGenerateDefaultCampaignsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Too Many Requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Generate Default Campaigns + /manager/campaigns/findings: + get: + description: Returns a list of all findings across all campaigns + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAllCampaignsFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get All Campaigns Findings + /manager/campaigns/metrics/refresh: + get: + description: Refresh and recalculate campaign metrics + parameters: + - description: 'Whether to include expired campaigns in the metrics refresh (default: false)' + in: query + name: includeExpired + schema: + description: 'Whether to include expired campaigns in the metrics refresh (default: false)' + type: boolean + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignMetricsRefreshOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Too Many Requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Refresh Campaign Metrics + /manager/campaigns/previews: + get: + description: Returns a list of campaign previews with title, description, and mapped finding IDs + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignPreviewsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Campaign Previews + /manager/campaigns/summaries: + get: + description: Returns a list of campaign summaries from plans + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCampaignSummariesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Campaign Summaries + /manager/chat/sessions: + get: + description: Returns a paginated list of chat sessions for the authenticated user. + parameters: + - in: query + name: limit + schema: + type: integer + - in: query + name: nextToken + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListChatSessionsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Chat Sessions + /manager/chat/sessions/{chatID}: + delete: + description: Delete a chat session and its associated chat history. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: chatID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteChatSessionOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Chat Session + get: + description: Returns a single chat session by ID. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: chatID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetChatSessionOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Chat Session + patch: + description: Update the title of a chat session. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: chatID + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchChatSessionInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchChatSessionOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Patch Chat Session + /manager/chat/sessions/{chatID}/actions: + get: + description: Returns the pending actions for a chat session. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: chatID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetChatSessionActionsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Chat Session Actions + /manager/chat/sessions/{chatID}/audit: + get: + description: Returns the audit trail of actions taken in a chat session. + parameters: + - in: query + name: limit + schema: + type: integer + - in: query + name: nextToken + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: chatID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetChatSessionAuditOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get chat session audit trail + /manager/chat/sessions/{chatID}/history: + get: + description: Returns the paginated message history for a chat session. + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: chatID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetChatSessionHistoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Chat Session History + /manager/config: + get: + description: Fetches the Manager configuration for this tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetManagerConfigOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Manager config + post: + description: Stores the Manager configuration for this tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostManagerConfigInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostManagerConfigOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Update Manager config + /manager/credits: + get: + description: Returns the available credit balance. Credits cap how many actions Nullify can take on this tenant's behalf. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCreditsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Manager credit balance + post: + description: >- + Increment or decrement the available credit balance. Credits cap how many actions Nullify can take on this + tenant's behalf. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreditsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreditsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Update Manager credit balance + /manager/customer-questions: + delete: + description: Delete all customer question sets for a tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteAllCustomerQuestionSetsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete All Customer Question Sets + get: + description: List all generated customer question sets for the tenant + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCustomerQuestionSetsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Customer Question Sets + /manager/customer-questions/{questionSetId}: + delete: + description: Delete a customer question set and all its questions + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: questionSetId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteCustomerQuestionSetOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Customer Question Set + get: + description: Get a customer question set by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: questionSetId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCustomerQuestionSetOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Customer Question Set + /manager/customer-questions/{questionSetId}/answers/{questionId}: + patch: + description: Submit an answer for a customer question + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: questionSetId + required: true + schema: + type: string + - in: path + name: questionId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchCustomerQuestionAnswerInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchCustomerQuestionAnswerOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Submit Question Answer + /manager/customer-questions/{questionSetId}/questions/{questionId}: + delete: + description: Delete an individual question from a question set + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: questionSetId + required: true + schema: + type: string + - in: path + name: questionId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteCustomerQuestionOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Delete Customer Question + /manager/escalations: + get: + description: Returns a list of escalations (open and resolved) + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetEscalationsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Escalations + /manager/escalations/{escalationId}: + patch: + description: Update an existing escalation + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: escalationId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchEscalationsInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Patch Escalation + /manager/events: + get: + description: Returns a list of events across all campaigns + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Events + /manager/events/{eventId}: + delete: + description: Delete a single event by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: eventId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsDeleteEventOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Delete Event + /manager/events/deduplicate: + post: + description: Remove duplicate events from the database + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostDeduplicateEventsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostDeduplicateEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Deduplicate Events + /manager/findings/{findingId}/events: + get: + description: Returns a list of events associated with a finding + parameters: + - description: Filter by action types (e.g., PR_CREATE, TICKET_CREATE) + in: query + name: actionTypes + schema: + description: Filter by action types (e.g., PR_CREATE, TICKET_CREATE) + items: + type: string + type: array + - description: Filter by statuses (e.g., PENDING, SUCCESSFUL, ERROR) + in: query + name: statuses + schema: + description: Filter by statuses (e.g., PENDING, SUCCESSFUL, ERROR) + items: + type: string + type: array + - description: Maximum number of events to return (default 100, max 1000) + in: query + name: limit + schema: + description: Maximum number of events to return (default 100, max 1000) + type: integer + - description: Pagination cursor from previous request + in: query + name: cursor + schema: + description: Pagination cursor from previous request + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Finding Events + /manager/groundrules: + get: + description: Fetches the ground rules Nullify follows for this tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetManagerGroundRulesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Manager ground rules + patch: + description: Update an existing ground rules + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchGroundRulesInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchGroundRulesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Patch a GroundRules object to S3 + post: + description: Provide a list of enabled/disabled action types + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostManagerGroundRulesInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostManagerGroundRulesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Post a GroundRules object to S3 + /manager/metrics: + get: + description: Returns metrics for the manager + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetManagerMetricsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Metrics + /manager/plans: + get: + description: Returns a list of plans + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - in: query + name: campaignId + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetPlansOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Plans + /manager/state: + get: + description: Returns the current state of the manager + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetManagerStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Manager State + /manager/state/latest: + get: + description: Returns the current state of the manager (legacy endpoint) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetManagerStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Manager State (Legacy) + /manager/states: + get: + description: Returns a history of manager states + parameters: + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetManagerStatesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Manager States + /manager/strategy: + get: + description: Get the currently active security program strategy + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetStrategyOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Active Strategy + patch: + description: Edit the active security program strategy. Each edit creates a new version. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchStrategyInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchStrategyOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Too Many Requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Patch Active Strategy + /manager/strategy/trigger: + post: + description: Trigger the strategy agent to generate a new security program strategy + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsTriggerStrategyOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Too Many Requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Trigger Strategy Generation + /manager/strategy/versions: + get: + description: Get historical security program strategy versions in descending order. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: page + schema: + type: integer + - in: query + name: pageSize + schema: + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsListStrategyVersionsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Strategy Versions + /manager/tacit-knowledge/trigger: + post: + description: Trigger the tacit knowledge to process findings and generate customer questions + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsTriggerTacitKnowledgeOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Too Many Requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Trigger TacitKnowledge + /manager/threat-investigations: + get: + description: Returns a list of threat investigations detected by threat intelligence + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: query + name: page + schema: + default: 1 + type: integer + - in: query + name: pageSize + schema: + default: 20 + type: integer + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetThreatInvestigationsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Threat Investigations + post: + description: Create a new threat investigation in PENDING status + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostThreatInvestigationInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostThreatInvestigationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Post Threat Investigation + /manager/threat-investigations/{threatInvestigationId}: + get: + description: Returns a single threat investigation with its events + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: threatInvestigationId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetThreatInvestigationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Get Threat Investigation + patch: + description: Perform an action on a threat investigation (e.g. activate) + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: threatInvestigationId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchThreatInvestigationInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchThreatInvestigationOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Patch Threat Investigation + /manager/trigger: + post: + description: Starts a Manager run for this tenant. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsTriggerCampaignsOrchestratorInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsTriggerCampaignsOrchestratorOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '429': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Too Many Requests + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + '504': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Gateway Timeout + summary: Start a Manager run + /orchestrator/autofix/batch: + post: + description: Start a batch autofix step function to fix multiple findings + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBatchAutofixInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBatchAutofixOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Start Batch Autofix + /orchestrator/autofix/batch/{executionId}: + get: + description: Get the status of a batch autofix execution + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: executionId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetBatchAutofixStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Batch Autofix Status + /orchestrator/codereviews: + get: + description: Get the list of code reviews for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCodeReviewsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Code Reviews + /orchestrator/codereviews/{id}: + get: + description: Get a specific code review by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: id + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetCodeReviewOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Code Review + /orchestrator/findings/{findingID}/autofix-iterations: + get: + description: Returns the autofix iteration timeline for a finding, oldest first. + parameters: + - in: query + name: findingType + required: true + schema: + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetFindingAutofixIterationsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '401': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Unauthorized + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Autofix Iterations + /orchestrator/findings/retriage: + post: + description: Queue findings for retriage processing via Step Functions + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Retriage Findings + /orchestrator/onboarding/complete: + post: + description: Internal endpoint to mark onboarding as complete for testing purposes + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsCompleteOnboardingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsCompleteOnboardingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Complete Onboarding (Test Only) + /orchestrator/onboarding/start: + post: + description: Start the onboarding pipeline for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStartOnboardingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsStartOnboardingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Start Onboarding + /orchestrator/onboarding/status: + get: + description: Get the current onboarding status for the tenant + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetOnboardingStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Onboarding Status + /sast/events: + get: + description: "Returns SAST events after a specified timestamp or event ID.\n\t\tAll events are returned if no timestamp or event ID is provided.\n\t\tA maximum of 100 events can be returned per request." + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: fromTime + schema: + nullable: true + type: string + - in: query + name: eventType + schema: + items: + type: string + type: array + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: findingId + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SAST Events + /sast/findings: + get: + description: Returns a filtered set of SAST findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: priorityLabel + schema: + nullable: true + type: string + - in: query + name: severity + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: hasPullRequest + schema: + nullable: true + type: boolean + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - description: if not provided, all repositories will be included + in: query + name: repositoryIds + schema: + description: if not provided, all repositories will be included + items: + type: string + type: array + - description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isArchived + schema: + nullable: true + type: boolean + - description: true = AI code-review only, false = rule-only, omitted = both + in: query + name: aiGenerated + schema: + description: true = AI code-review only, false = rule-only, omitted = both + nullable: true + type: boolean + - in: query + name: isLatest + schema: + nullable: true + type: boolean + - description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + in: query + name: autoFixState + schema: + description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + nullable: true + type: string + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SAST Findings + /sast/findings/{findingId}: + get: + description: Returns a given finding with explanation and impact + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding + patch: + description: Update a given finding with the fields provided + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSASTFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSASTFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Finding + /sast/findings/{findingId}/allowlist: + post: + description: Allowlists a finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSASTFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSASTFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Finding + /sast/findings/{findingId}/autofix/activity: + get: + description: >- + Cursor-paginated autofix activity log for UI polling. Returns empty list when no autofix run exists. `limit` + defaults to 50 and is clamped to [1, 200]; `since_id` is the ID of the last entry the client has already seen + (use the `nextCursor` value from a prior response). + parameters: + - in: query + name: since_id + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAutofixActivityLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SAST Finding Autofix Activity + /sast/findings/{findingId}/autofix/cache/diff: + get: + description: Gets the git diffs for a finding's proposed autofix + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingFixOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Autofix Diff + /sast/findings/{findingId}/autofix/fix: + post: + description: Creates a pull request to fix a given finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAutofixSASTFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAutofixSASTFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Post Finding AutoFix + /sast/findings/{findingId}/autofix/state: + get: + description: >- + Authoritative per-finding autofix state — runs stale-state rescue + live git-platform reconcile. Slow by design; + the dashboard polls this on a ~30s cadence alongside the fast /autofix/status. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingAutofixStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SAST Finding Autofix State + /sast/findings/{findingId}/autofix/status: + get: + description: Lightweight per-finding autofix lifecycle status for UI polling. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingAutofixStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SAST Finding Autofix Status + /sast/findings/{findingId}/events: + get: + description: Returns a list of events for a given finding. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Events + /sast/findings/{findingId}/ticket: + post: + description: Creates a ticket (Jira or Linear) for a given finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the finding to create a Jira ticket for + in: path + name: findingId + required: true + schema: + description: The ID of the finding to create a Jira ticket for + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSASTFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSASTFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Ticket + /sast/findings/{findingId}/triage: + get: + description: Returns the triage data for a specific finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingTriageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Triaged Finding + /sast/findings/{findingId}/unallowlist: + post: + description: Unallowlists a finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowlistSASTFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Unallowlist Finding + /sast/findings/{findingId}/users: + get: + description: Returns the users associated with a specific finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Users + /sast/findings/allowlist: + post: + description: Allowlist a list of SAST findings, by findingsID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowListSASTFindingBatchInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Batch of SAST Findings + /sast/findings/detailed: + get: + description: Returns current SAST findings in default branches + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: priorityLabel + schema: + nullable: true + type: string + - in: query + name: severity + schema: + nullable: true + type: string + - in: query + name: language + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: hasPullRequest + schema: + nullable: true + type: boolean + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isArchived + schema: + nullable: true + type: boolean + - description: true = AI code-review only, false = rule-only, omitted = both + in: query + name: aiGenerated + schema: + description: true = AI code-review only, false = rule-only, omitted = both + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingsDetailedOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Findings Detailed + /sast/findings/preview: + get: + description: Returns a filtered set of SAST findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: priorityLabel + schema: + nullable: true + type: string + - in: query + name: severity + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: hasPullRequest + schema: + nullable: true + type: boolean + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - description: if not provided, all repositories will be included + in: query + name: repositoryIds + schema: + description: if not provided, all repositories will be included + items: + type: string + type: array + - description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isArchived + schema: + nullable: true + type: boolean + - description: true = AI code-review only, false = rule-only, omitted = both + in: query + name: aiGenerated + schema: + description: true = AI code-review only, false = rule-only, omitted = both + nullable: true + type: boolean + - in: query + name: isLatest + schema: + nullable: true + type: boolean + - description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + in: query + name: autoFixState + schema: + description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + nullable: true + type: string + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SAST Findings + /sast/repositories: + get: + description: >- + Returns a map of repository stats. The map is sorted by repositoryID and contains a list of repository stats for + each repositoryID. + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTRepositoriesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repositories + /sast/repositories/{repositoryId}: + get: + description: >- + Returns a sorted map of repository stats. The map is sorted by repositoryID and contains a list of repository + stats for each repositoryID. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSASTRepositoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repository Stats + /sast/scan-runs: + get: + parameters: + - description: Repository ID to list scan runs for + in: query + name: repositoryId + required: true + schema: + description: Repository ID to list scan runs for + type: string + - description: Max scan runs per page (default 10, max 50) + in: query + name: limit + schema: + description: Max scan runs per page (default 10, max 50) + nullable: true + type: integer + - description: Pagination offset (default 0) + in: query + name: offset + schema: + description: Pagination offset (default 0) + nullable: true + type: integer + - description: Sort order by start time (default newest) + in: query + name: sort + schema: + description: Sort order by start time (default newest) + enum: + - newest + - oldest + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetScanRunsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Scan Runs + /sca/containers/findings: + get: + description: Returns a filtered set of SCA container findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: package + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - description: combination of isFixed, isFalsePositive and isAllowlisted + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive and isAllowlisted + nullable: true + type: boolean + - description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + in: query + name: autoFixState + schema: + description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + nullable: true + type: string + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Container Findings + /sca/containers/findings/{findingId}: + get: + description: Returns a given finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Container Finding + patch: + description: Update a given finding with the fields provided + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSCAContainerFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSCAContainerFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Container Finding + /sca/containers/findings/{findingId}/allowlist: + post: + description: Allowlist a container finding and record reason + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSCAContainerFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Container Finding + /sca/containers/findings/{findingId}/autofix/activity: + get: + description: >- + Cursor-paginated autofix activity log for UI polling. Returns empty list when no autofix run exists. `limit` + defaults to 50 and is clamped to [1, 200]; `since_id` is the ID of the last entry the client has already seen + (use the `nextCursor` value from a prior response). + parameters: + - in: query + name: since_id + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAutofixActivityLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Container Finding Autofix Activity + /sca/containers/findings/{findingId}/autofix/fix: + post: + description: Raises fix PRs for existing container findings given their IDs + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSCAContainerFindingFixInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSCAContainerFindingFixOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Fix Container Findings + /sca/containers/findings/{findingId}/autofix/state: + get: + description: >- + Authoritative per-finding autofix state — runs stale-state rescue + live git-platform reconcile. Slow by design; + the dashboard polls this on a ~30s cadence alongside the fast /autofix/status. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingAutofixStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Container Finding Autofix State + /sca/containers/findings/{findingId}/autofix/status: + get: + description: Lightweight per-finding autofix lifecycle status for UI polling. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingAutofixStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Container Finding Autofix Status + /sca/containers/findings/{findingId}/events: + get: + description: Returns a list of events for a given finding. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Container Finding Events + /sca/containers/findings/{findingId}/ticket: + post: + description: Creates a Jira ticket for a given container finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketDependencyFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketDependencyFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Jira Ticket + /sca/containers/findings/{findingId}/triage: + get: + description: Returns the triage data for a specific finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingTriageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Triaged Finding + /sca/containers/findings/{findingId}/unallowlist: + post: + description: Unallowlist a container finding and record reason + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowlistSCAContainerFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Unallowlist Container Finding + /sca/containers/findings/{findingId}/users: + get: + description: Returns the users related to a given finding based on git history + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Related Users + /sca/containers/findings/detailed: + get: + description: Returns current SCA container findings in default branches based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: package + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - description: combination of isFixed, isFalsePositive and isAllowlisted + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive and isAllowlisted + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingsDetailedOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Container Findings [DEPRECATED - TO BE REMOVED BY 2025] + /sca/containers/findings/preview: + get: + description: Returns a filtered set of SCA container findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: package + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - description: combination of isFixed, isFalsePositive and isAllowlisted + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive and isAllowlisted + nullable: true + type: boolean + - description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + in: query + name: autoFixState + schema: + description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + nullable: true + type: string + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAContainerFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Container Findings Preview + /sca/dependencies/findings: + get: + description: Returns a filtered set of SCA dependency findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: package + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - description: combination of isFixed, isFalsePositive and isAllowlisted + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive and isAllowlisted + nullable: true + type: boolean + - description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + in: query + name: autoFixState + schema: + description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + nullable: true + type: string + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Dependency Findings + /sca/dependencies/findings/{findingId}: + get: + description: Returns a given finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding + patch: + description: Update a given finding with the fields provided + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSCADependencyFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSCADependencyFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Dependencies Finding + /sca/dependencies/findings/{findingId}/allowlist: + post: + description: Allowlist a dependency finding and record reason + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSCADependencyFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Dependency Finding + /sca/dependencies/findings/{findingId}/autofix/activity: + get: + description: >- + Cursor-paginated autofix activity log for UI polling. Returns empty list when no autofix run exists. `limit` + defaults to 50 and is clamped to [1, 200]; `since_id` is the ID of the last entry the client has already seen + (use the `nextCursor` value from a prior response). + parameters: + - in: query + name: since_id + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAutofixActivityLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Dependency Finding Autofix Activity + /sca/dependencies/findings/{findingId}/autofix/cache/diff: + get: + description: Gets the git diffs for a finding's proposed fix + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingFixOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Dependency Finding Fix + /sca/dependencies/findings/{findingId}/autofix/fix: + post: + description: Raises fix PRs for existing dependency finding given its ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSCADependencyFindingFixInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostSCADependencyFindingFixOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Fix Dependency Finding + /sca/dependencies/findings/{findingId}/autofix/state: + get: + description: >- + Authoritative per-finding autofix state — runs stale-state rescue + live git-platform reconcile. Slow by design; + the dashboard polls this on a ~30s cadence alongside the fast /autofix/status. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingAutofixStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Dependency Finding Autofix State + /sca/dependencies/findings/{findingId}/autofix/status: + get: + description: Lightweight per-finding autofix lifecycle status for UI polling. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingAutofixStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Dependency Finding Autofix Status + /sca/dependencies/findings/{findingId}/events: + get: + description: Returns a list of events for a given finding. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Dependency Finding Events + /sca/dependencies/findings/{findingId}/ticket: + post: + description: Creates a Jira ticket for a given finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketDependencyFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketDependencyFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Jira Ticket + /sca/dependencies/findings/{findingId}/triage: + get: + description: Returns the triage data for a specific finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingTriageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Triaged Finding + /sca/dependencies/findings/{findingId}/unallowlist: + post: + description: Unallowlist a dependency finding and record reason + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowlistSCADependencyFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Unallowlist Dependency Finding + /sca/dependencies/findings/{findingId}/users: + get: + description: Returns the users related to a given finding based on git history + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Related Users + /sca/dependencies/findings/detailed: + get: + description: Returns current SCA findings in default branches based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: package + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - description: combination of isFixed, isFalsePositive and isAllowlisted + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive and isAllowlisted + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingsDetailedOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Dependency Findings Detailed [DEPRECATED - TO BE REMOVED BY 2025] + /sca/dependencies/findings/preview: + get: + description: Returns a filtered set of SCA dependency findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: package + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - description: combination of isFixed, isFalsePositive and isAllowlisted + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive and isAllowlisted + nullable: true + type: boolean + - description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + in: query + name: autoFixState + schema: + description: filter by AutoFixState (e.g. 'none' for findings with no cached fix) + nullable: true + type: string + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCADependencyFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Dependency Findings Preview + /sca/events: + get: + description: "Returns SCA events after a specified timestamp or event ID.\n\t\tAll events are returned if no timestamp or event ID is provided.\n\t\tA maximum of 100 events can be returned per request." + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: fromTime + schema: + nullable: true + type: string + - in: query + name: eventType + schema: + items: + type: string + type: array + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: findingId + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCAEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCA Events + /sca/repositories: + get: + description: >- + Returns a sorted map of repository stats. The map is sorted by repositoryID and contains a list of repository + stats for each repositoryID. + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCARepositoriesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repository Stats + /sca/repositories/{repositoryId}: + get: + description: >- + Returns a sorted map of repository stats. The map is sorted by repositoryID and contains a list of repository + stats for each repositoryID. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCARepositoryOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repository Stats + /sca/repositories/{repositoryId}/sbom: + get: + description: Returns the SBOM for a repository + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: repositoryId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCARepositorySBOMOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Repository SBOM + /sca/scan-runs: + get: + parameters: + - description: Repository ID to list scan runs for + in: query + name: repositoryId + required: true + schema: + description: Repository ID to list scan runs for + type: string + - description: SCA scan type + in: query + name: scanType + required: true + schema: + description: SCA scan type + enum: + - sca_dependencies + - sca_containers + type: string + - description: Max scan runs per page (default 10, max 50) + in: query + name: limit + schema: + description: Max scan runs per page (default 10, max 50) + nullable: true + type: integer + - description: Pagination offset (default 0) + in: query + name: offset + schema: + description: Pagination offset (default 0) + nullable: true + type: integer + - description: Sort order by start time (default newest) + in: query + name: sort + schema: + description: Sort order by start time (default newest) + enum: + - newest + - oldest + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetScanRunsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Scan Runs + /scpm/containers/analyze: + post: + description: >- + Queues a container image for malware analysis via the vuln-database Step Function (KIND=oci). Idempotent within + 24h on (registry, repository, reference) OR caller-supplied idempotencyKey. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAnalyzeContainerInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAnalyzeContainerOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Request malware analysis for an OCI container image + /scpm/dependencies: + get: + description: >- + Returns CI/CD dependency inventory for reverse-lookup queries. Use ?name=tj-actions/changed-files to find all + repos using a specific action. + parameters: + - description: Filter by dependency name (e.g., actions/checkout, tj-actions/changed-files) + in: query + name: name + schema: + description: Filter by dependency name (e.g., actions/checkout, tj-actions/changed-files) + nullable: true + type: string + - description: Filter by version reference (requires name) + in: query + name: version + schema: + description: Filter by version reference (requires name) + nullable: true + type: string + - description: Filter by CI/CD platform (github-actions, gitlab-ci, azure-pipelines) + in: query + name: platform + schema: + description: Filter by CI/CD platform (github-actions, gitlab-ci, azure-pipelines) + nullable: true + type: string + - description: Filter by pinned status + in: query + name: pinned + schema: + description: Filter by pinned status + nullable: true + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetDependenciesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get CI/CD Dependencies + /scpm/dependencies/analyze: + post: + description: >- + Queues a dependency version for malware analysis via the vuln-database Step Function. Idempotent within 24h on + (ecosystem, name, version) OR the caller-supplied idempotencyKey. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAnalyzeDependencyInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsAnalyzeDependencyOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Request malware analysis for a dependency + /scpm/dependencies/query/batch: + post: + description: >- + Proxies vuln-database /v1/query/batch for authenticated callers. Caps at 1000 packages per request. Use this + over the public /v1/query endpoint when the caller has tenant identity — it adds per-tenant audit + + rate-limiting. + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsBatchQueryDependenciesInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsBatchQueryDependenciesOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Batch query vulnerabilities + malware verdict for dependencies + /scpm/events: + get: + description: Returns SCPM events after a specified timestamp or event ID. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCPM Events + /scpm/findings: + get: + description: Returns a filtered set of SCPM findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: priorityLabel + schema: + nullable: true + type: string + - in: query + name: severity + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: hasPullRequest + schema: + nullable: true + type: boolean + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - description: if not provided, all repositories will be included + in: query + name: repositoryIds + schema: + description: if not provided, all repositories will be included + items: + type: string + type: array + - description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isArchived + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCPM Findings + /scpm/findings/{findingId}: + get: + description: Returns a given finding with explanation and impact + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding + patch: + description: Update a given finding with the fields provided + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSCPMFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSCPMFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Finding + /scpm/findings/{findingId}/allowlist: + post: + description: Allowlists a finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSCPMFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSCPMFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Finding + /scpm/findings/{findingId}/autofix/activity: + get: + description: >- + Cursor-paginated autofix activity log for UI polling. Returns empty list when no autofix run exists. `limit` + defaults to 50 and is clamped to [1, 200]; `since_id` is the ID of the last entry the client has already seen + (use the `nextCursor` value from a prior response). + parameters: + - in: query + name: since_id + schema: + type: string + - in: query + name: limit + schema: + format: int32 + type: integer + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetAutofixActivityLogOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCPM Finding Autofix Activity + /scpm/findings/{findingId}/autofix/cache: + post: + description: Generates a fix for a finding and caches it in S3 without creating a PR + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCacheAutofixSCPMFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Cache Autofix + /scpm/findings/{findingId}/autofix/cache/create_pr: + post: + description: Creates a pull request using a previously cached autofix + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreatePullRequestSCPMFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreatePullRequestSCPMFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Pull Request from Cached Fix + /scpm/findings/{findingId}/autofix/cache/diff: + get: + description: Get the cached autofix diff for an SCPM finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingFixOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCPM Finding Autofix Diff + /scpm/findings/{findingId}/autofix/fix: + post: + description: Generates a fix and creates a pull request for a finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAutofixSCPMFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAutofixSCPMFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Conflict + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Autofix Finding + /scpm/findings/{findingId}/autofix/state: + get: + description: >- + Authoritative per-finding autofix state — runs stale-state rescue + live git-platform reconcile. Slow by design; + the dashboard polls this on a ~30s cadence alongside the fast /autofix/status. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingAutofixStateOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCPM Finding Autofix State + /scpm/findings/{findingId}/autofix/status: + get: + description: Lightweight per-finding autofix lifecycle status for UI polling. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingAutofixStatusOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCPM Finding Autofix Status + /scpm/findings/{findingId}/events: + get: + description: Returns a list of events for a given finding. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Events + /scpm/findings/{findingId}/triage: + get: + description: Returns the triage data for a specific finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingTriageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Triaged Finding + /scpm/findings/{findingId}/unallowlist: + post: + description: Unallowlists a finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowlistSCPMFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Unallowlist Finding + /scpm/findings/allowlist: + post: + description: Allowlist a list of SCPM findings, by findingsID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowListSCPMFindingBatchInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Batch of SCPM Findings + /scpm/findings/detailed: + get: + description: Returns current SCPM findings in default branches + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: priorityLabel + schema: + nullable: true + type: string + - in: query + name: severity + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: hasPullRequest + schema: + nullable: true + type: boolean + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isArchived + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingsDetailedOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Findings Detailed + /scpm/findings/preview: + get: + description: Returns a filtered set of SCPM findings based on query parameters + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: priorityLabel + schema: + nullable: true + type: string + - in: query + name: severity + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: hasPullRequest + schema: + nullable: true + type: boolean + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: workflow + schema: + nullable: true + type: string + - description: if not provided, all repositories will be included + in: query + name: repositoryIds + schema: + description: if not provided, all repositories will be included + items: + type: string + type: array + - description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + in: query + name: isResolved + schema: + description: combination of isFixed, isFalsePositive, isAllowlisted and isArchived + nullable: true + type: boolean + - in: query + name: isFixed + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isArchived + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSCPMFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get SCPM Findings + /scpm/findings/retriage: + post: + description: Triggers retriage of findings based on the provided filters + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostRetriageSCPMFindingsInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostRetriageSCPMFindingsOutput' + description: OK + summary: Retriage Findings + /scpm/findings/upload: + post: + description: Returns an S3 Presigned URL + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostGetUploadSCPMFindingsURLInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostGetUploadSCPMFindingsURLOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Presigned URL to Upload SCPM Findings + /secrets/credentials/findings: + get: + description: >- + Returns a filtered set of Secrets credential findings based on query parameters. One unique secret hash per + repository. + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: secretType + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: isResolved + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Secrets Credential Findings + /secrets/credentials/findings/{findingId}: + get: + description: Returns a given credential finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Credential Finding + patch: + description: Update a given credential finding with the fields provided + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSecretsFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSecretsFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Credential Finding + /secrets/credentials/findings/{findingId}/allowlist: + post: + description: Allowlist a credential secret + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowListSecretsCredentialFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Credential Finding + /secrets/credentials/findings/{findingId}/events: + get: + description: Returns a list of events for a given finding. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Events + /secrets/credentials/findings/{findingId}/ticket: + post: + description: Creates a ticket for a given credential finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the finding to create a Jira ticket for + in: path + name: findingId + required: true + schema: + description: The ID of the finding to create a Jira ticket for + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSecretsFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSecretsFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Ticket for Credential Finding + /secrets/credentials/findings/{findingId}/triage: + get: + description: Returns the triage data for a specific credential finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingTriageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Triaged Credential Finding + /secrets/credentials/findings/{findingId}/unallowlist: + post: + description: Unallowlist a credential secret + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowListSecretsFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Unallowlist Credential Finding + /secrets/credentials/findings/{findingId}/users: + get: + description: Get users related to a credential finding based on git blame and repository contributions. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Credential Finding Related Users + /secrets/credentials/findings/allowlist/batch: + post: + description: Allowlist a list of credential findings, by findingsID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowListSecretsFindingBatchInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Batch of Credential Findings + /secrets/credentials/findings/detailed: + get: + description: Returns credential secrets summary. One unique secret hash per repository + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: secretType + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: isResolved + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingsDetailedOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Secrets Credential Findings Detailed + /secrets/events: + get: + description: >- + Returns events after a specified timestamp or event ID. All events are returned if no timestamp or event ID is + provided + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: fromTime + schema: + nullable: true + type: string + - in: query + name: numItems + schema: + nullable: true + type: integer + - in: query + name: eventType + schema: + items: + type: string + type: array + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: findingId + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Secret Events + /secrets/findings: + get: + description: >- + Returns a filtered set of Secrets credential findings based on query parameters. One unique secret hash per + repository. + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: secretType + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: isResolved + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Secrets Credential Findings + /secrets/findings/{findingId}: + get: + description: Returns a given credential finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Credential Finding + patch: + description: Update a given credential finding with the fields provided + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSecretsFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSecretsFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Credential Finding + /secrets/findings/{findingId}/allowlist: + post: + description: Allowlist a credential secret + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowListSecretsCredentialFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Credential Finding + /secrets/findings/{findingId}/events: + get: + description: Returns a list of events for a given finding. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingEventsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Finding Events + /secrets/findings/{findingId}/ticket: + post: + description: Creates a ticket for a given credential finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the finding to create a Jira ticket for + in: path + name: findingId + required: true + schema: + description: The ID of the finding to create a Jira ticket for + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSecretsFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSecretsFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Ticket for Credential Finding + /secrets/findings/{findingId}/triage: + get: + description: Returns the triage data for a specific credential finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingTriageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Triaged Credential Finding + /secrets/findings/{findingId}/unallowlist: + post: + description: Unallowlist a credential secret + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowListSecretsFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Unallowlist Credential Finding + /secrets/findings/{findingId}/users: + get: + description: Get users related to a credential finding based on git blame and repository contributions. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Credential Finding Related Users + /secrets/findings/allowlist/batch: + post: + description: Allowlist a list of credential findings, by findingsID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowListSecretsFindingBatchInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Batch of Credential Findings + /secrets/findings/detailed: + get: + description: Returns secrets summary. One unique secret hash per repository + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: secretType + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: isResolved + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingsDetailedOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Secrets Credential Findings Detailed - [DEPRECATED - TO BE REMOVED BY 2025] + /secrets/findings/preview: + get: + description: >- + Returns a filtered set of Secrets credential findings based on query parameters. One unique secret hash per + repository. + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: secretType + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: isResolved + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Secrets Credential Findings + /secrets/scan-runs: + get: + parameters: + - description: Repository ID to list scan runs for + in: query + name: repositoryId + required: true + schema: + description: Repository ID to list scan runs for + type: string + - description: Max scan runs per page (default 10, max 50) + in: query + name: limit + schema: + description: Max scan runs per page (default 10, max 50) + nullable: true + type: integer + - description: Pagination offset (default 0) + in: query + name: offset + schema: + description: Pagination offset (default 0) + nullable: true + type: integer + - description: Sort order by start time (default newest) + in: query + name: sort + schema: + description: Sort order by start time (default newest) + enum: + - newest + - oldest + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetScanRunsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: List Scan Runs + /secrets/sensitivedata/findings: + get: + description: Returns a filtered set of sensitive data findings based on query parameters. + parameters: + - in: query + name: nextToken + schema: + nullable: true + type: string + - in: query + name: limit + schema: + nullable: true + type: integer + - in: query + name: branch + schema: + nullable: true + type: string + - in: query + name: secretType + schema: + nullable: true + type: string + - in: query + name: fileOwnerName + schema: + items: + type: string + type: array + - in: query + name: isResolved + schema: + nullable: true + type: boolean + - in: query + name: isAllowlisted + schema: + nullable: true + type: boolean + - in: query + name: isFalsePositive + schema: + nullable: true + type: boolean + - in: query + name: sortBy + schema: + nullable: true + type: string + - in: query + name: sort + schema: + nullable: true + type: string + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsSensitiveDataFindingsOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Sensitive Data Findings + /secrets/sensitivedata/findings/{findingId}: + get: + description: Returns a specific sensitive data finding by ID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsSensitiveDataFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Sensitive Data Finding + patch: + description: Update a given sensitive data finding with the fields provided + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSecretsSensitiveDataFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPatchSecretsSensitiveDataFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Update Sensitive Data Finding + /secrets/sensitivedata/findings/{findingId}/allowlist: + post: + description: Allowlist a sensitive data (PII) finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSecretsSensitiveDataFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Sensitive Data Finding + /secrets/sensitivedata/findings/{findingId}/ticket: + post: + description: Creates a ticket for a given sensitive data finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - description: The ID of the finding to create a ticket for + in: path + name: findingId + required: true + schema: + description: The ID of the finding to create a ticket for + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSecretsSensitiveDataFindingInput' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostCreateTicketSecretsSensitiveDataFindingOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Create Ticket for Sensitive Data Finding + /secrets/sensitivedata/findings/{findingId}/triage: + get: + description: Returns the triage data for a specific sensitive data finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsSensitiveDataFindingTriageOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Triaged Sensitive Data Finding + /secrets/sensitivedata/findings/{findingId}/unallowlist: + post: + description: Unallowlist a sensitive data (PII) finding + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostUnallowlistSecretsSensitiveDataFindingInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Unallowlist Sensitive Data Finding + /secrets/sensitivedata/findings/{findingId}/users: + get: + description: Get users related to a sensitive data (PII) finding based on git blame and repository contributions. + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + - in: path + name: findingId + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetSecretsSensitiveDataFindingUsersOutput' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Get Sensitive Data Finding Related Users + /secrets/sensitivedata/findings/allowlist/batch: + post: + description: Allowlist a list of sensitive data findings, by findingsID + parameters: + - description: The Azure organization ID + in: query + name: azureOrganizationId + schema: + description: The Azure organization ID + type: string + - description: The Bitbucket workspace ID + in: query + name: bitbucketWorkspaceId + schema: + description: The Bitbucket workspace ID + type: string + - description: The Github owner ID + in: query + name: githubOwnerId + schema: + description: The Github owner ID + format: int64 + type: integer + - description: The GitLab group ID + in: query + name: gitlabGroupId + schema: + description: The GitLab group ID + format: int64 + type: integer + - description: The Nullify installation ID + in: query + name: installationId + schema: + description: The Nullify installation ID + type: string + - description: Filter by Azure repository IDs + in: query + name: azureRepositoryId + schema: + description: Filter by Azure repository IDs + items: + type: string + type: array + - description: Filter by GitHub repository IDs + in: query + name: githubRepositoryId + schema: + description: Filter by GitHub repository IDs + items: + format: int64 + type: integer + type: array + - description: Filter by GitHub team ID + in: query + name: githubTeamId + schema: + description: Filter by GitHub team ID + format: int64 + type: integer + - description: Filter by Bitbucket repository IDs + in: query + name: bitbucketRepositoryId + schema: + description: Filter by Bitbucket repository IDs + items: + type: string + type: array + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostAllowlistSecretsSensitiveDataFindingBatchInput' + responses: + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Not Found + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Allowlist Batch of Sensitive Data Findings + /core/bitbucket/descriptor: + get: + description: Bitbucket connect descriptor json for installing Nullify into a Bitbucket workspace + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBitbucketConnectDescriptorOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Bitbucket Connect Descriptor + /core/bitbucket/disabled: + post: + description: Callback endpoint for when the Bitbucket app is disabled + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBitbucketDisabledInput' + responses: + '204': + description: No Content + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Bitbucket App Disabled + /core/bitbucket/enabled: + post: + description: Callback endpoint for when the Bitbucket app is enabled + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBitbucketEnabledInput' + responses: + '204': + description: No Content + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Bitbucket App Enabled + /core/bitbucket/installed: + post: + description: Callback endpoint for when the Bitbucket app is installed + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBitbucketInstalledInput' + responses: + '204': + description: No Content + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Bitbucket App Installed + /core/bitbucket/uninstalled: + post: + description: Callback endpoint for when the Bitbucket app is installed + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostBitbucketUninstalledInput' + responses: + '204': + description: No Content + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Bitbucket App Uninstalled + /core/jira/descriptor: + get: + description: Jira connect descriptor json for installing Nullify into a Jira workspace + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsGetJiraConnectDescriptorOutput' + description: OK + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Jira Connect Descriptor + /core/jira/installed: + post: + description: Callback endpoint for when the Jira app is installed + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostJiraInstalledInput' + responses: + '204': + description: No Content + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Jira App Installed + /core/jira/uninstalled: + post: + description: Callback endpoint for when the Jira app is uninstalled + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EndpointsPostJiraUninstalledInput' + responses: + '204': + description: No Content + '500': + content: + application/json: + schema: + $ref: '#/components/schemas/RestErrResponse' + description: Internal Server Error + summary: Jira App Uninstalled +components: + schemas: + EndpointsAccountValidationResult: + properties: + assumedRole: + type: string + errorMessage: + type: string + isValid: + type: boolean + status: + type: string + type: object + EndpointsAdminAzureConfigOutput: + properties: + clientId: + type: string + createdAt: + format: date-time + type: string + tenantId: + type: string + updatedAt: + format: date-time + type: string + required: + - clientId + - tenantId + - createdAt + - updatedAt + type: object + EndpointsAdminBotInteraction: + properties: + campaignId: + nullable: true + type: string + eventCreatedAt: + nullable: true + type: string + eventDescription: + nullable: true + type: string + eventId: + nullable: true + type: string + eventStatus: + nullable: true + type: string + findingId: + type: string + findingTitle: + type: string + findingType: + $ref: '#/components/schemas/ModelsFindingType' + interactionType: + type: string + prLink: + nullable: true + type: string + prNumber: + nullable: true + type: string + prStatus: + nullable: true + type: string + repository: + type: string + ticketKey: + nullable: true + type: string + ticketUrl: + nullable: true + type: string + required: + - findingType + - findingId + - findingTitle + - repository + - interactionType + type: object + EndpointsAdminBotInteractionSummary: + properties: + autofixPR: + type: integer + internetSearch: + type: integer + other: + type: integer + prComment: + type: integer + ticketCreate: + type: integer + total: + type: integer + required: + - autofixPR + - internetSearch + - ticketCreate + - prComment + - other + - total + type: object + EndpointsAdminBotInteractionsOutput: + properties: + interactions: + items: + $ref: '#/components/schemas/EndpointsAdminBotInteraction' + nullable: true + type: array + summary: + $ref: '#/components/schemas/EndpointsAdminBotInteractionSummary' + required: + - summary + - interactions + type: object + EndpointsAdminChecklistOutput: + properties: + items: + items: + $ref: '#/components/schemas/ModelsChecklistItem' + nullable: true + type: array + required: + - items + type: object + EndpointsAdminDeleteAWSSettingsOutput: + properties: + message: + type: string + success: + type: boolean + type: object + EndpointsAdminDeleteAzureSettingsOutput: + properties: + message: + type: string + success: + type: boolean + type: object + EndpointsAdminDeleteGCPSettingsOutput: + properties: + message: + type: string + success: + type: boolean + type: object + EndpointsAdminFileContentsOutput: + properties: + data: + type: string + required: + - data + type: object + EndpointsAdminFileOwnersInput: + properties: + files: + items: + $ref: '#/components/schemas/EndpointsFileOwnersRequest' + nullable: true + type: array + required: + - files + type: object + EndpointsAdminFileOwnersOutput: + properties: + data: + items: + $ref: '#/components/schemas/ModelsFileOwners' + nullable: true + type: array + required: + - data + type: object + EndpointsAdminFindingsDownloadInput: + properties: + query: + $ref: '#/components/schemas/ModelsUnifiedFindingsQuery' + required: + - query + type: object + EndpointsAdminFindingsDownloadOutput: + properties: + csv: + type: string + type: object + EndpointsAdminFixEffortMapInput: + properties: + easy: + type: integer + hard: + type: integer + id: + type: string + medium: + type: integer + required: + - id + - easy + - medium + - hard + type: object + EndpointsAdminFixEffortMapOutput: + properties: + createdAt: + type: string + easy: + type: integer + hard: + type: integer + id: + type: string + medium: + type: integer + updatedAt: + type: string + required: + - id + - easy + - medium + - hard + type: object + EndpointsAdminGetAWSSettingsOutput: + properties: + awsAccounts: + items: + $ref: '#/components/schemas/ModelsAWSAccountWithStatus' + nullable: true + type: array + createdAt: + type: string + externalId: + type: string + iamRoleName: + type: string + lastValidatedAt: + type: string + lastValidationStatus: + type: string + nullifyK8sCollectorRoleArn: + type: string + nullifyKMSKeyArn: + type: string + nullifyRoleArn: + type: string + nullifyS3Bucket: + type: string + overallStatus: + type: string + preferredDeployment: + $ref: '#/components/schemas/ModelsDeploymentType' + updatedAt: + type: string + type: object + EndpointsAdminGetAzureConfigOutput: + properties: + clientSecretUploaded: + type: boolean + configUploaded: + type: boolean + configuration: + $ref: '#/components/schemas/EndpointsAdminAzureConfigOutput' + redactedClientSecret: + type: string + version: + type: string + required: + - configUploaded + - clientSecretUploaded + type: object + EndpointsAdminGetAzureSettingsOutput: + properties: + clientId: + type: string + createdAt: + type: string + displayName: + type: string + lastValidatedAt: + type: string + lastValidationStatus: + type: string + overallStatus: + type: string + subscriptions: + items: + $ref: '#/components/schemas/ModelsAzureSubscriptionWithStatus' + nullable: true + type: array + tenantId: + type: string + updatedAt: + type: string + useManagedIdentity: + type: boolean + type: object + EndpointsAdminGetFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsUnifiedFindingPreview' + required: + - finding + type: object + EndpointsAdminGetFixEffortOutput: + properties: + fixEffort: + $ref: '#/components/schemas/EndpointsAdminFixEffortMapOutput' + version: + type: string + required: + - fixEffort + type: object + EndpointsAdminGetGCPSettingsOutput: + properties: + createdAt: + type: string + displayName: + type: string + gkeClusterOidcIssuerUrls: + items: + type: string + type: array + gkeServiceAccountUniqueId: + type: string + lastValidatedAt: + type: string + lastValidationStatus: + type: string + nullifyK8sCollectorRoleArn: + type: string + overallStatus: + type: string + projects: + items: + $ref: '#/components/schemas/ModelsGCPProjectWithStatus' + nullable: true + type: array + updatedAt: + type: string + workloadIdentityProvider: + type: string + workloadIdentityServiceAccountEmail: + type: string + type: object + EndpointsAdminGetGitHubAppSettingsOutput: + properties: + error: + type: string + events: + items: + type: string + nullable: true + type: array + incorrect_permissions: + additionalProperties: + $ref: '#/components/schemas/EndpointsIncorrectPermission' + nullable: true + type: object + installation_id: + format: int64 + type: integer + missing_events: + items: + type: string + nullable: true + type: array + missing_permissions: + additionalProperties: + type: string + nullable: true + type: object + permissions: + additionalProperties: + type: string + nullable: true + type: object + required: + - events + - permissions + - installation_id + - missing_events + - missing_permissions + - incorrect_permissions + type: object + EndpointsAdminGetIntegrationTeamsOutput: + properties: + teams: + items: + $ref: '#/components/schemas/ModelsTeam' + nullable: true + type: array + version: + type: string + required: + - teams + type: object + EndpointsAdminGetIntegrationUsersOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsUser' + nullable: true + type: array + version: + type: string + required: + - users + type: object + EndpointsAdminGetJiraConfigOutput: + properties: + configuration: + $ref: '#/components/schemas/ModelsJiraConfig' + enabled: + type: boolean + version: + type: string + required: + - enabled + type: object + EndpointsAdminGetOrganizationOutput: + properties: + organization: + $ref: '#/components/schemas/ModelsOrganization' + version: + type: string + type: object + EndpointsAdminGetRepositoriesOutput: + properties: + nextToken: + type: string + numItems: + type: integer + repositories: + items: + $ref: '#/components/schemas/ModelsRepositoryPublic' + nullable: true + type: array + version: + type: string + required: + - repositories + - numItems + - nextToken + type: object + EndpointsAdminGetUserInstallationsOutput: + properties: + installations: + items: + $ref: '#/components/schemas/EndpointsAdminInstallationOutput' + nullable: true + type: array + version: + type: string + required: + - installations + type: object + EndpointsAdminGetUsersOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + version: + type: string + type: object + EndpointsAdminInstallationOutput: + properties: + avatarUrl: + type: string + name: + type: string + nullifyBaseUrl: + nullable: true + type: string + provider: + $ref: '#/components/schemas/ModelsOwnerProvider' + queryParameters: + additionalProperties: + type: string + nullable: true + type: object + required: + - provider + - name + - avatarUrl + - queryParameters + type: object + EndpointsAdminK8SConnectorWhitelistInput: + properties: + accountIds: + description: Optional list of AWS account IDs to whitelist. If empty, all accounts from stored AWS settings are used. + items: + type: string + type: array + type: object + EndpointsAdminK8SConnectorWhitelistOutput: + properties: + kmsError: + type: string + kmsPolicyUpdated: + type: boolean + message: + type: string + s3Error: + type: string + s3PolicyUpdated: + type: boolean + type: object + EndpointsAdminListUnifiedEventsByTeamInput: + properties: + afterId: + nullable: true + type: string + afterTimeUnix: + nullable: true + type: integer + autofixId: + nullable: true + type: string + beforeTimeUnix: + nullable: true + type: integer + campaignId: + nullable: true + type: string + eventTypes: + items: + type: string + type: array + findingIds: + items: + type: string + type: array + limit: + nullable: true + type: integer + prCanonicalId: + nullable: true + type: string + runId: + nullable: true + type: string + services: + items: + type: string + type: array + type: object + EndpointsAdminListUnifiedEventsInput: + properties: + afterId: + nullable: true + type: string + afterTimeUnix: + nullable: true + type: integer + autofixId: + nullable: true + type: string + beforeTimeUnix: + nullable: true + type: integer + campaignId: + nullable: true + type: string + eventTypes: + items: + type: string + type: array + findingIds: + items: + type: string + type: array + limit: + nullable: true + type: integer + prCanonicalId: + nullable: true + type: string + runId: + nullable: true + type: string + services: + items: + type: string + type: array + type: object + EndpointsAdminListUnifiedEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/EndpointsUnifiedEventOutput' + nullable: true + type: array + hasMore: + type: boolean + nextCursorId: + nullable: true + type: string + nextCursorTime: + nullable: true + type: integer + version: + type: string + type: object + EndpointsAdminPostAzureCredentialsInput: + properties: + clientId: + type: string + clientSecret: + type: string + tenantId: + type: string + required: + - clientId + - tenantId + type: object + EndpointsAdminPostAzureCredentialsOutput: + properties: + clientId: + type: string + clientSecret: + type: string + createdAt: + format: date-time + type: string + tenantId: + type: string + updatedAt: + format: date-time + type: string + version: + type: string + required: + - clientId + - tenantId + - createdAt + - updatedAt + type: object + EndpointsAdminPostAzureInstallOutput: + properties: + version: + type: string + type: object + EndpointsAdminPutFixEffortInput: + properties: + fixEffort: + $ref: '#/components/schemas/EndpointsAdminFixEffortMapInput' + required: + - fixEffort + type: object + EndpointsAdminPutFixEffortOutput: + properties: + version: + type: string + type: object + EndpointsAdminQueryFindingsInput: + properties: + query: + $ref: '#/components/schemas/ModelsUnifiedFindingsQuery' + required: + - query + type: object + EndpointsAdminQueryFindingsMetricsInput: + properties: + query: + $ref: '#/components/schemas/ModelsLimitedUnifiedFindingsQuery' + required: + - query + type: object + EndpointsAdminQueryFindingsMetricsOutput: + properties: + findingsAnalysis: + $ref: '#/components/schemas/ModelsFindingsMetrics' + version: + type: string + required: + - findingsAnalysis + type: object + EndpointsAdminQueryFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsUnifiedFindingPreview' + nullable: true + type: array + hasMoreData: + type: boolean + page: + type: integer + scrollId: + nullable: true + type: string + total: + type: integer + version: + type: string + required: + - findings + - page + - hasMoreData + - total + type: object + EndpointsAdminUpsertAWSSettingsInput: + properties: + awsAccounts: + items: + $ref: '#/components/schemas/ModelsAWSAccount' + nullable: true + type: array + externalId: + type: string + iamRoleName: + type: string + preferredDeployment: + type: string + required: + - iamRoleName + - awsAccounts + - preferredDeployment + type: object + EndpointsAdminUpsertAWSSettingsOutput: + properties: + awsAccounts: + items: + $ref: '#/components/schemas/ModelsAWSAccountWithStatus' + nullable: true + type: array + externalId: + type: string + lastValidatedAt: + type: string + lastValidationStatus: + type: string + message: + type: string + nullifyKMSKeyArn: + type: string + nullifyRoleArn: + type: string + nullifyS3Bucket: + type: string + overallStatus: + type: string + type: object + EndpointsAdminUpsertAzureSettingsInput: + properties: + clientId: + type: string + clientSecret: + type: string + displayName: + type: string + subscriptions: + items: + $ref: '#/components/schemas/ModelsAzureSubscriptionInput' + type: array + tenantId: + type: string + useManagedIdentity: + type: boolean + required: + - tenantId + type: object + EndpointsAdminUpsertAzureSettingsOutput: + properties: + clientId: + type: string + displayName: + type: string + lastValidatedAt: + type: string + lastValidationStatus: + type: string + message: + type: string + overallStatus: + type: string + subscriptions: + items: + $ref: '#/components/schemas/ModelsAzureSubscriptionWithStatus' + nullable: true + type: array + tenantId: + type: string + useManagedIdentity: + type: boolean + type: object + EndpointsAdminUpsertGCPSettingsInput: + properties: + displayName: + type: string + gkeClusterOidcIssuerUrls: + items: + type: string + type: array + gkeServiceAccountUniqueId: + type: string + projects: + items: + $ref: '#/components/schemas/ModelsGCPProjectInput' + type: array + workloadIdentityProvider: + type: string + workloadIdentityServiceAccountEmail: + type: string + required: + - workloadIdentityProvider + - workloadIdentityServiceAccountEmail + type: object + EndpointsAdminUpsertGCPSettingsOutput: + properties: + displayName: + type: string + gkeClusterOidcIssuerUrls: + items: + type: string + type: array + gkeServiceAccountUniqueId: + type: string + lastValidatedAt: + type: string + lastValidationStatus: + type: string + message: + type: string + nullifyK8sCollectorRoleArn: + type: string + overallStatus: + type: string + projects: + items: + $ref: '#/components/schemas/ModelsGCPProjectWithStatus' + nullable: true + type: array + workloadIdentityProvider: + type: string + workloadIdentityServiceAccountEmail: + type: string + type: object + EndpointsAdminUsageAggregateGroup: + properties: + agent: + nullable: true + type: string + branchType: + nullable: true + type: string + class: + nullable: true + type: string + type: object + EndpointsAdminUsageLedgerEntry: + properties: + agent: + type: string + at: + type: string + branchType: + type: string + budgetKeys: + items: + type: string + nullable: true + type: array + class: + type: string + commitSha: + type: string + entryId: + type: string + environment: + type: string + findingId: + type: string + llm: + additionalProperties: {} + type: object + notes: + type: string + prNumber: + nullable: true + type: integer + projectId: + type: string + repo: + type: string + runId: + type: string + status: + type: string + trigger: + type: string + usd: + format: double + type: number + required: + - entryId + - at + - runId + - agent + - class + - branchType + - usd + - status + - trigger + - budgetKeys + type: object + EndpointsAdminUsageLedgerResponse: + properties: + entries: + items: + $ref: '#/components/schemas/EndpointsAdminUsageLedgerEntry' + nullable: true + type: array + nextToken: + nullable: true + type: string + required: + - entries + type: object + EndpointsAdminUsageMetricsAggregateItem: + properties: + group: + $ref: '#/components/schemas/EndpointsAdminUsageAggregateGroup' + inputTokens: + format: int64 + type: integer + outputTokens: + format: int64 + type: integer + runCount: + format: int64 + type: integer + usd: + format: double + type: number + required: + - group + - usd + - runCount + - inputTokens + - outputTokens + type: object + EndpointsAdminUsageMetricsAggregateOutput: + properties: + asOf: + type: string + totals: + items: + $ref: '#/components/schemas/EndpointsAdminUsageMetricsAggregateItem' + nullable: true + type: array + window: + type: string + required: + - window + - asOf + - totals + type: object + EndpointsAdminUsageMetricsTimeseriesBucket: + properties: + agent: + type: string + class: + type: string + inputTokens: + format: int64 + type: integer + outputTokens: + format: int64 + type: integer + timestamp: + type: string + usd: + format: double + type: number + required: + - timestamp + - agent + - class + - usd + - inputTokens + - outputTokens + type: object + EndpointsAdminUsageMetricsTimeseriesOutput: + properties: + buckets: + items: + $ref: '#/components/schemas/EndpointsAdminUsageMetricsTimeseriesBucket' + nullable: true + type: array + from: + type: string + granularity: + type: string + to: + type: string + required: + - granularity + - from + - to + - buckets + type: object + EndpointsAdminValidateAWSRoleInput: + properties: + accountIds: + items: + type: string + nullable: true + type: array + onboarding: + type: boolean + roleNameToAssume: + type: string + required: + - accountIds + type: object + EndpointsAdminValidateAWSRoleOutput: + properties: + lastValidatedAt: + type: string + lastValidationStatus: + type: string + overallStatus: + type: string + results: + additionalProperties: + $ref: '#/components/schemas/EndpointsAccountValidationResult' + nullable: true + type: object + type: object + EndpointsAdminValidateGCPInput: + properties: + projectIds: + items: + type: string + type: array + type: object + EndpointsAdminValidateGCPOutput: + properties: + lastValidatedAt: + type: string + lastValidationStatus: + $ref: '#/components/schemas/EndpointsCloudValidationStatus' + overallStatus: + $ref: '#/components/schemas/EndpointsCloudValidationStatus' + results: + additionalProperties: + $ref: '#/components/schemas/EndpointsGCPProjectValidationResult' + nullable: true + type: object + type: object + EndpointsCloudValidationStatus: + enum: + - healthy + - unhealthy + type: string + EndpointsContextEnvironment: + enum: + - development + - staging + - production + - unknown + type: string + EndpointsContextIngestCreds: + properties: + accessKeyId: + type: string + expiration: + type: string + secretAccessKey: + type: string + sessionToken: + type: string + type: object + EndpointsContextIngestInput: + properties: + branch: + description: Git branch name (e.g. main, feat/add-vpc) + type: string + commitSha: + description: Git commit SHA + type: string + contextType: + description: Context data type (e.g. terraform, ci_logs) + type: string + environment: + $ref: '#/components/schemas/EndpointsContextEnvironment' + fromPR: + description: PR number that originated this deployment (set on push-to-main after merge) + type: integer + name: + description: >- + Logical name for this context (e.g. networking, ecs-api, CI). Auto-detected by CLI from plan file path or + workflow name. + type: string + prNumber: + description: Pull request number (for PR-scoped uploads) + type: integer + repository: + description: Repository in org/repo format + type: string + required: + - contextType + - repository + - name + type: object + EndpointsContextIngestOutput: + properties: + bucket: + type: string + credentials: + $ref: '#/components/schemas/EndpointsContextIngestCreds' + keyPrefix: + type: string + kmsKeyArn: + type: string + region: + type: string + type: object + EndpointsCount: + properties: + number: + type: integer + startTimeStamp: + format: int64 + type: integer + required: + - startTimeStamp + - number + type: object + EndpointsDeleteBuildkiteIntegrationOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsDeleteCircleCIIntegrationOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsDeleteJenkinsIntegrationOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsDeleteRepositoryPropertyTeamKeyOutput: + properties: + version: + type: string + type: object + EndpointsDeleteServiceAccountOutput: + properties: + version: + type: string + type: object + EndpointsDeleteTeamOutput: + properties: + version: + type: string + type: object + EndpointsDeleteUISavedViewOutput: + properties: + id: + type: string + required: + - id + type: object + EndpointsDeleteUserErasureOutput: + properties: + report: + $ref: '#/components/schemas/EndpointsErasureReport' + type: object + EndpointsErasureReport: + properties: + adminUserDeleted: + type: boolean + auditLogsAnonymized: + format: int64 + type: integer + erasedAt: + type: string + privacyAcknowledgmentsDeleted: + format: int64 + type: integer + teamMembershipsDeleted: + format: int64 + type: integer + userId: + type: string + type: object + EndpointsFileOwnersRequest: + properties: + branchName: + type: string + filePath: + type: string + id: + type: string + repositoryName: + type: string + required: + - id + - repositoryName + - branchName + - filePath + type: object + EndpointsFunnelData: + properties: + CRITICAL: + type: integer + HIGH: + type: integer + LOW: + type: integer + MEDIUM: + type: integer + funnelKey: + type: string + required: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - funnelKey + type: object + EndpointsGCPProjectValidationResult: + properties: + displayName: + type: string + errorMessage: + type: string + isValid: + type: boolean + projectId: + type: string + state: + type: string + status: + $ref: '#/components/schemas/EndpointsGCPProjectValidationStatus' + type: object + EndpointsGCPProjectValidationStatus: + enum: + - valid + - invalid + type: string + EndpointsGetAdminNotificationConfigOutput: + properties: + notifications: + items: + $ref: '#/components/schemas/ModelsNotification' + nullable: true + type: array + version: + type: string + type: object + EndpointsGetBuildkiteIntegrationOutput: + properties: + configured: + type: boolean + orgSlug: + type: string + version: + type: string + required: + - version + - configured + type: object + EndpointsGetCircleCIIntegrationOutput: + properties: + configured: + type: boolean + version: + type: string + required: + - version + - configured + type: object + EndpointsGetCurrentUserOutput: + properties: + userMapping: + $ref: '#/components/schemas/ModelsUserMapping' + username: + type: string + required: + - userMapping + - username + type: object + EndpointsGetJenkinsIntegrationOutput: + properties: + configured: + type: boolean + version: + type: string + required: + - version + - configured + type: object + EndpointsGetLinearInstallOutput: + properties: + authorizeUrl: + description: Linear OAuth authorize URL the UI should navigate to + type: string + required: + - authorizeUrl + type: object + EndpointsGetLinearOAuthStatusOutput: + properties: + installed: + description: True if the tenant has completed the Linear OAuth install + type: boolean + installedAt: + description: When the install was last completed + format: date-time + nullable: true + type: string + required: + - installed + type: object + EndpointsGetPrivacyAcknowledgmentOutput: + properties: + acknowledged: + description: Whether the user has acknowledged this policy version + type: boolean + acknowledgedAt: + description: Timestamp when the user acknowledged (RFC3339) + nullable: true + type: string + policyVersion: + description: The policy version that was checked + type: string + type: object + EndpointsGetProviderUsersOutput: + properties: + numItems: + type: integer + users: + items: + $ref: '#/components/schemas/ModelsUser' + nullable: true + type: array + version: + type: string + required: + - users + type: object + EndpointsGetPullRequestStateOutput: + properties: + pullRequestState: + $ref: '#/components/schemas/ModelsPullRequestStateWithDiffs' + type: object + EndpointsGetRepositoryPropertyTeamKeysOutput: + properties: + keys: + items: + $ref: '#/components/schemas/EndpointsRepositoryPropertyTeamKey' + nullable: true + type: array + version: + type: string + required: + - keys + type: object + EndpointsGetSLAsOutput: + properties: + slas: + items: + $ref: '#/components/schemas/ModelsSLA' + nullable: true + type: array + required: + - slas + type: object + EndpointsGetScanCoverageFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/EndpointsScanCoverageFinding' + nullable: true + type: array + source: + type: string + totalCount: + type: integer + type: object + EndpointsGetScanCoverageOutput: + properties: + repositories: + items: + $ref: '#/components/schemas/EndpointsScanCoverageRepo' + nullable: true + type: array + totalCount: + type: integer + type: object + EndpointsGetServiceAccountsOutput: + properties: + serviceAccounts: + items: + $ref: '#/components/schemas/EndpointsServiceAccount' + nullable: true + type: array + version: + type: string + required: + - serviceAccounts + type: object + EndpointsGetSlackConfigOutput: + properties: + enabled: + type: boolean + message: + type: string + required: + - enabled + type: object + EndpointsGetSlackDistributedInstallOutput: + properties: + authorizeUrl: + description: Slack OAuth v2 authorize URL the UI should navigate to + type: string + required: + - authorizeUrl + type: object + EndpointsGetSuggestedUserMappingsOutput: + properties: + suggestions: + items: + $ref: '#/components/schemas/EndpointsUserMappingSuggestion' + nullable: true + type: array + version: + type: string + required: + - suggestions + type: object + EndpointsGetTeamFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsTeamFinding' + nullable: true + type: array + team: + $ref: '#/components/schemas/ModelsTeam' + version: + type: string + type: object + EndpointsGetTeamOutput: + properties: + team: + $ref: '#/components/schemas/ModelsTeam' + type: object + EndpointsGetTeamSourcePreferencesOutput: + properties: + preferences: + $ref: '#/components/schemas/EndpointsTeamSourcePreferences' + version: + type: string + required: + - preferences + type: object + EndpointsGetTeamSyncRunsOutput: + properties: + runs: + items: + $ref: '#/components/schemas/EndpointsTeamSyncRun' + nullable: true + type: array + version: + type: string + required: + - runs + type: object + EndpointsGetTeamsAppZipOutput: + properties: + presignedUrl: + type: string + required: + - presignedUrl + type: object + EndpointsGetTeamsOutput: + properties: + nextToken: + type: string + numItems: + type: integer + teams: + items: + $ref: '#/components/schemas/ModelsTeam' + nullable: true + type: array + required: + - teams + - nextToken + - numItems + type: object + EndpointsGetUISavedViewsOutput: + properties: + savedViews: + items: + $ref: '#/components/schemas/ModelsUISavedView' + nullable: true + type: array + required: + - savedViews + type: object + EndpointsGetUserDataExportOutput: + properties: + export: + $ref: '#/components/schemas/EndpointsUserDataExport' + type: object + EndpointsGetUserMappingOutput: + properties: + user: + $ref: '#/components/schemas/ModelsUserMapping' + required: + - user + type: object + EndpointsGetUserMappingsOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsUserMapping' + nullable: true + type: array + required: + - users + type: object + EndpointsGetUserOutput: + properties: + user: + $ref: '#/components/schemas/ModelsUser' + version: + type: string + type: object + EndpointsIncorrectPermission: + properties: + actual: + type: string + expected: + type: string + required: + - expected + - actual + type: object + EndpointsListTeamFindingsOutput: + properties: + teamFindings: + items: + $ref: '#/components/schemas/ModelsTeamFindings' + nullable: true + type: array + version: + type: string + type: object + EndpointsMappedCanonicalIDs: + properties: + jira: + type: string + slack: + type: string + teams: + type: string + required: + - slack + - jira + - teams + type: object + EndpointsMetricData: + properties: + lastMonth: + format: float + type: number + thisMonth: + format: float + type: number + required: + - thisMonth + - lastMonth + type: object + EndpointsMetricWithValue: + properties: + important: + type: integer + lastMonth: + type: integer + negligible: + type: integer + thisMonth: + type: integer + urgent: + type: integer + value: + type: string + required: + - value + - thisMonth + - lastMonth + - urgent + - important + - negligible + type: object + EndpointsOverviewType: + properties: + api: + $ref: '#/components/schemas/EndpointsMetricWithValue' + code: + $ref: '#/components/schemas/EndpointsMetricWithValue' + container: + $ref: '#/components/schemas/EndpointsMetricWithValue' + dependency: + $ref: '#/components/schemas/EndpointsMetricWithValue' + secret: + $ref: '#/components/schemas/EndpointsMetricWithValue' + required: + - code + - secret + - dependency + - container + - api + type: object + EndpointsPatchSLAInput: + properties: + allowExtensions: + nullable: true + type: boolean + maxDaysToFix: + nullable: true + type: integer + priority: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + severity: + $ref: '#/components/schemas/ModelsSeverity' + nullable: true + type: object + EndpointsPatchSLAOutput: + properties: + sla: + $ref: '#/components/schemas/ModelsSLA' + required: + - sla + type: object + EndpointsPatchTeamInput: + properties: + codeOwnerships: + items: + $ref: '#/components/schemas/ModelsTeamCodeOwnership' + type: array + github: + $ref: '#/components/schemas/ModelsTeamProviderGitHub' + gitlab: + $ref: '#/components/schemas/ModelsTeamProviderGitLab' + groundRules: + items: + $ref: '#/components/schemas/ModelsGroundRule' + type: array + jira: + $ref: '#/components/schemas/ModelsTeamProviderJira' + leadId: + nullable: true + type: string + memberIds: + items: + type: string + type: array + messageChannelProvider: + $ref: '#/components/schemas/ModelsMessageChannelProvider' + name: + nullable: true + type: string + privacy: + $ref: '#/components/schemas/ModelsTeamPrivacy' + nullable: true + slug: + nullable: true + type: string + ticketProjectProvider: + $ref: '#/components/schemas/ModelsTicketProjectProvider' + type: object + EndpointsPatchTeamOutput: + properties: + team: + $ref: '#/components/schemas/ModelsTeam' + required: + - team + type: object + EndpointsPatchUISavedViewInput: + properties: + savedView: + $ref: '#/components/schemas/ModelsUISavedViewAPIInput' + required: + - savedView + type: object + EndpointsPatchUISavedViewOutput: + properties: + savedView: + $ref: '#/components/schemas/ModelsUISavedView' + required: + - savedView + type: object + EndpointsPostBuildkiteTokenInput: + properties: + apiToken: + type: string + orgSlug: + type: string + required: + - apiToken + - orgSlug + type: object + EndpointsPostBuildkiteTokenOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsPostBulkGetUserMappingsInput: + properties: + gitCanonicalUserIds: + items: + type: string + type: array + githubCanonicalUserIds: + items: + type: string + type: array + type: object + EndpointsPostBulkGetUserMappingsOutput: + properties: + users: + additionalProperties: + $ref: '#/components/schemas/EndpointsMappedCanonicalIDs' + type: object + version: + type: string + type: object + EndpointsPostCircleCITokenInput: + properties: + apiToken: + type: string + required: + - apiToken + type: object + EndpointsPostCircleCITokenOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsPostCompassTeamInput: + properties: + displayName: + description: Team display name + type: string + lead: + description: Atlassian accountId of the team lead + type: string + members: + description: List of Atlassian accountIds for team members + items: + type: string + nullable: true + type: array + providerId: + $ref: '#/components/schemas/ModelsProviderID' + repositories: + description: List of repo URLs (owner/repo) + items: + type: string + nullable: true + type: array + teamKey: + description: Compass/Atlassian team key (unique identifier) + type: string + required: + - displayName + - lead + - members + - repositories + type: object + EndpointsPostCompassTeamOutput: + properties: + team: + $ref: '#/components/schemas/ModelsTeam' + required: + - team + type: object + EndpointsPostInitializeRepositoriesInput: + properties: + repositories: + items: + $ref: '#/components/schemas/ModelsGitRepositoryProvider' + nullable: true + type: array + required: + - repositories + type: object + EndpointsPostInitializeRepositoriesOutput: + properties: + repositories: + items: + $ref: '#/components/schemas/EndpointsRepositotryInitializationStatus' + nullable: true + type: array + required: + - repositories + type: object + EndpointsPostJenkinsTokenInput: + properties: + apiToken: + type: string + url: + type: string + username: + type: string + required: + - url + - username + - apiToken + type: object + EndpointsPostJenkinsTokenOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsPostPrivacyAcknowledgmentInput: + properties: + policyVersion: + description: The version of the privacy policy being acknowledged + type: string + required: + - policyVersion + type: object + EndpointsPostPrivacyAcknowledgmentOutput: + properties: + acknowledgedAt: + description: Timestamp when the acknowledgment was recorded (RFC3339) + type: string + success: + description: Whether the acknowledgment was recorded successfully + type: boolean + type: object + EndpointsPostRepositoryPropertyTeamKeyInput: + properties: + propertyKey: + type: string + providerId: + $ref: '#/components/schemas/ModelsProviderID' + required: + - providerId + - propertyKey + type: object + EndpointsPostRepositoryPropertyTeamKeyOutput: + properties: + key: + $ref: '#/components/schemas/EndpointsRepositoryPropertyTeamKey' + version: + type: string + required: + - key + type: object + EndpointsPostSLAInput: + properties: + allowExtensions: + type: boolean + maxDaysToFix: + type: integer + priority: + $ref: '#/components/schemas/ModelsPriorityLabel' + severity: + $ref: '#/components/schemas/ModelsSeverity' + required: + - severity + - priority + - maxDaysToFix + - allowExtensions + type: object + EndpointsPostSLAOutput: + properties: + sla: + $ref: '#/components/schemas/ModelsSLA' + required: + - sla + type: object + EndpointsPostServiceAccountInput: + properties: + name: + type: string + platform: + $ref: '#/components/schemas/ModelsProviderID' + required: + - platform + - name + type: object + EndpointsPostServiceAccountOutput: + properties: + serviceAccount: + $ref: '#/components/schemas/EndpointsServiceAccount' + version: + type: string + required: + - serviceAccount + type: object + EndpointsPostSlackAPIKeyInput: + properties: + apiKey: + type: string + required: + - apiKey + type: object + EndpointsPostSlackAPIKeyOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsPostTeamFindingsInput: + properties: + mappings: + description: List of finding-to-team mappings (max 1000) + items: + $ref: '#/components/schemas/EndpointsPostTeamFindingsMapping' + nullable: true + type: array + required: + - mappings + type: object + EndpointsPostTeamFindingsMapping: + properties: + findingId: + description: The finding ID to assign + type: string + findingType: + $ref: '#/components/schemas/ModelsFindingType' + teamId: + description: The team ID to assign the finding to + type: string + required: + - findingId + - teamId + - findingType + type: object + EndpointsPostTeamFindingsOutput: + properties: + upserted: + description: Number of mappings upserted + type: integer + version: + type: string + required: + - version + type: object + EndpointsPostTeamFindingsSyncInput: + properties: + async: + type: boolean + findingIds: + items: + type: string + type: array + findingTypes: + items: + type: string + type: array + repositoryIds: + items: + type: string + type: array + repositoryNames: + items: + type: string + type: array + type: object + EndpointsPostTeamFindingsSyncOutput: + properties: + async: + type: boolean + matched: + type: integer + message: + type: string + unmatched: + type: integer + version: + type: string + required: + - version + type: object + EndpointsPostTeamInput: + properties: + codeOwnerships: + items: + $ref: '#/components/schemas/ModelsTeamCodeOwnership' + type: array + github: + $ref: '#/components/schemas/ModelsTeamProviderGitHub' + gitlab: + $ref: '#/components/schemas/ModelsTeamProviderGitLab' + groundRules: + items: + $ref: '#/components/schemas/ModelsGroundRule' + type: array + jira: + $ref: '#/components/schemas/ModelsTeamProviderJira' + leadId: + type: string + memberIds: + items: + type: string + type: array + messageChannelProvider: + $ref: '#/components/schemas/ModelsMessageChannelProvider' + name: + type: string + privacy: + $ref: '#/components/schemas/ModelsTeamPrivacy' + slug: + type: string + ticketProjectProvider: + $ref: '#/components/schemas/ModelsTicketProjectProvider' + required: + - name + - slug + - privacy + - messageChannelProvider + - ticketProjectProvider + type: object + EndpointsPostTeamMergeInput: + properties: + sources: + items: + $ref: '#/components/schemas/EndpointsTeamMergeSource' + nullable: true + type: array + targetTeamId: + type: string + required: + - sources + type: object + EndpointsPostTeamMergeOutput: + properties: + team: + $ref: '#/components/schemas/ModelsTeam' + required: + - team + type: object + EndpointsPostTeamOutput: + properties: + team: + $ref: '#/components/schemas/ModelsTeam' + required: + - team + type: object + EndpointsPostTeamSyncRunInput: + properties: + source: + type: string + type: object + EndpointsPostTeamSyncRunOutput: + properties: + runs: + items: + $ref: '#/components/schemas/EndpointsTeamSyncRun' + nullable: true + type: array + version: + type: string + required: + - runs + type: object + EndpointsPostUISavedViewInput: + properties: + savedView: + $ref: '#/components/schemas/ModelsUISavedViewAPIInput' + required: + - savedView + type: object + EndpointsPostUISavedViewOutput: + properties: + savedView: + $ref: '#/components/schemas/ModelsUISavedView' + required: + - savedView + type: object + EndpointsPostUninitializeRepositoriesInput: + properties: + repositories: + items: + $ref: '#/components/schemas/ModelsGitRepositoryProvider' + nullable: true + type: array + required: + - repositories + type: object + EndpointsPostUninitializeRepositoriesOutput: + properties: + repositories: + items: + $ref: '#/components/schemas/EndpointsRepositotryInitializationStatus' + nullable: true + type: array + required: + - repositories + type: object + EndpointsPostUserInput: + properties: + user: + $ref: '#/components/schemas/EndpointsUserInput' + required: + - user + type: object + EndpointsPostUserMappingInput: + properties: + useSuggestions: + type: boolean + userMappings: + items: + $ref: '#/components/schemas/EndpointsUserMappingInput' + nullable: true + type: array + required: + - userMappings + - useSuggestions + type: object + EndpointsPostUserMappingOutput: + properties: + userMappings: + items: + $ref: '#/components/schemas/ModelsUserMapping' + nullable: true + type: array + required: + - userMappings + type: object + EndpointsPostUserOutput: + properties: + user: + $ref: '#/components/schemas/ModelsUser' + version: + type: string + required: + - user + type: object + EndpointsPrivacyAcknowledgmentExport: + properties: + acknowledgedAt: + type: string + policyVersion: + type: string + tenantId: + type: string + type: object + EndpointsPutAdminNotificationConfigInput: + properties: + notifications: + items: + $ref: '#/components/schemas/ModelsNotification' + nullable: true + type: array + required: + - notifications + type: object + EndpointsPutAdminNotificationConfigOutput: + properties: + version: + type: string + type: object + EndpointsPutBulkSLAInput: + properties: + slas: + items: + $ref: '#/components/schemas/ModelsSLA' + nullable: true + type: array + required: + - slas + type: object + EndpointsPutBulkSLAOutput: + properties: + slaIds: + items: + type: string + nullable: true + type: array + required: + - slaIds + type: object + EndpointsPutEditUserMappingInput: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureUserProvider' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketUserProvider' + github: + $ref: '#/components/schemas/ModelsGitHubUserProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabUserProvider' + jira: + $ref: '#/components/schemas/ModelsJiraUserProvider' + linear: + $ref: '#/components/schemas/ModelsLinearUserProvider' + slack: + $ref: '#/components/schemas/ModelsSlackUserProvider' + teams: + $ref: '#/components/schemas/ModelsTeamsUserProvider' + type: object + EndpointsPutTeamSourcePreferencesInput: + properties: + githubTeamsEnabled: + type: boolean + repositoryPropertyEnabled: + type: boolean + required: + - githubTeamsEnabled + - repositoryPropertyEnabled + type: object + EndpointsPutTeamSourcePreferencesOutput: + properties: + preferences: + $ref: '#/components/schemas/EndpointsTeamSourcePreferences' + syncQueued: + type: boolean + version: + type: string + required: + - preferences + - syncQueued + type: object + EndpointsQueryMetricsOverTimeInput: + properties: + query: + $ref: '#/components/schemas/ModelsUnifiedFindingsQuery' + required: + - query + type: object + EndpointsQueryMetricsOverTimeOutput: + properties: + fixed: + items: + $ref: '#/components/schemas/EndpointsCount' + nullable: true + type: array + introduced: + items: + $ref: '#/components/schemas/EndpointsCount' + nullable: true + type: array + version: + type: string + required: + - introduced + - fixed + type: object + EndpointsQueryMetricsRawInput: + properties: + query: + $ref: '#/components/schemas/ModelsUnifiedFindingsMetricsQuery' + required: + - query + type: object + EndpointsQueryMetricsRawOutput: + properties: + metrics: + additionalProperties: + $ref: '#/components/schemas/ModelsUnifiedFindingsRawMetricsQueryResultItem' + nullable: true + type: object + version: + type: string + required: + - metrics + type: object + EndpointsQueryOverviewInput: + properties: + query: + $ref: '#/components/schemas/ModelsUnifiedFindingsQuery' + required: + - query + type: object + EndpointsQueryOverviewOutput: + properties: + appName: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + appType: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + autofixMerged: + $ref: '#/components/schemas/EndpointsMetricData' + botInteractions: + $ref: '#/components/schemas/EndpointsMetricData' + branch: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + cleanPrsMerged: + $ref: '#/components/schemas/EndpointsMetricData' + cve: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + cwe: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + falsePositives: + $ref: '#/components/schemas/EndpointsMetricData' + findingsResolved: + $ref: '#/components/schemas/EndpointsMetricData' + funnelData: + items: + $ref: '#/components/schemas/EndpointsFunnelData' + nullable: true + type: array + host: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + hoursSaved: + $ref: '#/components/schemas/EndpointsMetricData' + imageName: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + inSLAFindings: + $ref: '#/components/schemas/EndpointsMetricData' + investigateData: + $ref: '#/components/schemas/EndpointsMetricData' + issuesFoundInPR: + $ref: '#/components/schemas/EndpointsMetricData' + language: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + meanTriageDurationMs: + $ref: '#/components/schemas/EndpointsMetricData' + mergeReadyRate: + $ref: '#/components/schemas/EndpointsMetricData' + overviewCWE: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + overviewLanguage: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + overviewRepos: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + overviewType: + $ref: '#/components/schemas/EndpointsOverviewType' + owners: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + package: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + repos: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + ruleId: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + secretType: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + teams: + items: + $ref: '#/components/schemas/EndpointsMetricWithValue' + nullable: true + type: array + totalPrsMerged: + $ref: '#/components/schemas/EndpointsMetricData' + type: + additionalProperties: + $ref: '#/components/schemas/EndpointsMetricData' + nullable: true + type: object + version: + type: string + required: + - funnelData + - type + - investigateData + - findingsResolved + - autofixMerged + - hoursSaved + - issuesFoundInPR + - botInteractions + - cleanPrsMerged + - totalPrsMerged + - falsePositives + - inSLAFindings + - mergeReadyRate + - meanTriageDurationMs + - overviewRepos + - overviewLanguage + - overviewCWE + - overviewType + - repos + - branch + - owners + - teams + - language + - cwe + - cve + - ruleId + - package + - imageName + - secretType + - appName + - appType + - host + type: object + EndpointsRepositoryInitializationTaskStatus: + properties: + error: + type: string + status: + type: string + taskName: + type: string + required: + - taskName + - status + - error + type: object + EndpointsRepositoryPropertyTeamKey: + properties: + createdAt: + format: date-time + type: string + id: + type: string + propertyKey: + type: string + providerId: + $ref: '#/components/schemas/ModelsProviderID' + tenantId: + type: string + updatedAt: + format: date-time + type: string + required: + - id + - tenantId + - providerId + - propertyKey + - createdAt + - updatedAt + type: object + EndpointsRepositotryInitializationStatus: + properties: + isInitialized: + type: boolean + repository: + $ref: '#/components/schemas/ModelsGitRepositoryProvider' + taskStatuses: + items: + $ref: '#/components/schemas/EndpointsRepositoryInitializationTaskStatus' + nullable: true + type: array + required: + - repository + - isInitialized + - taskStatuses + type: object + EndpointsScanCoverageCVECounts: + properties: + critical: + type: integer + high: + type: integer + low: + type: integer + medium: + type: integer + type: object + EndpointsScanCoverageFinding: + properties: + allowlistType: + nullable: true + type: string + author: + nullable: true + type: string + category: + type: string + createdAt: + type: string + cveCounts: + $ref: '#/components/schemas/EndpointsScanCoverageCVECounts' + cwe: + type: integer + filePath: + type: string + id: + type: string + imageName: + nullable: true + type: string + imageTag: + nullable: true + type: string + isAllowlisted: + type: boolean + isDirect: + nullable: true + type: boolean + language: + type: string + package: + nullable: true + type: string + priorityLabel: + type: string + ruleId: + type: string + secretType: + nullable: true + type: string + severityLabel: + type: string + startLine: + type: integer + status: + type: string + title: + type: string + updatedAt: + type: string + verified: + nullable: true + type: boolean + version: + nullable: true + type: string + type: object + EndpointsScanCoverageRepo: + properties: + criticalCount: + type: integer + highCount: + type: integer + lastCommitAt: + nullable: true + type: string + lastCommitHash: + nullable: true + type: string + lastScanAt: + nullable: true + type: string + lastScanCommitHash: + nullable: true + type: string + lowCount: + type: integer + mediumCount: + type: integer + owner: + type: string + platform: + type: string + repository: + type: string + repositoryId: + type: string + totalCount: + type: integer + type: object + EndpointsScanCoverageType: + enum: + - sast + - sca_dependencies + - sca_containers + - secrets + type: string + EndpointsServiceAccount: + properties: + createdAt: + format: date-time + type: string + name: + type: string + platform: + $ref: '#/components/schemas/ModelsProviderID' + serviceAccountId: + type: string + tenantId: + type: string + token: + type: string + required: + - serviceAccountId + - tenantId + - platform + - name + - createdAt + type: object + EndpointsTeamMembershipExport: + properties: + role: + type: string + teamId: + type: string + teamName: + type: string + type: object + EndpointsTeamMergeSource: + properties: + providerId: + $ref: '#/components/schemas/ModelsProviderID' + teamId: + type: string + required: + - providerId + - teamId + type: object + EndpointsTeamSourcePreferences: + properties: + githubTeamsEnabled: + type: boolean + repositoryPropertyEnabled: + type: boolean + tenantId: + type: string + updatedAt: + format: date-time + type: string + required: + - tenantId + - githubTeamsEnabled + - repositoryPropertyEnabled + type: object + EndpointsTeamSyncRun: + properties: + completedAt: + format: date-time + nullable: true + type: string + errorMessage: + type: string + id: + type: string + source: + $ref: '#/components/schemas/ModelsTeamSource' + startedAt: + format: date-time + type: string + status: + type: string + tenantId: + type: string + triggeredBy: + type: string + required: + - id + - tenantId + - source + - status + - startedAt + - triggeredBy + type: object + EndpointsUnifiedEventOutput: + properties: + autofixId: + nullable: true + type: string + campaignId: + nullable: true + type: string + createdAt: + nullable: true + type: string + data: {} + findingId: + nullable: true + type: string + id: + type: string + prCanonicalId: + nullable: true + type: string + repositoryId: + nullable: true + type: string + runId: + nullable: true + type: string + service: + $ref: '#/components/schemas/EventbusService' + tenantId: + type: string + timestampUnix: + format: int64 + type: integer + type: + $ref: '#/components/schemas/EventsEventType' + type: object + EndpointsUpdateJiraConfigInput: + properties: + autoCreate: + type: boolean + issueType: + type: string + projectKey: + type: string + severityThreshold: + type: string + required: + - projectKey + - severityThreshold + - issueType + - autoCreate + type: object + EndpointsUpdateJiraConfigOutput: + properties: + configuration: + $ref: '#/components/schemas/ModelsJiraConfig' + type: object + EndpointsUserDataExport: + properties: + auditLogEntryCount: + format: int64 + type: integer + exportVersion: + type: string + exportedAt: + type: string + privacyAcknowledgments: + items: + $ref: '#/components/schemas/EndpointsPrivacyAcknowledgmentExport' + nullable: true + type: array + teamMemberships: + items: + $ref: '#/components/schemas/EndpointsTeamMembershipExport' + nullable: true + type: array + user: + $ref: '#/components/schemas/EndpointsUserExport' + type: object + EndpointsUserExport: + properties: + email: + type: string + id: + type: string + isBot: + type: boolean + name: + type: string + providerId: + type: string + username: + type: string + type: object + EndpointsUserInput: + properties: + email: + description: The user's email address + type: string + isBot: + description: Whether the user is a bot + type: boolean + name: + description: The user's name + type: string + provider: + $ref: '#/components/schemas/ModelsUserProvider' + slug: + description: The user's slug + type: string + username: + description: The user's username + type: string + required: + - provider + - name + - slug + - username + - isBot + type: object + EndpointsUserMappingInput: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureUserProvider' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketUserProvider' + github: + $ref: '#/components/schemas/ModelsGitHubUserProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabUserProvider' + jira: + $ref: '#/components/schemas/ModelsJiraUserProvider' + linear: + $ref: '#/components/schemas/ModelsLinearUserProvider' + slack: + $ref: '#/components/schemas/ModelsSlackUserProvider' + teams: + $ref: '#/components/schemas/ModelsTeamsUserProvider' + type: object + EndpointsUserMappingSuggestion: + properties: + github: + $ref: '#/components/schemas/ModelsUser' + jira: + items: + $ref: '#/components/schemas/ModelsUser' + nullable: true + type: array + linear: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + slack: + items: + $ref: '#/components/schemas/ModelsUser' + nullable: true + type: array + teams: + items: + $ref: '#/components/schemas/ModelsUser' + nullable: true + type: array + required: + - github + - slack + - jira + - teams + type: object + EventbusService: + enum: + - sast + - sca + - secrets + - dast + - scpm + - cspm + - orchestrator + - context + - manager + - webhooks + - auth + - notifications + - billing + type: string + EventsEventType: + enum: + - org_context_agent_started + - org_context_agent_finished + - org_context_agent_failed + - repo_context_agent_started + - repo_context_agent_finished + - repo_context_agent_failed + - triage_agent_started + - triage_agent_finished + - triage_agent_failed + - triage_agent_skipped + - triage_agent_quality_degraded + - auto_fix_agent_started + - auto_fix_agent_finished + - auto_fix_agent_failed + - schema_reversing_agent_started + - schema_reversing_agent_finished + - schema_reversing_agent_failed + - auth-user-logged-in + - auth-user-role-changed + - auth-api-key-created + - auth-api-key-revoked + - auth-tenant-created + - auth-tenant-deleted + - auth-integration-enabled + - auth-integration-disabled + - billing-budget-exhausted + - billing-budget-warning + - billing-lease-started + - billing-lease-ended + - billing-lease-extended + - billing-usage-recorded + - account-scan-completed + - cloud-integration-scan-completed + - cspm-new-finding + - cspm-new-findings + - cspm-finding-triaged + - cspm-findings-triaged + - cspm-new-allowlisted-finding + - cspm-ticket-created + - cspm-ticket-updated + - cspm-ticket-assigned + - cspm-ticket-closed + - cspm-ticket-reopened + - account-scan-started + - account-scan-failed + - cloud-integration-scan-started + - cloud-integration-scan-failed + - cspm-scan-started + - cspm-scan-completed + - cspm-scan-failed + - dast-new-findings + - dast-new-fixes + - dast-update-endpoints + - dast-bughunt-new-finding + - dast-bughunt-finding-fixed + - dast-bughunt-finding-unfixed + - dast-bughunt-finding-allowlisted + - dast-bughunt-finding-unallowlisted + - dast-bughunt-triage-completed + - dast-bughunt-scan-failed + - dast-bughunt-scan-failsafe-invoked + - dast-pentest-new-finding + - dast-pentest-finding-fixed + - dast-pentest-finding-unfixed + - dast-pentest-finding-allowlisted + - dast-pentest-finding-unallowlisted + - dast-pentest-triage-completed + - dast-preflight-started + - dast-preflight-check-started + - dast-preflight-check-completed + - dast-preflight-estimate + - dast-preflight-completed + - dast-preflight-failed + - dast-preflight-failsafe-invoked + - dast-pentest-scan-aborted-config-error + - dast-pentest-scan-human-fallback + - dast-pentest-scan-failsafe-invoked + - dast-bughunt-scan-started + - dast-bughunt-scan-completed + - dast-pentest-scan-started + - dast-pentest-scan-completed + - dast-pentest-scan-failed + - bot-interaction + - bot-interaction-issue-dashboard-reply + - bot-interaction-pull-request-comment-reply + - bot-interaction-pull-request-discussion-reply + - bot-interaction-pull-request-review-diff-thread-reply + - bot-interaction-pull-request-review-discussion-reply + - bot-interaction-pull-request-review + - auto-fix-pull-request-created + - auto-fix-pull-request-accepted + - auto-fix-pull-request-closed + - auto-fix-suggestion-created + - auto-fix-suggestion-accepted + - scpm-new-branch-summary + - scpm-new-finding + - scpm-new-allowlisted-finding + - scpm-new-unallowlisted-finding + - scpm-new-vulnerability-merged + - scpm-new-fix + - scpm-new-pull-request-finding + - scpm-new-pull-request-fix + - scpm-ticket-created + - scpm-ticket-updated + - scpm-ticket-assigned + - scpm-ticket-closed + - scpm-ticket-reopened + - scpm-scan-started + - scpm-scan-completed + - scpm-scan-failed + - scpm-finding-retriaged + - scpm-archived-finding + - manager-campaign-created + - manager-campaign-updated + - manager-campaign-deleted + - manager-scheduled-plan-completed + - manager-plan-created + - manager-action-allowlist + - manager-action-escalate + - manager-action-ticket-create + - manager-action-ticket-comment + - manager-action-ticket-close + - manager-action-ticket-reassign + - manager-action-pr-create + - manager-action-pr-comment + - manager-action-pr-close + - manager-action-pr-reassign + - manager-action-message-user + - manager-action-message-channel + - manager-action-assign-user-task + - manager-action-campaign-create + - notification-sent + - notification-failed + - notification-retried + - notification-dlqed + - orchestrator-pipeline-run-started + - orchestrator-pipeline-run-completed + - orchestrator-pipeline-run-failed + - orchestrator-batch-autofix-started + - orchestrator-batch-autofix-completed + - orchestrator-batch-autofix-failed + - orchestrator-onboarding-started + - orchestrator-onboarding-phase-advanced + - orchestrator-onboarding-completed + - orchestrator-onboarding-failed + - orchestrator-retriage-requested + - orchestrator-retriage-queued + - pipeline-triggered + - pipeline-finished + - pipeline-failed + - sast-new-branch-summary + - sast-new-finding + - sast-new-findings + - sast-new-fix + - sast-new-fixes + - sast-new-allowlisted-finding + - sast-new-allowlisted-findings + - sast-new-unallowlisted-finding + - sast-new-unallowlisted-findings + - sast-new-pull-request-finding + - sast-new-pull-request-findings + - sast-new-pull-request-fix + - sast-new-pull-request-fixes + - sast-new-pull-request-allowlisted-finding + - sast-new-pull-request-unallowlisted-finding + - sast-new-vulnerability-merged + - sast-reintroduced-finding + - sast-reintroduced-pull-request-finding + - sast-finding-retriaged + - sast-archived-finding + - sast-ticket-created + - sast-ticket-updated + - sast-ticket-assigned + - sast-ticket-closed + - sast-ticket-reopened + - sast-autofix-iteration-started + - sast-autofix-iteration-completed + - sast-scan-started + - sast-scan-completed + - sast-scan-failed + - sca-new-branch-summary + - sca-new-finding + - sca-new-findings + - sca-new-fix + - sca-new-fixes + - sca-new-allowlisted-finding + - sca-new-allowlisted-findings + - sca-new-unallowlisted-finding + - sca-new-pull-request-finding + - sca-new-pull-request-findings + - sca-new-pull-request-fix + - sca-new-pull-request-fixes + - sca-dependency-reintroduced-finding + - sca-container-reintroduced-finding + - sca-dependency-archived-finding + - sca-container-archived-finding + - sca-finding-retriaged + - sca-ticket-created + - sca-ticket-updated + - sca-ticket-assigned + - sca-ticket-closed + - sca-ticket-reopened + - sca-autofix-iteration-started + - sca-autofix-iteration-completed + - sca-scan-started + - sca-scan-completed + - sca-scan-failed + - secrets-new-finding + - secrets-new-findings + - secrets-new-allowlisted-finding + - secrets-new-allowlisted-findings + - secrets-new-unallowlisted-finding + - secrets-archived-finding + - secrets-credential-triage-completed + - secrets-sensitivedata-triage-completed + - secrets-finding-retriaged + - secrets-ticket-created + - secrets-ticket-updated + - secrets-ticket-assigned + - secrets-ticket-closed + - secrets-ticket-reopened + - sensitivedata-new-finding + - sensitivedata-new-findings + - sensitivedata-allowlisted + - sensitivedata-unallowlisted + - sensitivedata-ticket-created + - sensitivedata-ticket-updated + - sensitivedata-ticket-assigned + - sensitivedata-ticket-closed + - sensitivedata-ticket-reopened + - sensitivedata-archived-finding + - secrets-scan-started + - secrets-scan-completed + - secrets-scan-failed + - threat-investigation-created + - threat-investigation-completed + - webhook-repo-onboarded + - webhook-repo-removed + - webhook-integration-installed + - webhook-integration-uninstalled + - webhook-default-branch-changed + - webhook-pr-opened + - webhook-pr-merged + - webhook-pr-closed + - webhook-push-received + type: string + ModelsAWSAccount: + properties: + accountId: + type: string + accountName: + type: string + accountType: + type: string + isDefault: + type: boolean + lastVerifiedAt: + type: string + lastVerifiedStatus: + type: string + required: + - accountId + - accountName + - isDefault + type: object + ModelsAWSAccountWithStatus: + properties: + accountId: + type: string + accountName: + type: string + accountType: + type: string + assumedRole: + type: string + errorMessage: + type: string + isDefault: + type: boolean + lastVerifiedAt: + type: string + lastVerifiedStatus: + type: string + status: + type: string + required: + - accountId + - accountName + - isDefault + type: object + ModelsAllowlistState: + enum: + - none + - in_progress_requested + - pending_review + - failed_pr_generation + - failed_pr_creation + - pr_merged + type: string + ModelsAllowlistType: + enum: + - AI + - UserFixed + - UserAssumeRisk + - UserFalsePositive + - UserOther + type: string + ModelsAssignee: + properties: + id: + type: string + name: + type: string + type: object + ModelsAutoFixState: + enum: + - none + - cancelled + - in_progress_requested + - in_progress_agent + - cached + - in_progress_preview_available + - in_progress_creating_pr + - in_progress_draft + - pending_review + - failed_retry + - failed_abort + - pr_merged + - pr_closed + - failed_pr_creation + type: string + ModelsAzureEntraOwnerProvider: + properties: + clientId: + description: The Azure Entra client ID + type: string + clientSecret: + description: The Azure Entra client secret + type: string + tenantId: + description: The Azure Entra tenant ID + type: string + required: + - tenantId + - clientId + - clientSecret + type: object + ModelsAzureEntraUserProvider: + properties: + id: + type: string + required: + - id + type: object + ModelsAzureGitPullRequest: + properties: + pullRequestId: + description: The Azure pull request ID + type: integer + required: + - pullRequestId + type: object + ModelsAzureGitRepositoryProvider: + properties: + projectId: + description: The ID of the Azure project + type: string + projectName: + description: The name of the Azure project + type: string + repositoryId: + description: The ID of the Azure repository + type: string + repositoryName: + description: The name of the Azure repository + type: string + required: + - projectId + - projectName + - repositoryId + - repositoryName + type: object + ModelsAzureOwnerProvider: + properties: + baseUrl: + description: The base URL for the Azure instance + type: string + organizationId: + description: The Azure organization ID + type: string + organizationName: + description: The Azure organization name + type: string + tenantId: + description: The Azure tenant ID + type: string + required: + - tenantId + - organizationId + - organizationName + - baseUrl + type: object + ModelsAzureSubscriptionInput: + properties: + displayName: + type: string + isDefault: + type: boolean + subscriptionId: + type: string + type: + type: string + required: + - subscriptionId + type: object + ModelsAzureSubscriptionWithStatus: + properties: + accountType: + type: string + isDefault: + type: boolean + isEnabled: + type: boolean + lastVerifiedAt: + type: string + lastVerifiedStatus: + type: string + state: + type: string + subscriptionId: + type: string + subscriptionName: + type: string + required: + - subscriptionId + - isDefault + - isEnabled + type: object + ModelsAzureTicketProject: + properties: + projectName: + description: The Azure DevOps project name + type: string + required: + - projectName + type: object + ModelsAzureTicketProvider: + properties: + url: + description: The Azure DevOps work item URL + type: string + workItemId: + description: The Azure DevOps work item ID + type: integer + required: + - workItemId + - url + type: object + ModelsAzureUserProvider: + properties: + id: + type: string + required: + - id + type: object + ModelsBitbucketGitPullRequest: + properties: + pullRequestId: + description: The GitHub pull request ID + format: int64 + type: integer + required: + - pullRequestId + type: object + ModelsBitbucketGitRepositoryProvider: + properties: + projectKey: + description: The key of a Bitbucket project + type: string + projectName: + description: The name of the Bitbucket project + type: string + repositoryId: + description: The ID of the Bitbucket repository + type: string + repositoryName: + description: The name of the Bitbucket repository + type: string + required: + - repositoryId + - repositoryName + - projectKey + - projectName + type: object + ModelsBitbucketOwnerProvider: + properties: + appKey: + description: The Bitbucket app key + type: string + baseUrl: + description: The Bitbucket base URL + type: string + clientKey: + description: The Bitbucket client key + type: string + ownerId: + description: The Bitbucket owner ID + type: string + ownerName: + description: The Bitbucket owner name + type: string + sharedSecret: + description: The Bitbucket shared secret + type: string + required: + - appKey + - baseUrl + - ownerId + - ownerName + - clientKey + - sharedSecret + type: object + ModelsBitbucketTicketProject: + type: object + ModelsBitbucketUserProvider: + properties: + id: + type: string + required: + - id + type: object + ModelsChecklistItem: + properties: + currentValue: + type: string + desiredValue: + type: string + name: + type: string + required: + - name + - currentValue + - desiredValue + type: object + ModelsCode: + properties: + enableFailBuilds: + nullable: true + type: boolean + ignore: + items: + $ref: '#/components/schemas/ModelsCodeIgnore' + type: array + type: object + ModelsCodeIgnore: + properties: + cwes: + items: + type: integer + type: array + dirs: + items: + type: string + type: array + expiry: + type: string + paths: + items: + type: string + type: array + reason: + type: string + repositories: + items: + type: string + type: array + ruleIds: + items: + type: string + type: array + type: object + ModelsCollection: + properties: + collectionId: + description: Unique identifier for the collection + type: string + collections: + description: List of sub-collections + items: + $ref: '#/components/schemas/ModelsSubCollection' + nullable: true + type: array + isSensitive: + description: Whether the collection contains sensitive data + type: boolean + name: + description: Name of the collection + type: string + required: + - collectionId + - name + - isSensitive + - collections + type: object + ModelsConfiguration: + properties: + code: + $ref: '#/components/schemas/ModelsCode' + dependencies: + $ref: '#/components/schemas/ModelsDependencies' + enableFailBuilds: + nullable: true + type: boolean + enableIssueDashboards: + nullable: true + type: boolean + enablePullRequestReviews: + nullable: true + type: boolean + ignoreDirs: + items: + type: string + type: array + ignorePaths: + items: + type: string + type: array + integrations: + $ref: '#/components/schemas/ModelsIntegrations' + priorityThreshold: + type: string + secrets: + $ref: '#/components/schemas/ModelsSecrets' + secretsWhitelist: + items: + type: string + type: array + severityThreshold: + type: string + type: object + ModelsContainerImageMetadata: + properties: + digest: + type: string + distro: + properties: + name: + type: string + version: + type: string + type: object + fullReference: + type: string + registryDomain: + type: string + registryPath: + type: string + shortName: + type: string + tag: + type: string + type: object + ModelsDataMap: + additionalProperties: + type: string + type: object + ModelsDependencies: + properties: + enableFailBuilds: + nullable: true + type: boolean + ignore: + items: + $ref: '#/components/schemas/ModelsDependenciesIgnore' + type: array + type: object + ModelsDependenciesIgnore: + properties: + cves: + items: + type: string + type: array + dirs: + items: + type: string + type: array + expiry: + type: string + paths: + items: + type: string + type: array + reason: + type: string + repositories: + items: + type: string + type: array + type: object + ModelsDeploymentType: + enum: + - helm + - terraform + - cloudformation + - cloud_connector + type: string + ModelsDiffFile: + properties: + header: + type: string + hunks: + items: + $ref: '#/components/schemas/ModelsDiffHunk' + nullable: true + type: array + mode: + type: integer + newName: + type: string + origName: + type: string + required: + - header + - mode + - origName + - newName + - hunks + type: object + ModelsDiffHunk: + properties: + header: + type: string + wholeRange: + $ref: '#/components/schemas/ModelsDiffRange' + required: + - header + - wholeRange + type: object + ModelsDiffLine: + properties: + content: + type: string + mode: + $ref: '#/components/schemas/ModelsDiffLineMode' + number: + type: integer + required: + - mode + - number + - content + type: object + ModelsDiffLineMode: + format: int32 + type: integer + ModelsDiffRange: + properties: + length: + type: integer + lines: + items: + $ref: '#/components/schemas/ModelsDiffLine' + nullable: true + type: array + start: + type: integer + required: + - start + - length + - lines + type: object + ModelsExternalOwnerProvider: + properties: + installationId: + description: The external installation ID + type: string + required: + - installationId + type: object + ModelsFileOwner: + properties: + name: + description: The name of the owner + type: string + type: + $ref: '#/components/schemas/ModelsOwnerType' + required: + - name + - type + type: object + ModelsFileOwners: + properties: + id: + description: A unique identifier for the file owners + type: string + owners: + description: A list of owners associated with the file + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + required: + - id + - owners + type: object + ModelsFindingType: + enum: + - Unknown + - Code + - Dependencies + - Containers + - SecretsCredentials + - SecretsSensitiveData + - Pentest + - BugHunt + - Cloud + - Platform + type: string + ModelsFindingsMetrics: + properties: + autofixTimeTotal: + minimum: 0 + type: integer + detectionTimeTotal: + minimum: 0 + type: integer + estimatedBacklogStoryPoints: + minimum: 0 + type: integer + findingsAllowlistedCount: + minimum: 0 + type: integer + findingsCount: + minimum: 0 + type: integer + findingsInBacklogCount: + minimum: 0 + type: integer + findingsInProgressCount: + minimum: 0 + type: integer + findingsResolvedCount: + minimum: 0 + type: integer + findingsWithOpenAutoFixPRCount: + minimum: 0 + type: integer + findingsWithOpenTicketCount: + minimum: 0 + type: integer + meanTimeToDetectAndTriage: + minimum: 0 + type: integer + meanTimeToMerge: + minimum: 0 + type: integer + meanTimeToPullRequestCreation: + minimum: 0 + type: integer + meanTimeToResolve: + minimum: 0 + type: integer + meanTimeToReview: + minimum: 0 + type: integer + medianTimeToDetectAndTriage: + minimum: 0 + type: integer + medianTimeToMerge: + minimum: 0 + type: integer + medianTimeToPullRequestCreation: + minimum: 0 + type: integer + medianTimeToResolve: + minimum: 0 + type: integer + medianTimeToReview: + minimum: 0 + type: integer + timeSaved: + minimum: 0 + type: integer + triageTimeTotal: + minimum: 0 + type: integer + required: + - findingsCount + - findingsInBacklogCount + - findingsWithOpenAutoFixPRCount + - findingsWithOpenTicketCount + - findingsResolvedCount + type: object + ModelsGCPProjectInput: + properties: + displayName: + type: string + isDefault: + type: boolean + projectId: + type: string + type: + type: string + required: + - projectId + type: object + ModelsGCPProjectWithStatus: + properties: + accountType: + type: string + isDefault: + type: boolean + isEnabled: + type: boolean + lastVerifiedAt: + type: string + lastVerifiedStatus: + type: string + projectId: + type: string + projectName: + type: string + state: + type: string + required: + - projectId + - isDefault + - isEnabled + type: object + ModelsGitBuildStatus: + enum: + - IN_PROGRESS + - SUCCESS + - SKIPPED + - FAILURE + type: string + ModelsGitHubGitPullRequest: + properties: + pullRequestNodeId: + description: The GraphQL node ID for the GitHub pull request + type: string + pullRequestNumber: + description: The GitHub pull request number + format: int64 + type: integer + required: + - pullRequestNumber + - pullRequestNodeId + type: object + ModelsGitHubGitRepositoryProvider: + properties: + hasIssue: + description: Whether the repository has GitHub Issues + type: boolean + nodeId: + description: The GitHub Node ID of the repository + type: string + owner: + description: The owner of the repository + type: string + ownerId: + description: The GitHub ID of the repository owner + format: int64 + type: integer + repositoryId: + description: The GitHub ID of the repository + format: int64 + type: integer + repositoryName: + description: The name of the GitHub repository + type: string + required: + - owner + - ownerId + - repositoryName + - repositoryId + - hasIssue + type: object + ModelsGitHubOwnerProvider: + properties: + baseUrl: + description: The GitHub base URL + type: string + installationId: + description: The GitHub installation ID + format: int64 + type: integer + owner: + description: The GitHub owner name + type: string + ownerId: + description: The GitHub owner ID + format: int64 + type: integer + ownerType: + description: The GitHub owner type + type: string + required: + - installationId + - ownerId + - owner + - ownerType + - baseUrl + type: object + ModelsGitHubTicketProject: + properties: + repositoryId: + description: The GitHub repository ID + format: int64 + type: integer + repositoryName: + description: The GitHub repository name + type: string + repositoryNodeId: + description: The GraphQL node ID for the GitHub repository + type: string + required: + - repositoryId + - repositoryNodeId + - repositoryName + type: object + ModelsGitHubTicketProvider: + properties: + issueId: + description: The GitHub issue ID + format: int64 + type: integer + nodeId: + description: The GitHub issue GraphQL node ID + type: string + number: + description: The GitHub issue number + format: int64 + type: integer + repositoryName: + description: The GitHub issue repository name + type: string + url: + description: The GitHub issue URL + type: string + required: + - number + - issueId + - nodeId + - repositoryName + - url + type: object + ModelsGitHubUserProvider: + properties: + id: + format: int64 + type: integer + nodeId: + type: string + required: + - id + - nodeId + type: object + ModelsGitLabGitPullRequest: + properties: + mergeRequestNumber: + description: The GitLab merge request ID + format: int64 + type: integer + required: + - mergeRequestNumber + type: object + ModelsGitLabGitRepositoryProvider: + properties: + projectId: + description: The ID of the GitLab project + format: int64 + type: integer + projectName: + description: The name of the GitLab project + type: string + required: + - projectId + - projectName + type: object + ModelsGitLabOwnerProvider: + properties: + baseUrl: + description: The GitLab base URL + type: string + groupId: + description: The GitLab group ID + format: int64 + type: integer + groupName: + description: The GitLab group name + type: string + required: + - groupId + - groupName + - baseUrl + type: object + ModelsGitLabTicketProject: + type: object + ModelsGitLabTicketProvider: + type: object + ModelsGitLabUserProvider: + properties: + id: + type: integer + required: + - id + type: object + ModelsGitPullRequestProvider: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureGitPullRequest' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketGitPullRequest' + github: + $ref: '#/components/schemas/ModelsGitHubGitPullRequest' + gitlab: + $ref: '#/components/schemas/ModelsGitLabGitPullRequest' + id: + $ref: '#/components/schemas/ModelsProviderID' + type: object + ModelsGitRepositoryProvider: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureGitRepositoryProvider' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketGitRepositoryProvider' + github: + $ref: '#/components/schemas/ModelsGitHubGitRepositoryProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabGitRepositoryProvider' + id: + $ref: '#/components/schemas/ModelsProviderID' + type: object + ModelsGoogleWorkspaceOwnerProvider: + properties: + domain: + description: The Google Workspace domain + type: string + serviceAccountJson: + description: The service account JSON key + type: string + required: + - domain + - serviceAccountJson + type: object + ModelsGoogleWorkspaceUserProvider: + properties: + id: + type: string + required: + - id + type: object + ModelsGroundRule: + properties: + description: + type: string + id: + type: string + title: + type: string + required: + - id + - title + - description + type: object + ModelsIntegrations: + properties: + jira: + $ref: '#/components/schemas/ModelsJira' + type: object + ModelsJira: + properties: + assignee: + $ref: '#/components/schemas/ModelsAssignee' + commentOnClose: + nullable: true + type: boolean + descriptionTemplate: + type: string + disabled: + type: boolean + enabled: + nullable: true + type: boolean + issueType: + type: string + labels: + items: + type: string + type: array + onFixTransition: + type: string + priorities: + $ref: '#/components/schemas/ModelsPriorities' + priorityThreshold: + type: string + projectKey: + type: string + severityThreshold: + type: string + titleTemplate: + type: string + type: object + ModelsJiraConfig: + properties: + autoCreate: + type: boolean + createdAt: + type: string + issueType: + type: string + projectKey: + type: string + severityThreshold: + type: string + updatedAt: + type: string + required: + - severityThreshold + - projectKey + - issueType + - createdAt + - updatedAt + - autoCreate + type: object + ModelsJiraOwnerProvider: + properties: + appKeyId: + description: The Jira app key ID + type: string + baseUrl: + description: The Jira base URL + type: string + installationId: + description: The Jira installation ID + type: string + ownerId: + description: The Jira owner ID + type: string + sharedSecret: + description: The Jira shared secret + type: string + required: + - installationId + - ownerId + - appKeyId + - sharedSecret + - baseUrl + type: object + ModelsJiraTicketProject: + properties: + id: + description: The Jira project ID + type: string + projectKey: + description: The Jira project key + type: string + required: + - id + - projectKey + type: object + ModelsJiraTicketProvider: + properties: + issueId: + description: The Jira issue ID + type: string + issueKey: + description: The Jira issue key + type: string + url: + description: The Jira issue URL + type: string + required: + - issueId + - issueKey + - url + type: object + ModelsJiraUserProvider: + properties: + id: + type: string + name: + type: string + required: + - id + type: object + ModelsLanguageName: + enum: + - Apex + - Bash + - Bicep + - CloudFormation + - Containerfile + - Custom Rules + - C + - Cairo + - Clojure + - C/C++ + - C++ + - C# + - Dart + - Elixir + - Generic + - Go + - HCL + - HTML + - Java + - JavaScript + - JSON + - Jsonnet + - Julia + - Kotlin + - Kubernetes + - Lisp + - Lua + - OCaml + - OpenAPI + - PHP + - Python + - R + - Renovate + - Ruby + - Rust + - Scala + - Scheme + - Serverless + - Shell + - Solidity + - Swift + - Terraform + - TypeScript + - YAML + - XML + type: string + ModelsLimitedUnifiedFindingsQuery: + properties: + appName: + items: + type: string + nullable: true + type: array + appType: + items: + type: string + nullable: true + type: array + autoFixState: + items: + type: string + nullable: true + type: array + branch: + items: + type: string + nullable: true + type: array + cve: + items: + type: string + nullable: true + type: array + cwe: + items: + type: string + nullable: true + type: array + exploitValidated: + nullable: true + type: boolean + fileOwner: + items: + type: string + nullable: true + type: array + findingId: + items: + type: string + nullable: true + type: array + fromDate: + nullable: true + type: string + fromPriorityScore: + nullable: true + type: integer + hasAutoFix: + nullable: true + type: boolean + hasTicket: + nullable: true + type: boolean + hasTicketOrPR: + nullable: true + type: boolean + host: + items: + type: string + nullable: true + type: array + imageName: + items: + type: string + nullable: true + type: array + importantMaxDays: + nullable: true + type: integer + includeEmpty: + nullable: true + type: boolean + informationalMaxDays: + nullable: true + type: integer + isAllowlisted: + nullable: true + type: boolean + isArchived: + nullable: true + type: boolean + isAutofixed: + nullable: true + type: boolean + isDirect: + nullable: true + type: boolean + isFalsePositive: + nullable: true + type: boolean + isFixed: + nullable: true + type: boolean + isInternetReachable: + nullable: true + type: boolean + isPushWorkflow: + nullable: true + type: boolean + isResolved: + nullable: true + type: boolean + language: + items: + type: string + nullable: true + type: array + notfindingId: + items: + type: string + nullable: true + type: array + package: + items: + type: string + nullable: true + type: array + platform: + items: + type: string + nullable: true + type: array + priorityLabel: + items: + type: string + nullable: true + type: array + repository: + items: + type: string + nullable: true + type: array + repositoryId: + items: + type: string + nullable: true + type: array + ruleId: + items: + type: string + nullable: true + type: array + search: + nullable: true + type: string + secretType: + items: + type: string + nullable: true + type: array + severity: + items: + type: string + nullable: true + type: array + sort: + items: + additionalProperties: + additionalProperties: {} + type: object + type: object + nullable: true + type: array + sortPreset: + $ref: '#/components/schemas/ModelsUnifiedFindingsSortPreset' + nullable: true + teamIDs: + items: + type: string + nullable: true + type: array + tenantId: + nullable: true + type: string + toDate: + nullable: true + type: string + toPriorityScore: + nullable: true + type: integer + type: + items: + type: string + nullable: true + type: array + urgentMaxDays: + nullable: true + type: integer + type: object + ModelsLinearOwnerProvider: + properties: + accessToken: + description: The Linear access token + type: string + clientId: + description: The Linear client ID + type: string + clientSecret: + description: The Linear client secret + type: string + urlKey: + description: The Linear domain key + type: string + workspaceId: + description: The Linear workspace ID + type: string + workspaceName: + description: The Linear workspace name + type: string + required: + - clientId + - clientSecret + - workspaceName + - workspaceId + - urlKey + type: object + ModelsLinearTicketProject: + properties: + projectId: + description: The Linear project ID + type: string + teamId: + description: The Linear team ID + type: string + teamKey: + description: The Linear team key + type: string + required: + - teamKey + - teamId + type: object + ModelsLinearTicketProvider: + properties: + issueId: + description: The Linear issue ID + type: string + teamId: + description: The Linear team ID + type: string + url: + description: The Linear issue URL + type: string + required: + - issueId + - url + - teamId + type: object + ModelsLinearUserProvider: + properties: + id: + type: string + required: + - id + type: object + ModelsMessageChannel: + properties: + channelProvider: + $ref: '#/components/schemas/ModelsMessageChannelProvider' + description: + type: string + name: + type: string + ownerProvider: + $ref: '#/components/schemas/ModelsOwnerProvider' + required: + - ownerProvider + - channelProvider + - name + - description + type: object + ModelsMessageChannelProvider: + properties: + id: + $ref: '#/components/schemas/ModelsProviderID' + slack: + $ref: '#/components/schemas/ModelsSlackMessageChannelProvider' + teams: + $ref: '#/components/schemas/ModelsTeamsMessageChannelProvider' + required: + - id + type: object + ModelsMetricsResolution: + enum: + - hour + - day + - week + type: string + ModelsNotification: + properties: + events: + $ref: '#/components/schemas/ModelsNotificationEvents' + repositories: + items: + type: string + type: array + targets: + $ref: '#/components/schemas/ModelsNotificationTargets' + type: object + ModelsNotificationEventAll: + properties: + cves: + items: + type: string + type: array + cwes: + items: + type: integer + type: array + minimumPriority: + type: integer + minimumSeverity: + $ref: '#/components/schemas/ModelsSeverity' + secretTypes: + items: + type: string + type: array + type: object + ModelsNotificationEventNewAPIFindings: + properties: + cwes: + items: + type: integer + type: array + minimumPriority: + type: integer + minimumSeverity: + $ref: '#/components/schemas/ModelsSeverity' + type: object + ModelsNotificationEventNewCodeFindings: + properties: + cwes: + items: + type: integer + type: array + minimumPriority: + type: integer + minimumSeverity: + $ref: '#/components/schemas/ModelsSeverity' + type: object + ModelsNotificationEventNewDependencyFindings: + properties: + cves: + items: + type: string + type: array + cwes: + items: + type: integer + type: array + minimumPriority: + type: integer + minimumSeverity: + $ref: '#/components/schemas/ModelsSeverity' + type: object + ModelsNotificationEventNewSecretFindings: + properties: + types: + items: + type: string + type: array + type: object + ModelsNotificationEventThreatIntel: + properties: + cves: + items: + type: string + type: array + ecosystems: + items: + type: string + type: array + minimumSeverity: + $ref: '#/components/schemas/ModelsSeverity' + type: object + ModelsNotificationEvents: + properties: + all: + $ref: '#/components/schemas/ModelsNotificationEventAll' + newApiFindings: + $ref: '#/components/schemas/ModelsNotificationEventNewAPIFindings' + newCodeFindings: + $ref: '#/components/schemas/ModelsNotificationEventNewCodeFindings' + newDependencyFindings: + $ref: '#/components/schemas/ModelsNotificationEventNewDependencyFindings' + newSecretFindings: + $ref: '#/components/schemas/ModelsNotificationEventNewSecretFindings' + threatIntel: + $ref: '#/components/schemas/ModelsNotificationEventThreatIntel' + type: object + ModelsNotificationTargetEmail: + properties: + address: + type: string + addresses: + items: + type: string + type: array + type: object + ModelsNotificationTargetSlack: + properties: + channel: + type: string + channels: + items: + type: string + type: array + type: object + ModelsNotificationTargetWebhook: + properties: + url: + type: string + urls: + items: + type: string + type: array + type: object + ModelsNotificationTargets: + properties: + email: + $ref: '#/components/schemas/ModelsNotificationTargetEmail' + slack: + $ref: '#/components/schemas/ModelsNotificationTargetSlack' + webhook: + $ref: '#/components/schemas/ModelsNotificationTargetWebhook' + type: object + ModelsOccurrence: + properties: + columnNumber: + description: Column number in file + type: integer + excerpt: + description: Code excerpt + type: string + fileName: + description: Name of the file + type: string + lineNumber: + description: Line number in file + type: integer + sample: + description: Sample code snippet + type: string + required: + - sample + - lineNumber + - columnNumber + - fileName + - excerpt + type: object + ModelsOktaOwnerProvider: + properties: + apiToken: + description: The Okta API token + type: string + domain: + description: The Okta domain (e.g. dev-12345.okta.com) + type: string + required: + - domain + - apiToken + type: object + ModelsOktaUserProvider: + properties: + id: + type: string + required: + - id + type: object + ModelsOrganization: + properties: + id: + type: string + members: + items: + $ref: '#/components/schemas/ModelsUser' + nullable: true + type: array + name: + type: string + provider: + $ref: '#/components/schemas/ModelsOwnerProvider' + slug: + type: string + teams: + items: + $ref: '#/components/schemas/ModelsTeam' + nullable: true + type: array + required: + - provider + - id + - name + - slug + - teams + - members + type: object + ModelsOwnerProvider: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureOwnerProvider' + azureEntra: + $ref: '#/components/schemas/ModelsAzureEntraOwnerProvider' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketOwnerProvider' + external: + $ref: '#/components/schemas/ModelsExternalOwnerProvider' + github: + $ref: '#/components/schemas/ModelsGitHubOwnerProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabOwnerProvider' + googleWorkspace: + $ref: '#/components/schemas/ModelsGoogleWorkspaceOwnerProvider' + id: + $ref: '#/components/schemas/ModelsProviderID' + jira: + $ref: '#/components/schemas/ModelsJiraOwnerProvider' + linear: + $ref: '#/components/schemas/ModelsLinearOwnerProvider' + okta: + $ref: '#/components/schemas/ModelsOktaOwnerProvider' + slack: + $ref: '#/components/schemas/ModelsSlackOwnerProvider' + teams: + $ref: '#/components/schemas/ModelsTeamsOwnerProvider' + required: + - id + type: object + ModelsOwnerType: + enum: + - email + - team + - username + type: string + ModelsPII: + properties: + collections: + description: List of data collections + items: + $ref: '#/components/schemas/ModelsCollection' + nullable: true + type: array + language: + description: The programming language + type: string + probableSinks: + description: List of probable data sinks + items: + type: string + nullable: true + type: array + processing: + description: List of processing activities + items: + $ref: '#/components/schemas/ModelsProcessing' + nullable: true + type: array + sinkProcessing: + description: List of sink processing activities + items: + $ref: '#/components/schemas/ModelsSinkProcessing' + nullable: true + type: array + sources: + description: List of data sources + items: + $ref: '#/components/schemas/ModelsSource' + nullable: true + type: array + required: + - language + - processing + - sources + - probableSinks + - sinkProcessing + - collections + type: object + ModelsPriorities: + properties: + critical: + type: string + high: + type: string + important: + type: string + low: + type: string + medium: + type: string + negligible: + type: string + urgent: + type: string + type: object + ModelsPriorityLabel: + enum: + - URGENT + - IMPORTANT + - MEDIUM + - INFORMATIONAL + - LOW + - NEGLIGIBLE + - FALSE_POSITIVE + - UNKNOWN + type: string + ModelsProcessing: + properties: + occurrences: + description: List of occurrences + items: + $ref: '#/components/schemas/ModelsOccurrence' + nullable: true + type: array + sourceId: + description: ID of the source + type: string + required: + - sourceId + - occurrences + type: object + ModelsProviderID: + enum: + - Nullify + - GitHub + - Bitbucket + - Azure + - GitLab + - Okta + - GoogleWorkspace + - AzureEntra + - GitHubNullify + - Jira + - Linear + - Slack + - Teams + - AWS + - Azure + - GCP + - Alibaba + - Oracle + - IBM + - DigitalOcean + - Heroku + - Datadog + - Grafana + - NewRelic + - Splunk + - Elastic + - Confluence + - Notion + - GoogleDrive + - SharePoint + - Buildkite + - Jenkins + - CircleCI + - CodeBuild + - Drone + - Semaphore + - TeamCity + - AzurePipelines + - External + - RepositoryProperty + type: string + ModelsPullRequestInfo: + properties: + createdAt: + format: date-time + type: string + explanation: + type: string + firstReviewedAt: + format: date-time + nullable: true + type: string + hasCustomerCommit: + nullable: true + type: boolean + hasCustomerFeedback: + nullable: true + type: boolean + id: + type: integer + lastReviewedAt: + format: date-time + nullable: true + type: string + link: + type: string + mergedAt: + format: date-time + nullable: true + type: string + pullRequestProvider: + $ref: '#/components/schemas/ModelsGitPullRequestProvider' + status: + $ref: '#/components/schemas/ModelsPullRequestState' + title: + type: string + updatedAt: + format: date-time + nullable: true + type: string + required: + - pullRequestProvider + - id + - link + - status + - explanation + - createdAt + type: object + ModelsPullRequestReviewState: + enum: + - APPROVED + - CHANGES_REQUESTED + - DISMISSED + - COMMENTED + type: string + ModelsPullRequestState: + enum: + - open + - closed + - merged + - unknown + type: string + ModelsPullRequestStateWithDiffs: + properties: + diffs: + items: + $ref: '#/components/schemas/ModelsDiffFile' + nullable: true + type: array + id: + type: string + state: + type: string + url: + type: string + required: + - id + - url + - state + - diffs + type: object + ModelsRepository: + properties: + cloneURL: + description: URL used to clone the repository + type: string + createdAt: + type: string + defaultBranch: + description: Name of the default branch + type: string + description: + type: string + forksCount: + type: integer + fullName: + description: The full name of the repository + type: string + hasIssues: + description: Whether issues are enabled for this repository + type: boolean + head: + description: Current HEAD commit SHA + type: string + htmlURL: + type: string + id: + description: The ID for the repository + type: string + isArchived: + description: Whether this repository is archived + type: boolean + isFork: + type: boolean + isGlobalConfig: + description: Whether this is a global config repository + type: boolean + isInitialized: + description: Whether this repository has been initialized + type: boolean + isPublic: + description: Whether this is a public repository + type: boolean + language: + type: string + license: + type: string + name: + description: Name of the repository + type: string + openIssues: + type: integer + ownerProvider: + $ref: '#/components/schemas/ModelsOwnerProvider' + provider: + $ref: '#/components/schemas/ModelsGitRepositoryProvider' + pushedAt: + type: string + repoSizeGiB: + description: Size of the repository in GiB + format: int32 + type: integer + starCount: + type: integer + topics: + items: + type: string + type: array + updatedAt: + type: string + visibility: + type: string + required: + - provider + - ownerProvider + - id + - name + - fullName + - isGlobalConfig + - hasIssues + - isPublic + - isInitialized + - isArchived + - cloneURL + - repoSizeGiB + - defaultBranch + - head + type: object + ModelsRepositoryPublic: + properties: + countsBySeverity: + additionalProperties: + type: integer + description: Count of findings by severity level + nullable: true + type: object + countsByType: + additionalProperties: + type: integer + description: Count of findings by type + nullable: true + type: object + defaultBranch: + description: Default branch name + type: string + defaultBranchCommittedAt: + description: Timestamp of the default branch HEAD commit + format: date-time + nullable: true + type: string + defaultBranchSha: + description: HEAD commit SHA of the default branch + type: string + id: + description: Unique identifier for the repository + type: string + isArchived: + description: Whether the repository is archived on its source platform + type: boolean + isDefaultBranch: + description: Whether this is the default branch + type: boolean + nullifyConfigFile: + $ref: '#/components/schemas/ModelsConfiguration' + owner: + description: Repository owner name + type: string + ownerType: + description: Type of repository owner (user/organization) + type: string + pii: + $ref: '#/components/schemas/ModelsPII' + platform: + description: Git platform name + type: string + repository: + description: Repository name + type: string + repositoryId: + description: Repository identifier + type: string + sbom: + description: Software Bill of Materials + type: string + tenantId: + description: Tenant identifier + type: string + timestamp: + description: Timestamp of last scan + type: string + timestampUnix: + description: Unix timestamp of last scan + format: int64 + type: integer + required: + - id + - countsBySeverity + - sbom + - countsByType + - timestamp + - timestampUnix + - owner + - ownerType + - tenantId + - repository + - repositoryId + - isDefaultBranch + - platform + - isArchived + type: object + ModelsSLA: + properties: + allowExtensions: + type: boolean + id: + type: string + maxDaysToFix: + type: integer + priority: + $ref: '#/components/schemas/ModelsPriorityLabel' + severity: + $ref: '#/components/schemas/ModelsSeverity' + required: + - severity + - priority + - maxDaysToFix + - allowExtensions + type: object + ModelsSecrets: + properties: + customPatterns: + additionalProperties: + $ref: '#/components/schemas/ModelsSecretsCustomPattern' + type: object + customPatternsOverrideGlobal: + type: boolean + enableFailBuilds: + nullable: true + type: boolean + ignore: + items: + $ref: '#/components/schemas/ModelsSecretsIgnore' + type: array + type: object + ModelsSecretsCustomPattern: + properties: + description: + nullable: true + type: string + entropy: + nullable: true + type: number + keywords: + items: + type: string + type: array + pathRegex: + nullable: true + type: string + secretRegex: + type: string + secretRegexGroup: + nullable: true + type: integer + type: object + ModelsSecretsIgnore: + properties: + expiry: + type: string + paths: + items: + type: string + type: array + pattern: + type: string + reason: + type: string + repositories: + items: + type: string + type: array + sha256: + type: string + value: + type: string + type: object + ModelsSensitivity: + enum: + - LOW + - MEDIUM + - HIGH + type: string + ModelsSeverity: + enum: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - NONE + - INFORMATIONAL + - UNKNOWN + type: string + ModelsSinkProcessing: + properties: + occurrences: + description: List of occurrences + items: + $ref: '#/components/schemas/ModelsOccurrence' + nullable: true + type: array + sinkId: + description: ID of the sink + type: string + required: + - sinkId + - occurrences + type: object + ModelsSlackMessageChannelProvider: + properties: + id: + description: The Slack message channel ID + type: string + thread_ts: + description: The Slack message thread timestamp + type: string + required: + - id + type: object + ModelsSlackOwnerProvider: + properties: + teamId: + description: The Slack team ID + type: string + required: + - teamId + type: object + ModelsSlackUserProvider: + properties: + id: + type: string + name: + type: string + required: + - id + type: object + ModelsSource: + properties: + category: + description: Category of the source + type: string + id: + description: Unique identifier + type: string + isSensitive: + description: Whether the source contains sensitive data + type: boolean + name: + description: Name of the source + type: string + sensitivity: + $ref: '#/components/schemas/ModelsSensitivity' + sourceType: + description: Type of the source + type: string + tags: + $ref: '#/components/schemas/ModelsDataMap' + required: + - sourceType + - id + - name + - category + - sensitivity + - isSensitive + - tags + type: object + ModelsSubCollection: + properties: + occurrences: + description: List of occurrences + items: + $ref: '#/components/schemas/ModelsOccurrence' + nullable: true + type: array + sourceId: + description: ID of the source + type: string + required: + - occurrences + - sourceId + type: object + ModelsTeam: + properties: + codeOwnerships: + items: + $ref: '#/components/schemas/ModelsTeamCodeOwnership' + type: array + github: + $ref: '#/components/schemas/ModelsTeamProviderGitHub' + gitlab: + $ref: '#/components/schemas/ModelsTeamProviderGitLab' + groundRules: + items: + $ref: '#/components/schemas/ModelsGroundRule' + type: array + id: + type: string + jira: + $ref: '#/components/schemas/ModelsTeamProviderJira' + lead: + $ref: '#/components/schemas/ModelsUser' + leadId: + type: string + linear: + $ref: '#/components/schemas/ModelsTeamProviderLinear' + memberIds: + items: + type: string + type: array + members: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + messageChannelProvider: + $ref: '#/components/schemas/ModelsMessageChannelProvider' + messageChannels: + items: + $ref: '#/components/schemas/ModelsMessageChannel' + type: array + msteams: + $ref: '#/components/schemas/ModelsTeamProviderMSTeams' + name: + type: string + numMembers: + type: integer + okta: + $ref: '#/components/schemas/ModelsTeamProviderOkta' + privacy: + type: string + provider: + $ref: '#/components/schemas/ModelsProviderID' + repositories: + items: + $ref: '#/components/schemas/ModelsRepository' + type: array + repositoryIds: + items: + type: string + type: array + slack: + $ref: '#/components/schemas/ModelsTeamProviderSlack' + slug: + type: string + source: + $ref: '#/components/schemas/ModelsTeamSource' + sourceRepositoryPropertyName: + type: string + sourceRepositoryPropertyValue: + type: string + ticketProjectProvider: + $ref: '#/components/schemas/ModelsTicketProjectProvider' + required: + - id + - provider + - source + - name + - slug + - privacy + - messageChannelProvider + - ticketProjectProvider + type: object + ModelsTeamCodeOwnership: + properties: + dataSource: + $ref: '#/components/schemas/ModelsTeamCodeOwnershipDataSource' + globPatterns: + items: + type: string + nullable: true + type: array + repository: + $ref: '#/components/schemas/ModelsGitRepositoryProvider' + required: + - dataSource + - globPatterns + type: object + ModelsTeamCodeOwnershipDataSource: + enum: + - github_teams + - atlassian_compass + - manual + - repository_property + type: string + ModelsTeamFinding: + properties: + findingType: + $ref: '#/components/schemas/ModelsFindingType' + id: + type: string + matchSource: + $ref: '#/components/schemas/ModelsTeamFindingMatchSource' + matchSourceUserID: + type: string + resolved: + type: boolean + slaBreached: + type: boolean + teamID: + type: string + type: object + ModelsTeamFindingMatchSource: + enum: + - codeowners_team + - codeowners_user + - github_teams + - atlassian_compass + - manual + - git_blame + - git_blame_directory + - repository_contributor + - repository_property + type: string + ModelsTeamFindings: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsTeamFinding' + nullable: true + type: array + team: + $ref: '#/components/schemas/ModelsTeam' + type: object + ModelsTeamPrivacy: + enum: + - private + - public + - visible + - secret + type: string + ModelsTeamProviderGitHub: + properties: + orgLogin: + type: string + teamId: + format: int64 + type: integer + teamSlug: + type: string + type: object + ModelsTeamProviderGitLab: + properties: + groupId: + type: integer + type: object + ModelsTeamProviderJira: + properties: + teamId: + type: string + type: object + ModelsTeamProviderLinear: + properties: + teamId: + type: string + type: object + ModelsTeamProviderMSTeams: + properties: + channelId: + type: string + teamId: + type: string + type: object + ModelsTeamProviderOkta: + properties: + groupId: + type: string + type: object + ModelsTeamProviderSlack: + properties: + groupId: + type: string + type: object + ModelsTeamSource: + enum: + - github_teams + - repository_property + - manual + - atlassian_compass + - identity_provider + type: string + ModelsTeamsMessageChannelProvider: + properties: + channel: + description: The Teams channel name + type: string + id: + description: The Teams message channel ID + type: string + teamId: + description: The Teams team ID that owns the channel + type: string + required: + - id + - channel + - teamId + type: object + ModelsTeamsOwnerProvider: + properties: + teamId: + description: The Teams team ID + type: string + required: + - teamId + type: object + ModelsTeamsUserProvider: + properties: + id: + type: string + teamIDs: + items: + type: string + nullable: true + type: array + required: + - id + - teamIDs + type: object + ModelsTicketProjectProvider: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureTicketProject' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketTicketProject' + github: + $ref: '#/components/schemas/ModelsGitHubTicketProject' + gitlab: + $ref: '#/components/schemas/ModelsGitLabTicketProject' + id: + $ref: '#/components/schemas/ModelsProviderID' + jira: + $ref: '#/components/schemas/ModelsJiraTicketProject' + linear: + $ref: '#/components/schemas/ModelsLinearTicketProject' + type: object + ModelsTicketProvider: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureTicketProvider' + github: + $ref: '#/components/schemas/ModelsGitHubTicketProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabTicketProvider' + jira: + $ref: '#/components/schemas/ModelsJiraTicketProvider' + linear: + $ref: '#/components/schemas/ModelsLinearTicketProvider' + providerId: + $ref: '#/components/schemas/ModelsProviderID' + required: + - providerId + type: object + ModelsUISavedView: + properties: + createdAt: + type: string + createdBy: + type: string + data: + type: string + id: + type: string + lastUpdatedBy: + type: string + name: + type: string + updatedAt: + type: string + viewOwnerId: + type: string + viewOwnerType: + $ref: '#/components/schemas/ModelsUISavedViewOwnerType' + viewPageType: + $ref: '#/components/schemas/ModelsUISavedViewPageType' + required: + - id + - viewPageType + - viewOwnerType + - viewOwnerId + - name + - data + - createdAt + - createdBy + - updatedAt + - lastUpdatedBy + type: object + ModelsUISavedViewAPIInput: + properties: + data: + type: string + name: + type: string + viewOwnerId: + type: string + viewOwnerType: + $ref: '#/components/schemas/ModelsUISavedViewOwnerType' + viewPageType: + $ref: '#/components/schemas/ModelsUISavedViewPageType' + required: + - viewPageType + - viewOwnerType + - viewOwnerId + - name + - data + type: object + ModelsUISavedViewOwnerType: + enum: + - ORGANIZATION + - USER + type: string + ModelsUISavedViewPageType: + enum: + - OVERVIEW + - TRIAGE + type: string + ModelsUnifiedFindingPreview: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistState: + $ref: '#/components/schemas/ModelsAllowlistState' + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + nullable: true + appName: + type: string + appType: + type: string + assessmentFactors: + additionalProperties: + type: string + nullable: true + type: object + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + branch: + type: string + category: + type: string + commit: + type: string + commitHash: + type: string + createdAt: + type: string + cwe: + type: string + endLine: + type: integer + endpointMethod: + type: string + endpointPath: + type: string + entropy: + format: double + type: number + entrypoint: + type: string + errorDescription: + type: string + errorType: + type: string + exploitValidated: + nullable: true + type: boolean + failedTriage: + nullable: true + type: boolean + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + firstSeenCommit: + type: string + graphExists: + nullable: true + type: boolean + hasReachableCVEs: + type: boolean + host: + type: string + httpVersion: + type: string + hypothesis: + type: string + id: + type: string + imageMetadata: + $ref: '#/components/schemas/ModelsContainerImageMetadata' + installationId: + type: string + isAllowlisted: + nullable: true + type: boolean + isArchived: + nullable: true + type: boolean + isAutoFixable: + nullable: true + type: boolean + isCloudTriaged: + nullable: true + type: boolean + isDefaultBranch: + nullable: true + type: boolean + isDirect: + nullable: true + type: boolean + isFalsePositive: + type: boolean + isInternetReachable: + nullable: true + type: boolean + isLatest: + nullable: true + type: boolean + isResolved: + nullable: true + type: boolean + language: + $ref: '#/components/schemas/ModelsLanguageName' + lastEvent: + type: string + line: + type: integer + match: + type: string + message: + type: string + method: + type: string + numCritical: + type: integer + numHigh: + type: integer + numLow: + type: integer + numMedium: + type: integer + numUnknown: + type: integer + package: + type: string + packageFilePath: + type: string + path: + type: string + previousResponse: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + projectPathPrefix: + type: string + pullRequestsAllowlist: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + queryParameters: + additionalProperties: + type: string + nullable: true + type: object + redactedSecret: + type: string + repository: + type: string + repositoryId: + type: string + repositoryName: + type: string + requestBody: + type: string + requestHeader: + additionalProperties: + type: string + nullable: true + type: object + resolvedAt: + format: date-time + nullable: true + type: string + responseBody: + type: string + responseHeader: + additionalProperties: + type: string + nullable: true + type: object + roleDescription: + type: string + roleName: + type: string + ruleId: + type: string + ruleUrl: + type: string + scanConfigId: + type: string + scanId: + type: string + scanType: + type: string + scopes: + items: + type: string + nullable: true + type: array + secretHash: + type: string + secretType: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + solution: + type: string + source: + type: string + startLine: + type: integer + suggestedImage: + items: + $ref: '#/components/schemas/ModelsContainerImageMetadata' + nullable: true + type: array + suggestedVersion: + type: string + summary: + type: string + tags: + type: string + targetUrl: + type: string + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + timeSaved: + $ref: '#/components/schemas/TimeDuration' + title: + type: string + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + triageVersion: + type: string + type: + $ref: '#/components/schemas/ModelsFindingType' + updatedAt: + type: string + uri: + type: string + userName: + type: string + version: + type: string + vulnerabilitiesCVEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesCWEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesMaxPriority: + $ref: '#/components/schemas/ModelsPriorityLabel' + vulnerabilitiesMaxSeverity: + $ref: '#/components/schemas/ModelsSeverity' + vulnerableParameterName: + type: string + vulnerableParameterValue: + type: string + required: + - type + - createdAt + - updatedAt + - tenantId + - repositoryId + - projectId + - projectName + - repository + - branch + - commitHash + - firstSeenCommit + - id + - title + - category + - severity + - language + - message + - filePath + - cwe + - ruleId + - ruleUrl + - entrypoint + - startLine + - endLine + - autoFixState + - allowlistState + - priorityOverride + - priorityScore + - priorityLabel + - isFalsePositive + - pullRequestsAllowlist + - pullRequestsAutofix + - fileOwners + - lastEvent + - triageVersion + - assessmentFactors + - aiTitle + - aiDevTitle + - line + - numCritical + - numHigh + - numMedium + - numLow + - numUnknown + - vulnerabilitiesCVEIds + - vulnerabilitiesMaxSeverity + - hasReachableCVEs + - installationId + - package + - packageFilePath + - suggestedVersion + - version + - vulnerabilitiesMaxPriority + - vulnerabilitiesCWEIds + - entropy + - secretHash + - redactedSecret + - scopes + - match + - secretType + - appName + - host + - commit + - imageMetadata + - suggestedImage + - scanId + - scanConfigId + - scanType + - appType + - targetUrl + - repositoryName + - projectPathPrefix + - summary + - source + - endpointMethod + - endpointPath + - solution + - httpVersion + - method + - path + - queryParameters + - vulnerableParameterName + - vulnerableParameterValue + - errorType + - errorDescription + - previousResponse + - uri + - requestHeader + - requestBody + - responseHeader + - responseBody + - tags + - hypothesis + - userName + - roleName + - roleDescription + - timeSaved + type: object + ModelsUnifiedFindingsMetricsQuery: + additionalProperties: + $ref: '#/components/schemas/ModelsUnifiedFindingsQuery' + type: object + ModelsUnifiedFindingsQuery: + properties: + appName: + items: + type: string + nullable: true + type: array + appType: + items: + type: string + nullable: true + type: array + autoFixState: + items: + type: string + nullable: true + type: array + branch: + items: + type: string + nullable: true + type: array + cve: + items: + type: string + nullable: true + type: array + cwe: + items: + type: string + nullable: true + type: array + exploitValidated: + nullable: true + type: boolean + fileOwner: + items: + type: string + nullable: true + type: array + findingId: + items: + type: string + nullable: true + type: array + fromDate: + nullable: true + type: string + fromPriorityScore: + nullable: true + type: integer + hasAutoFix: + nullable: true + type: boolean + hasTicket: + nullable: true + type: boolean + hasTicketOrPR: + nullable: true + type: boolean + host: + items: + type: string + nullable: true + type: array + imageName: + items: + type: string + nullable: true + type: array + importantMaxDays: + nullable: true + type: integer + includeEmpty: + nullable: true + type: boolean + informationalMaxDays: + nullable: true + type: integer + isAllowlisted: + nullable: true + type: boolean + isArchived: + nullable: true + type: boolean + isAutofixed: + nullable: true + type: boolean + isDirect: + nullable: true + type: boolean + isFalsePositive: + nullable: true + type: boolean + isFixed: + nullable: true + type: boolean + isInternetReachable: + nullable: true + type: boolean + isPushWorkflow: + nullable: true + type: boolean + isResolved: + nullable: true + type: boolean + language: + items: + type: string + nullable: true + type: array + notfindingId: + items: + type: string + nullable: true + type: array + package: + items: + type: string + nullable: true + type: array + page: + nullable: true + type: integer + pageSize: + nullable: true + type: integer + platform: + items: + type: string + nullable: true + type: array + priorityLabel: + items: + type: string + nullable: true + type: array + repository: + items: + type: string + nullable: true + type: array + repositoryId: + items: + type: string + nullable: true + type: array + ruleId: + items: + type: string + nullable: true + type: array + scrollId: + nullable: true + type: string + search: + nullable: true + type: string + secretType: + items: + type: string + nullable: true + type: array + severity: + items: + type: string + nullable: true + type: array + sort: + items: + additionalProperties: + additionalProperties: {} + type: object + type: object + nullable: true + type: array + sortPreset: + nullable: true + type: string + teamIDs: + items: + type: string + nullable: true + type: array + tenantId: + nullable: true + type: string + toDate: + nullable: true + type: string + toPriorityScore: + nullable: true + type: integer + type: + items: + type: string + nullable: true + type: array + urgentMaxDays: + nullable: true + type: integer + type: object + ModelsUnifiedFindingsRawMetricsQueryResultItem: + properties: + doc_count: + type: integer + type: object + ModelsUnifiedFindingsSortPreset: + enum: + - created_at_desc + - created_at_asc + - priority_desc + - severity_desc + type: string + ModelsUser: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureUserProvider' + azureEntra: + $ref: '#/components/schemas/ModelsAzureEntraUserProvider' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketUserProvider' + createdAt: + type: string + createdBy: + type: string + email: + description: The user's email address + type: string + github: + $ref: '#/components/schemas/ModelsGitHubUserProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabUserProvider' + googleWorkspace: + $ref: '#/components/schemas/ModelsGoogleWorkspaceUserProvider' + id: + description: The user's ID + type: string + isBot: + description: Whether the user is a bot + type: boolean + jira: + $ref: '#/components/schemas/ModelsJiraUserProvider' + lastUpdatedBy: + type: string + linear: + $ref: '#/components/schemas/ModelsLinearUserProvider' + name: + description: The user's name + type: string + okta: + $ref: '#/components/schemas/ModelsOktaUserProvider' + provider: + $ref: '#/components/schemas/ModelsUserProvider' + slack: + $ref: '#/components/schemas/ModelsSlackUserProvider' + slug: + description: The user's slug + type: string + teams: + $ref: '#/components/schemas/ModelsTeamsUserProvider' + updatedAt: + type: string + username: + description: The user's username + type: string + required: + - provider + - id + - name + - slug + - username + - isBot + type: object + ModelsUserMapping: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureUserProvider' + azureEntra: + $ref: '#/components/schemas/ModelsAzureEntraUserProvider' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketUserProvider' + createdAt: + type: string + createdBy: + type: string + github: + $ref: '#/components/schemas/ModelsGitHubUserProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabUserProvider' + googleWorkspace: + $ref: '#/components/schemas/ModelsGoogleWorkspaceUserProvider' + id: + type: string + jira: + $ref: '#/components/schemas/ModelsJiraUserProvider' + lastUpdatedBy: + type: string + linear: + $ref: '#/components/schemas/ModelsLinearUserProvider' + okta: + $ref: '#/components/schemas/ModelsOktaUserProvider' + slack: + $ref: '#/components/schemas/ModelsSlackUserProvider' + teams: + $ref: '#/components/schemas/ModelsTeamsUserProvider' + updatedAt: + type: string + required: + - id + - createdAt + - createdBy + - updatedAt + - lastUpdatedBy + type: object + ModelsUserProvider: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureUserProvider' + azureEntra: + $ref: '#/components/schemas/ModelsAzureEntraUserProvider' + bitBucket: + $ref: '#/components/schemas/ModelsBitbucketUserProvider' + gitHub: + $ref: '#/components/schemas/ModelsGitHubUserProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabUserProvider' + googleWorkspace: + $ref: '#/components/schemas/ModelsGoogleWorkspaceUserProvider' + id: + $ref: '#/components/schemas/ModelsProviderID' + jira: + $ref: '#/components/schemas/ModelsJiraUserProvider' + linear: + $ref: '#/components/schemas/ModelsLinearUserProvider' + okta: + $ref: '#/components/schemas/ModelsOktaUserProvider' + slack: + $ref: '#/components/schemas/ModelsSlackUserProvider' + teams: + $ref: '#/components/schemas/ModelsTeamsUserProvider' + required: + - id + type: object + RestErrResponse: + properties: + code: + description: Application-specific error code. + type: integer + context: + additionalProperties: {} + description: Application context. + type: object + error: + description: Error message. + type: string + status: + description: Status text. + type: string + type: object + TimeDuration: + format: int64 + type: integer + AssetgraphSearchIndexEntry: + properties: + accountId: + type: string + name: + type: string + nodeId: + type: string + objectType: + type: string + region: + type: string + subTitle: + type: string + type: object + EndpointsActiveDepsSummaryOldest: + properties: + ecosystem: + type: string + introducedAt: + format: date-time + type: string + name: + type: string + required: + - name + - ecosystem + - introducedAt + type: object + EndpointsArtifactDeploymentSummary: + properties: + accountId: + type: string + artifactId: + type: string + cloudProvider: + type: string + cloudResourceId: + type: string + computeType: + type: string + createdAt: + format: date-time + type: string + deletedAt: + format: date-time + nullable: true + type: string + id: + type: string + isDeleted: + type: boolean + isInternetFacing: + type: boolean + matchConfidence: + type: string + matchDetail: + type: string + matchMethod: + type: string + metadata: + additionalProperties: {} + type: object + projectId: + type: string + region: + type: string + repositoryId: + type: string + serviceName: + type: string + updatedAt: + format: date-time + type: string + type: object + EndpointsArtifactRegistrySummary: + properties: + baseUrl: + type: string + id: + type: string + name: + type: string + path: + type: string + type: + type: string + type: object + EndpointsArtifactSummary: + properties: + artifactName: + type: string + createdAt: + format: date-time + type: string + deletedAt: + format: date-time + nullable: true + type: string + entrypointId: + type: string + id: + type: string + isDeleted: + type: boolean + name: + type: string + nonProduction: + type: boolean + projectId: + type: string + registries: + items: + $ref: '#/components/schemas/EndpointsArtifactRegistrySummary' + type: array + repositoryId: + type: string + subArtifactPath: + type: string + subArtifactType: + type: string + type: + type: string + updatedAt: + format: date-time + type: string + type: object + EndpointsAssetGraphComponent: + properties: + accountType: + type: string + componentType: + type: string + downloadUrl: + type: string + edgeCount: + type: integer + expiresAt: + format: date-time + type: string + id: + type: string + lastUpdated: + format: date-time + type: string + name: + type: string + nodeCount: + type: integer + ownerId: + type: string + platform: + type: string + services: + items: + type: string + type: array + required: + - componentType + - id + - downloadUrl + - expiresAt + - nodeCount + - edgeCount + type: object + EndpointsCloudReconDiscoveredNodeDTO: + properties: + cidr: + type: string + nodeId: + type: string + objectType: + type: string + portFrom: + nullable: true + type: integer + portTo: + nullable: true + type: integer + properties: + format: base64 + type: string + protocol: + type: string + publicFlag: + nullable: true + type: boolean + region: + type: string + source: + type: string + subType: + type: string + subnetId: + type: string + vpcId: + type: string + type: object + EndpointsCloudReconHotspotDTO: + properties: + category: + type: string + confidence: + type: string + description: + type: string + hotspotId: + type: string + nodeIds: + items: + type: string + type: array + severity: + type: string + title: + type: string + type: object + EndpointsCloudReconScanMetadataDTO: + properties: + accountId: + type: string + completedAt: + format: date-time + nullable: true + type: string + discoveredCount: + type: integer + edgeCount: + type: integer + hotspotCount: + type: integer + modelName: + type: string + nodeCount: + type: integer + provider: + type: string + s3Bucket: + type: string + s3Key: + type: string + scanId: + type: string + schemaVersion: + type: string + startedAt: + format: date-time + type: string + status: + type: string + type: object + EndpointsCloudReconTenantTrustDTO: + properties: + externalAccountId: + type: string + trustingAccountCount: + type: integer + trustingAccounts: + items: + type: string + nullable: true + type: array + type: object + EndpointsContextGetCloudScanStatusOutput: + properties: + overallStatus: + type: string + providers: + items: + $ref: '#/components/schemas/EndpointsProviderScanStatus' + nullable: true + type: array + scanId: + type: string + required: + - scanId + - overallStatus + - providers + type: object + EndpointsContextStartCloudScanOutput: + properties: + executionArn: + type: string + scanId: + type: string + statusCode: + type: integer + type: object + EndpointsCreateOrganizationInput: + properties: + organization: + $ref: '#/components/schemas/ModelsOrgContext' + type: object + EndpointsCreateOrganizationOutput: + properties: + organization: + $ref: '#/components/schemas/ModelsOrgContext' + version: + type: string + type: object + EndpointsCreateRepoScanInput: + properties: + branch: + type: string + commitSha: + type: string + projectsTouched: + items: + $ref: '#/components/schemas/EndpointsRepoScanProjectTouched' + type: array + repositoryId: + type: string + sbomsGenerated: + items: + $ref: '#/components/schemas/EndpointsRepoScanSBOMGenerated' + type: array + status: + type: string + subagentsRun: + additionalProperties: + $ref: '#/components/schemas/EndpointsRepoScanSubagent' + type: object + required: + - repositoryId + - commitSha + type: object + EndpointsCreateRepoScanOutput: + properties: + scan: + $ref: '#/components/schemas/EndpointsRepoScanSummary' + version: + type: string + required: + - scan + type: object + EndpointsDeleteArtifactOutput: + properties: + message: + type: string + success: + type: boolean + required: + - success + - message + type: object + EndpointsDeleteContextApplicationOutput: + properties: + message: + type: string + required: + - message + type: object + EndpointsDeleteDepsOutput: + properties: + deletedCount: + type: integer + scope: + type: string + version: + type: string + required: + - version + type: object + EndpointsDeleteEntrypointOutput: + properties: + message: + type: string + success: + type: boolean + required: + - success + - message + type: object + EndpointsDeleteMemoryOutput: + properties: + message: + type: string + success: + type: boolean + version: + type: string + required: + - success + - message + type: object + EndpointsDeletePipelineOutput: + properties: + message: + type: string + success: + type: boolean + required: + - success + - message + type: object + EndpointsDeleteProjectOutput: + properties: + message: + type: string + success: + type: boolean + required: + - success + - message + type: object + EndpointsDeleteRepositoryOutput: + properties: + message: + type: string + success: + type: boolean + version: + type: string + required: + - success + - message + type: object + EndpointsDeleteSBOMOutput: + properties: + deletedKeys: + items: + type: string + type: array + repositories: + items: + $ref: '#/components/schemas/ModelsSBOMRepository' + nullable: true + type: array + tenantId: + type: string + tenantName: + type: string + version: + type: string + required: + - tenantId + - repositories + type: object + EndpointsEntrypointSummary: + properties: + applicationTypes: + items: + type: string + type: array + artifactIds: + items: + type: string + type: array + createdAt: + format: date-time + type: string + deletedAt: + format: date-time + nullable: true + type: string + description: + type: string + frameworkName: + type: string + id: + type: string + isDeleted: + type: boolean + kind: + type: string + lineNumber: + type: integer + name: + type: string + path: + type: string + ports: + items: + type: integer + type: array + projectId: + type: string + repositoryId: + type: string + updatedAt: + format: date-time + type: string + type: object + EndpointsGetActiveDepsOutput: + properties: + dependencies: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + nextCursor: + type: string + numItems: + type: integer + version: + type: string + required: + - version + - nextCursor + - numItems + - dependencies + type: object + EndpointsGetActiveDepsSummaryOutput: + properties: + directCount: + format: int64 + type: integer + oldest: + $ref: '#/components/schemas/EndpointsActiveDepsSummaryOldest' + totalCount: + format: int64 + type: integer + transitiveCount: + format: int64 + type: integer + version: + type: string + required: + - version + - totalCount + - directCount + - transitiveCount + type: object + EndpointsGetApplicationSchemaOutput: + properties: + format: + $ref: '#/components/schemas/ModelsSchemaFormat' + schema: + type: string + type: + $ref: '#/components/schemas/ModelsSchemaType' + version: + type: string + required: + - type + - format + - schema + type: object + EndpointsGetArtifactDeploymentOutput: + properties: + deployment: + $ref: '#/components/schemas/EndpointsArtifactDeploymentSummary' + version: + type: string + required: + - deployment + type: object + EndpointsGetArtifactOutput: + properties: + artifact: + $ref: '#/components/schemas/EndpointsArtifactSummary' + version: + type: string + required: + - artifact + type: object + EndpointsGetAssetGraphReachabilityOutput: + properties: + isInternetFacing: + type: boolean + paths: + items: + $ref: '#/components/schemas/EndpointsNetworkPathDTO' + nullable: true + type: array + summary: + type: string + targetNodeId: + type: string + targetNodeType: + type: string + version: + type: string + required: + - targetNodeId + - isInternetFacing + - paths + type: object + EndpointsGetAssetGraphSearchOutput: + properties: + results: + items: + $ref: '#/components/schemas/AssetgraphSearchIndexEntry' + nullable: true + type: array + total: + type: integer + version: + type: string + required: + - results + - total + type: object + EndpointsGetAssetGraphSubgraphOutput: + properties: + hierarchyEdges: + items: + $ref: '#/components/schemas/GraphEdge' + nullable: true + type: array + lateralEdges: + items: + $ref: '#/components/schemas/GraphEdge' + nullable: true + type: array + nodes: + items: {} + nullable: true + type: array + rootNodeId: + type: string + totalChildren: + type: integer + truncated: + type: boolean + version: + type: string + required: + - nodes + - hierarchyEdges + - lateralEdges + - rootNodeId + - totalChildren + - truncated + type: object + EndpointsGetAssetGraphSummaryOutput: + properties: + accountCount: + type: integer + combinedGraphExpiresAt: + format: date-time + type: string + combinedGraphUrl: + type: string + findingNodeCount: + type: integer + graphInfo: + $ref: '#/components/schemas/EndpointsInfrastructureGraphInfo' + infrastructureGraphs: + items: + $ref: '#/components/schemas/EndpointsAssetGraphComponent' + nullable: true + type: array + internetFacingNodeCount: + type: integer + lastUpdated: + format: date-time + type: string + mergedGraphEdgeCount: + type: integer + mergedGraphExpiresAt: + format: date-time + type: string + mergedGraphNodeCount: + type: integer + mergedGraphUrl: + type: string + repoContextGraphs: + items: + $ref: '#/components/schemas/EndpointsAssetGraphComponent' + nullable: true + type: array + totalInfraEdges: + type: integer + totalInfraNodes: + type: integer + totalRepoGraphs: + type: integer + version: + type: string + required: + - infrastructureGraphs + - repoContextGraphs + - totalInfraNodes + - totalInfraEdges + - totalRepoGraphs + - accountCount + - lastUpdated + type: object + EndpointsGetAssetInventoryCloudResourcesOutput: + properties: + nextToken: + type: string + resources: + items: + $ref: '#/components/schemas/ModelsAssetInventoryResource' + nullable: true + type: array + total: + type: integer + version: + type: string + required: + - resources + - total + - version + type: object + EndpointsGetAssetInventoryResourcesOutput: + properties: + nextToken: + type: string + resources: + items: + $ref: '#/components/schemas/ModelsAssetInventoryHost' + nullable: true + type: array + total: + type: integer + version: + type: string + required: + - resources + - total + - version + type: object + EndpointsGetCloudAccountRecordsOutput: + properties: + cloudAccounts: + items: + $ref: '#/components/schemas/ModelsAssetInventoryCloudAccountRecord' + nullable: true + type: array + nextToken: + type: string + total: + type: integer + version: + type: string + required: + - cloudAccounts + - total + - version + type: object + EndpointsGetCloudReconDiscoveredNodesOutput: + properties: + nodes: + items: + $ref: '#/components/schemas/EndpointsCloudReconDiscoveredNodeDTO' + nullable: true + type: array + type: object + EndpointsGetCloudReconHotspotsOutput: + properties: + hotspots: + items: + $ref: '#/components/schemas/EndpointsCloudReconHotspotDTO' + nullable: true + type: array + type: object + EndpointsGetCloudReconTenantTrustsOutput: + properties: + trusts: + items: + $ref: '#/components/schemas/EndpointsCloudReconTenantTrustDTO' + nullable: true + type: array + type: object + EndpointsGetContextApplicationOutput: + properties: + application: + $ref: '#/components/schemas/ModelsApplication' + version: + type: string + type: object + EndpointsGetContextApplicationsOutput: + properties: + applications: + items: + $ref: '#/components/schemas/ModelsApplication' + nullable: true + type: array + version: + type: string + required: + - applications + type: object + EndpointsGetDepsAtCommitOutput: + properties: + commitTimestamp: + format: date-time + type: string + dependencies: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - commitTimestamp + - numItems + - dependencies + type: object + EndpointsGetDepsByBomRefOutput: + properties: + dependencies: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + nextCursor: + type: string + numItems: + type: integer + version: + type: string + required: + - version + - nextCursor + - numItems + - dependencies + type: object + EndpointsGetDepsDependentsOutput: + properties: + dependencies: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + nextCursor: + type: string + numItems: + type: integer + version: + type: string + required: + - version + - nextCursor + - numItems + - dependencies + type: object + EndpointsGetDepsDiffOutput: + properties: + diff: + $ref: '#/components/schemas/ModelsDependencyDiff' + numItems: + type: integer + version: + type: string + required: + - version + - numItems + type: object + EndpointsGetDepsHistoryOut: + properties: + numItems: + type: integer + version: + type: string + windows: + items: + $ref: '#/components/schemas/ModelsDependencyWindow' + nullable: true + type: array + required: + - version + - numItems + - windows + type: object + EndpointsGetDepsOutput: + properties: + dependencies: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + nextCursor: + type: string + numItems: + type: integer + version: + type: string + required: + - version + - nextCursor + - numItems + - dependencies + type: object + EndpointsGetDepsWithoutLockfileOutput: + properties: + projects: + items: + $ref: '#/components/schemas/EndpointsProjectWithoutLockfile' + type: array + repositories: + items: + $ref: '#/components/schemas/EndpointsRepositoryWithoutLockfile' + type: array + version: + type: string + type: object + EndpointsGetEntrypointOutput: + properties: + entrypoint: + $ref: '#/components/schemas/EndpointsEntrypointSummary' + version: + type: string + required: + - entrypoint + type: object + EndpointsGetExposureOutput: + properties: + numItems: + type: integer + version: + type: string + windows: + items: + $ref: '#/components/schemas/ModelsDependencyWindow' + nullable: true + type: array + required: + - version + - numItems + - windows + type: object + EndpointsGetInfrastructureGraphDownloadOutput: + properties: + accountId: + type: string + downloadUrl: + type: string + expiresAt: + format: date-time + type: string + version: + type: string + required: + - downloadUrl + - expiresAt + - accountId + type: object + EndpointsGetInfrastructureGraphOutput: + properties: + graph: + $ref: '#/components/schemas/GraphGraph' + version: + type: string + type: object + EndpointsGetInfrastructureGraphSummaryOutput: + properties: + accountCount: + type: integer + combinedGraphExpiresAt: + format: date-time + type: string + combinedGraphUrl: + type: string + graphInfo: + $ref: '#/components/schemas/EndpointsInfrastructureGraphInfo' + graphs: + items: + $ref: '#/components/schemas/EndpointsInfrastructureGraphDownloadInfo' + nullable: true + type: array + integrationStatus: + $ref: '#/components/schemas/EndpointsIntegrationStatus' + lastUpdated: + format: date-time + type: string + totalEdgeCount: + type: integer + totalNodeCount: + type: integer + version: + type: string + required: + - integrationStatus + - graphs + - combinedGraphExpiresAt + - totalNodeCount + - totalEdgeCount + - accountCount + - lastUpdated + type: object + EndpointsGetInfrastructureGraphVersionOutput: + properties: + graph: + $ref: '#/components/schemas/GraphGraph' + version: + type: string + type: object + EndpointsGetLatestCloudReconScanOutput: + properties: + scan: + $ref: '#/components/schemas/EndpointsCloudReconScanMetadataDTO' + type: object + EndpointsGetLatestSBOMsOutput: + properties: + sboms: + items: + $ref: '#/components/schemas/ModelsCDXGenAtCommit' + nullable: true + type: array + version: + type: string + type: object + EndpointsGetMemoriesByTypeOutput: + properties: + count: + format: int32 + type: integer + memories: + items: + $ref: '#/components/schemas/ModelsMemory' + nullable: true + type: array + paginationToken: + nullable: true + type: string + version: + type: string + required: + - memories + - count + type: object + EndpointsGetMemoriesOutput: + properties: + count: + type: integer + memories: + items: + $ref: '#/components/schemas/ModelsMemory' + nullable: true + type: array + nextToken: + nullable: true + type: string + version: + type: string + required: + - memories + - count + type: object + EndpointsGetMemoryOutput: + properties: + memory: + $ref: '#/components/schemas/ModelsMemory' + version: + type: string + type: object + EndpointsGetMemoryVersionsOutput: + properties: + count: + format: int32 + type: integer + version: + type: string + versions: + items: + $ref: '#/components/schemas/ModelsMemory' + nullable: true + type: array + required: + - versions + - count + type: object + EndpointsGetOrganizationOutput: + properties: + organization: + $ref: '#/components/schemas/ModelsOrgContext' + version: + type: string + type: object + EndpointsGetPipelineOutput: + properties: + pipeline: + $ref: '#/components/schemas/EndpointsPipelineSummary' + version: + type: string + required: + - pipeline + type: object + EndpointsGetProjectActiveDepsOutput: + properties: + dependencies: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - numItems + - dependencies + type: object + EndpointsGetProjectExposureOutput: + properties: + numItems: + type: integer + version: + type: string + windows: + items: + $ref: '#/components/schemas/ModelsDependencyWindow' + nullable: true + type: array + required: + - version + - numItems + - windows + type: object + EndpointsGetProjectOutput: + properties: + project: + $ref: '#/components/schemas/ModelsContextProject' + version: + type: string + type: object + EndpointsGetProjectSchemaMetadataOutput: + properties: + downloadUrl: + type: string + format: + $ref: '#/components/schemas/ModelsSchemaFormat' + numEndpoints: + type: integer + size: + type: integer + type: + $ref: '#/components/schemas/ModelsSchemaType' + version: + type: string + required: + - type + - format + - size + - numEndpoints + - downloadUrl + type: object + EndpointsGetProjectSchemaOutput: + properties: + format: + $ref: '#/components/schemas/ModelsSchemaFormat' + schema: + type: string + type: + $ref: '#/components/schemas/ModelsSchemaType' + version: + type: string + required: + - type + - format + - schema + type: object + EndpointsGetProjectSchemaRawOutput: + properties: + contentType: + description: MIME type of the file, e.g. application/json, application/yaml, text/plain + type: string + downloadUrl: + description: Presigned URL for the raw spec file (OpenAPI JSON/YAML, Proto, GraphQL SDL) + type: string + fileName: + description: Suggested filename, e.g. schema.openapi.json, schema.proto + type: string + type: object + EndpointsGetPublicFacingAssetsOutput: + properties: + assets: + items: + $ref: '#/components/schemas/EndpointsPublicAsset' + nullable: true + type: array + nextToken: + type: string + required: + - assets + type: object + EndpointsGetRepoScanOutput: + properties: + scan: + $ref: '#/components/schemas/EndpointsRepoScanSummary' + version: + type: string + required: + - scan + type: object + EndpointsGetReportStatusOutput: + properties: + error: + type: string + status: + type: string + url: + type: string + version: + type: string + type: object + EndpointsGetRepositoriesOutput: + properties: + nextToken: + type: string + numItems: + type: integer + repositories: + items: + $ref: '#/components/schemas/RepocontextRepoContext' + nullable: true + type: array + version: + type: string + required: + - repositories + - numItems + - nextToken + type: object + EndpointsGetRepositoryOutput: + properties: + repository: + $ref: '#/components/schemas/RepocontextRepoContext' + version: + type: string + required: + - repository + type: object + EndpointsGetSBOMSOutput: + properties: + sboms: + items: + $ref: '#/components/schemas/ModelsCDXGenAtCommit' + nullable: true + type: array + version: + type: string + required: + - sboms + type: object + EndpointsGetSBOMTreeOutput: + properties: + repositories: + items: + $ref: '#/components/schemas/ModelsSBOMRepository' + nullable: true + type: array + tenantId: + type: string + tenantName: + type: string + version: + type: string + required: + - tenantId + - repositories + type: object + EndpointsGetVaultFileOutput: + properties: + createdAt: + format: date-time + type: string + documentId: + type: string + fileId: + type: string + fileName: + type: string + filePresignedUrl: + type: string + uploaderId: + type: string + uploaderUsername: + type: string + version: + type: string + required: + - filePresignedUrl + - fileId + - fileName + - uploaderId + - uploaderUsername + - createdAt + type: object + EndpointsGetVaultFilesListOutput: + properties: + files: + items: + $ref: '#/components/schemas/EndpointsVaultFileSimple' + nullable: true + type: array + version: + type: string + required: + - files + type: object + EndpointsGetVaultFilesOutput: + properties: + files: + items: + $ref: '#/components/schemas/EndpointsVaultFile' + nullable: true + type: array + version: + type: string + required: + - files + type: object + EndpointsInfrastructureAccountInfo: + properties: + accountId: + type: string + accountName: + type: string + accountType: + type: string + cloudProvider: + type: string + edgeCount: + type: integer + graphFilePath: + type: string + hasApiGateway: + type: boolean + hasCloudFrontCdn: + type: boolean + hasCloudFunctions: + type: boolean + hasCloudRunServices: + type: boolean + hasCrossAccountRefs: + type: boolean + hasDatabases: + type: boolean + hasEcsServices: + type: boolean + hasEksClusters: + type: boolean + hasGceInstances: + type: boolean + hasGkeClusters: + type: boolean + hasK8sClusters: + type: boolean + hasLambdaFunctions: + type: boolean + hasPublicAlb: + type: boolean + hasPublicNlb: + type: boolean + hasRoute53Dns: + type: boolean + hasTransitGateway: + type: boolean + internalServiceCount: + type: integer + nodeCount: + type: integer + publicEndpointCount: + type: integer + regions: + items: + type: string + nullable: true + type: array + services: + items: + type: string + nullable: true + type: array + required: + - accountId + - accountType + - nodeCount + - edgeCount + - regions + - services + - hasPublicAlb + - hasPublicNlb + - hasEcsServices + - hasEksClusters + - hasLambdaFunctions + - hasTransitGateway + - hasCrossAccountRefs + - hasCloudFrontCdn + - hasRoute53Dns + - hasApiGateway + - hasDatabases + - publicEndpointCount + - internalServiceCount + type: object + EndpointsInfrastructureCrossAccountConnection: + properties: + connectionCount: + type: integer + connectionType: + type: string + sourceAccountId: + type: string + sourceAccountType: + type: string + targetAccountId: + type: string + targetAccountType: + type: string + required: + - sourceAccountId + - targetAccountId + - connectionType + - connectionCount + type: object + EndpointsInfrastructureCrossAccountStatistics: + properties: + crossAccountConnections: + items: + $ref: '#/components/schemas/EndpointsInfrastructureCrossAccountConnection' + type: array + crossAccountEdgesCreated: + type: integer + hasCrossAccountReferences: + type: boolean + orphanedReferences: + type: integer + referencesByType: + additionalProperties: + type: integer + nullable: true + type: object + totalReferences: + type: integer + validatedReferences: + type: integer + required: + - hasCrossAccountReferences + - totalReferences + - validatedReferences + - orphanedReferences + - referencesByType + - crossAccountEdgesCreated + type: object + EndpointsInfrastructureEdgeStatistics: + properties: + bidirectionalEdges: + type: integer + edgesByType: + additionalProperties: + type: integer + nullable: true + type: object + totalEdges: + type: integer + unidirectionalEdges: + type: integer + required: + - totalEdges + - edgesByType + - bidirectionalEdges + - unidirectionalEdges + type: object + EndpointsInfrastructureGraphDownloadInfo: + properties: + accountId: + type: string + downloadUrl: + type: string + edgeCount: + type: integer + expiresAt: + format: date-time + type: string + generatedAt: + format: date-time + type: string + graphId: + type: string + graphType: + type: string + nodeCount: + type: integer + region: + type: string + version: + type: string + required: + - accountId + - downloadUrl + - expiresAt + - nodeCount + - edgeCount + - generatedAt + type: object + EndpointsInfrastructureGraphInfo: + properties: + accountsInfo: + items: + $ref: '#/components/schemas/EndpointsInfrastructureAccountInfo' + nullable: true + type: array + crossAccountStatistics: + $ref: '#/components/schemas/EndpointsInfrastructureCrossAccountStatistics' + edgeStatistics: + $ref: '#/components/schemas/EndpointsInfrastructureEdgeStatistics' + metadata: + $ref: '#/components/schemas/EndpointsInfrastructureGraphInfoMetadata' + nodeStatistics: + $ref: '#/components/schemas/EndpointsInfrastructureNodeStatistics' + validationResults: + $ref: '#/components/schemas/EndpointsInfrastructureValidationResults' + required: + - metadata + - nodeStatistics + - edgeStatistics + - accountsInfo + - crossAccountStatistics + - validationResults + type: object + EndpointsInfrastructureGraphInfoMetadata: + properties: + destinationBucket: + type: string + generatedAt: + format: date-time + type: string + generatedBy: + type: string + graphType: + type: string + id: + type: string + isCombinedGraph: + type: boolean + processingDuration: + type: string + sourceBucket: + type: string + version: + type: string + required: + - id + - version + - generatedAt + - generatedBy + - processingDuration + - sourceBucket + - isCombinedGraph + - graphType + type: object + EndpointsInfrastructureGraphSummary: + properties: + accountId: + type: string + edgeCount: + type: integer + generatedAt: + format: date-time + type: string + generatedBy: + type: string + graphId: + type: string + graphType: + type: string + lastModified: + format: date-time + type: string + nodeCount: + type: integer + region: + type: string + s3Key: + type: string + tags: + additionalProperties: + type: string + type: object + version: + type: string + required: + - accountId + - graphId + - version + - nodeCount + - edgeCount + - graphType + - generatedAt + - generatedBy + - lastModified + type: object + EndpointsInfrastructureNodeStatistics: + properties: + nodesByAccount: + additionalProperties: + type: integer + nullable: true + type: object + nodesByObjectType: + additionalProperties: + type: integer + nullable: true + type: object + nodesByRegion: + additionalProperties: + type: integer + nullable: true + type: object + nodesBySubType: + additionalProperties: + type: integer + nullable: true + type: object + nodesByType: + additionalProperties: + type: integer + nullable: true + type: object + totalNodes: + type: integer + required: + - totalNodes + - nodesByObjectType + - nodesByType + - nodesBySubType + - nodesByRegion + - nodesByAccount + type: object + EndpointsInfrastructureValidationCheck: + properties: + details: + type: string + name: + type: string + passed: + type: boolean + required: + - name + - passed + type: object + EndpointsInfrastructureValidationResults: + properties: + checks: + items: + $ref: '#/components/schemas/EndpointsInfrastructureValidationCheck' + nullable: true + type: array + errorCount: + type: integer + errors: + items: + type: string + type: array + isValid: + type: boolean + warningCount: + type: integer + warnings: + items: + type: string + type: array + required: + - isValid + - errorCount + - warningCount + - checks + type: object + EndpointsIntegrationStatus: + enum: + - pending + - ready + type: string + EndpointsListArtifactDeploymentsOutput: + properties: + deployments: + items: + $ref: '#/components/schemas/EndpointsArtifactDeploymentSummary' + nullable: true + type: array + nextToken: + nullable: true + type: string + version: + type: string + required: + - deployments + type: object + EndpointsListArtifactsOutput: + properties: + artifacts: + items: + $ref: '#/components/schemas/EndpointsArtifactSummary' + nullable: true + type: array + nextToken: + nullable: true + type: string + version: + type: string + required: + - artifacts + type: object + EndpointsListEntrypointsOutput: + properties: + entrypoints: + items: + $ref: '#/components/schemas/EndpointsEntrypointSummary' + nullable: true + type: array + nextToken: + nullable: true + type: string + version: + type: string + required: + - entrypoints + type: object + EndpointsListInfrastructureGraphVersionsOutput: + properties: + accountId: + type: string + count: + type: integer + version: + type: string + versions: + items: + type: string + nullable: true + type: array + required: + - accountId + - versions + - count + type: object + EndpointsListInfrastructureGraphsOutput: + properties: + count: + type: integer + graphs: + items: + $ref: '#/components/schemas/EndpointsInfrastructureGraphSummary' + nullable: true + type: array + version: + type: string + required: + - graphs + - count + type: object + EndpointsListPipelinesOutput: + properties: + nextToken: + nullable: true + type: string + pipelines: + items: + $ref: '#/components/schemas/EndpointsPipelineSummary' + nullable: true + type: array + version: + type: string + required: + - pipelines + type: object + EndpointsListRepoScansOutput: + properties: + page: + type: integer + pageSize: + type: integer + scans: + items: + $ref: '#/components/schemas/EndpointsRepoScanSummary' + nullable: true + type: array + total: + type: integer + version: + type: string + required: + - scans + - total + - page + - pageSize + type: object + EndpointsListRepositoryProjectsOutput: + properties: + nextToken: + nullable: true + type: string + projects: + items: + $ref: '#/components/schemas/ModelsProjectSummary' + nullable: true + type: array + version: + type: string + required: + - projects + type: object + EndpointsListSchemasOutput: + properties: + schemas: + items: + $ref: '#/components/schemas/EndpointsSchemaSummary' + nullable: true + type: array + version: + type: string + required: + - schemas + type: object + EndpointsNetworkPathDTO: + properties: + description: + type: string + edges: + items: + $ref: '#/components/schemas/GraphEdge' + nullable: true + type: array + nodeIds: + items: + type: string + nullable: true + type: array + pathId: + type: string + reachesInternet: + type: boolean + startNodeId: + type: string + startNodeType: + type: string + required: + - pathId + - edges + - nodeIds + - startNodeId + - startNodeType + - reachesInternet + type: object + EndpointsPackageFilter: + properties: + ecosystem: + type: string + package: + type: string + version: + type: string + required: + - ecosystem + - package + - version + type: object + EndpointsPatchContextApplicationInput: + properties: + application: + $ref: '#/components/schemas/ModelsAppContextSeed' + required: + - application + type: object + EndpointsPatchContextApplicationOutput: + properties: + application: + $ref: '#/components/schemas/ModelsApplication' + message: + type: string + version: + type: string + required: + - message + type: object + EndpointsPatchMemoryInput: + properties: + citations: + items: + $ref: '#/components/schemas/ModelsMemoryCitationsElem' + type: array + confidence: + nullable: true + type: number + content: + nullable: true + type: string + createNewVersion: + nullable: true + type: boolean + crossReferences: + items: + $ref: '#/components/schemas/ModelsMemoryCrossReferencesElem' + type: array + metadata: + $ref: '#/components/schemas/ModelsMemoryMetadata' + parentNoteId: + nullable: true + type: string + priority: + $ref: '#/components/schemas/ModelsMemoryPriority' + nullable: true + tags: + items: + type: string + type: array + title: + nullable: true + type: string + type: object + EndpointsPatchMemoryOutput: + properties: + memory: + $ref: '#/components/schemas/ModelsMemory' + version: + type: string + type: object + EndpointsPatchRepoScanInput: + properties: + completedAt: + format: date-time + nullable: true + type: string + errorMessage: + type: string + projectsTouched: + items: + $ref: '#/components/schemas/EndpointsRepoScanProjectTouched' + type: array + sbomsGenerated: + items: + $ref: '#/components/schemas/EndpointsRepoScanSBOMGenerated' + type: array + status: + type: string + subagentsRun: + additionalProperties: + $ref: '#/components/schemas/EndpointsRepoScanSubagent' + type: object + type: object + EndpointsPatchRepoScanOutput: + properties: + scan: + $ref: '#/components/schemas/EndpointsRepoScanSummary' + version: + type: string + required: + - scan + type: object + EndpointsPatchVaultFileInput: + properties: + documentId: + type: string + metadata: + additionalProperties: {} + type: object + processedAt: + type: string + type: object + EndpointsPatchVaultFileOutput: + properties: + message: + type: string + success: + type: boolean + version: + type: string + required: + - success + - message + type: object + EndpointsPipelineJobSummary: + properties: + name: + type: string + runsOn: + type: string + steps: + items: + $ref: '#/components/schemas/EndpointsPipelineStepSummary' + nullable: true + type: array + type: object + EndpointsPipelineStepSummary: + properties: + command: + type: string + description: + type: string + name: + type: string + uses: + type: string + type: object + EndpointsPipelineSummary: + properties: + artifactIds: + items: + type: string + type: array + createdAt: + format: date-time + type: string + deletedAt: + format: date-time + nullable: true + type: string + filePath: + type: string + id: + type: string + isDeleted: + type: boolean + jobs: + items: + $ref: '#/components/schemas/EndpointsPipelineJobSummary' + type: array + metadata: + additionalProperties: {} + type: object + name: + type: string + platform: + type: string + projectId: + type: string + repositoryId: + type: string + runsOnPr: + type: boolean + triggers: + items: + $ref: '#/components/schemas/EndpointsPipelineTriggerSummary' + type: array + updatedAt: + format: date-time + type: string + type: object + EndpointsPipelineTriggerSummary: + properties: + branches: + items: + type: string + type: array + cron: + type: string + paths: + items: + type: string + type: array + type: + type: string + type: object + EndpointsPostCloudReconScanInput: + properties: + accountId: + type: string + completedAt: + format: date-time + type: string + modelName: + type: string + payload: + format: base64 + type: string + provider: + type: string + scanId: + type: string + schemaVersion: + type: string + startedAt: + format: date-time + type: string + required: + - accountId + - provider + - startedAt + - schemaVersion + - payload + type: object + EndpointsPostCloudReconScanOutput: + properties: + hotspotCount: + type: integer + nodeCount: + type: integer + s3Bucket: + type: string + s3Key: + type: string + scanId: + type: string + type: object + EndpointsPostContextApplicationInput: + properties: + application: + $ref: '#/components/schemas/ModelsAgentAppContextSeed' + required: + - application + type: object + EndpointsPostContextApplicationOutput: + properties: + application: + $ref: '#/components/schemas/ModelsApplication' + message: + type: string + version: + type: string + required: + - message + type: object + EndpointsPostMemoryInput: + properties: + citations: + items: + $ref: '#/components/schemas/ModelsMemoryCitationsElem' + type: array + confidence: + nullable: true + type: number + content: + type: string + createdBy: + nullable: true + type: string + crossReferences: + items: + $ref: '#/components/schemas/ModelsMemoryCrossReferencesElem' + type: array + isUserCreated: + nullable: true + type: boolean + memoryType: + $ref: '#/components/schemas/ModelsMemoryMemoryType' + metadata: + $ref: '#/components/schemas/ModelsMemoryMetadata' + parentNoteId: + nullable: true + type: string + priority: + $ref: '#/components/schemas/ModelsMemoryPriority' + nullable: true + resourceId: + type: string + resourceType: + $ref: '#/components/schemas/ModelsMemoryResourceType' + tags: + items: + type: string + type: array + title: + nullable: true + type: string + required: + - memoryType + - content + type: object + EndpointsPostMemoryOutput: + properties: + memory: + $ref: '#/components/schemas/ModelsMemory' + version: + type: string + type: object + EndpointsPostProjectSchemaInput: + properties: + content: + type: string + format: + $ref: '#/components/schemas/ModelsSchemaFormat' + type: + $ref: '#/components/schemas/ModelsSchemaType' + required: + - type + - format + - content + type: object + EndpointsPostProjectSchemaOutput: + properties: + message: + type: string + version: + type: string + required: + - message + type: object + EndpointsPostRAGResyncOutput: + properties: + message: + type: string + success: + type: boolean + required: + - success + - message + type: object + EndpointsPostReportInput: + properties: + packages: + description: List of packages to filter (ecosystem, package, version) + items: + $ref: '#/components/schemas/EndpointsPackageFilter' + nullable: true + type: array + repositories: + description: Optional list of repository IDs to filter. If empty, searches all repositories. + items: + type: string + type: array + required: + - packages + type: object + EndpointsPostReportOutput: + properties: + jobId: + type: string + version: + type: string + required: + - jobId + type: object + EndpointsPostSBOMGenerateInput: + properties: + cloneUrl: + type: string + commitSha: + type: string + defaultBranch: + type: string + repositoryId: + type: string + required: + - repositoryId + type: object + EndpointsPostSBOMGenerateOutput: + properties: + repositoryId: + type: string + status: + type: string + version: + type: string + type: object + EndpointsPostSBOMResolveInput: + properties: + branch: + type: string + cdxgenMajor: + type: integer + cloneURL: + type: string + commitSHA: + type: string + isDefaultBranchPush: + type: boolean + lockfileSetHash: + type: string + ownerProvider: + $ref: '#/components/schemas/ModelsOwnerProvider' + repositoryID: + type: string + repositoryProvider: + $ref: '#/components/schemas/ModelsGitRepositoryProvider' + scannerVersion: + type: string + tenantID: + type: string + timestamp: + type: string + type: object + EndpointsPostSBOMResolveOutput: + properties: + components: + type: integer + sbomS3Key: + type: string + source: + type: string + type: object + EndpointsPostSBOMScanInput: + properties: + commitSha: + type: string + forceRegenerate: + type: boolean + projectId: + type: string + repositoryId: + type: string + required: + - repositoryId + - projectId + - commitSha + type: object + EndpointsPostSBOMScanOutput: + properties: + cached: + type: boolean + sbom: + $ref: '#/components/schemas/ModelsCDXGenAtCommit' + status: + type: string + version: + type: string + type: object + EndpointsPostVaultFileInput: + properties: + description: + nullable: true + type: string + fileName: + type: string + required: + - fileName + type: object + EndpointsPostVaultFileOutput: + properties: + description: + nullable: true + type: string + documentID: + type: string + fileID: + type: string + fileName: + type: string + presignedUploadURL: + type: string + version: + type: string + required: + - presignedUploadURL + - documentID + - fileID + - fileName + type: object + EndpointsPostVaultOnboardInput: + properties: + fileIDs: + description: List of vault file IDs to process + items: + type: string + nullable: true + type: array + required: + - fileIDs + type: object + EndpointsPostVaultOnboardOutput: + properties: + message: + type: string + success: + type: boolean + required: + - success + - message + type: object + EndpointsProjectWithoutLockfile: + properties: + ecosystem: + type: string + projectId: + type: string + projectName: + type: string + repositoryId: + type: string + repositoryName: + type: string + type: object + EndpointsProviderScanStatus: + properties: + completedAt: + type: string + errorMessage: + type: string + provider: + type: string + startedAt: + type: string + status: + type: string + required: + - provider + - status + type: object + EndpointsPublicAsset: + properties: + accountId: + type: string + assetId: + type: string + cloudProvider: + type: string + dnsNames: + items: + type: string + type: array + isPublicFacing: + type: boolean + lastSeenAt: + type: string + publicIps: + items: + type: string + type: array + region: + type: string + resourceId: + type: string + resourceType: + type: string + tags: + additionalProperties: + type: string + type: object + tenantId: + type: string + required: + - assetId + - tenantId + - cloudProvider + - accountId + - resourceType + - resourceId + - isPublicFacing + type: object + EndpointsRebuildApplicationsInput: + properties: + force: + type: boolean + providerOwnerId: + type: string + required: + - providerOwnerId + - force + type: object + EndpointsRebuildApplicationsOutput: + properties: + status: + type: string + version: + type: string + required: + - status + type: object + EndpointsRepoScanProjectTouched: + properties: + path: + type: string + projectId: + type: string + required: + - projectId + - path + type: object + EndpointsRepoScanSBOMGenerated: + properties: + ecosystem: + type: string + projectId: + type: string + s3Key: + type: string + required: + - projectId + - ecosystem + - s3Key + type: object + EndpointsRepoScanSubagent: + properties: + completedAt: + format: date-time + nullable: true + type: string + durationMs: + nullable: true + type: integer + error: + type: string + ran: + type: boolean + startedAt: + format: date-time + nullable: true + type: string + status: + type: string + type: object + EndpointsRepoScanSummary: + properties: + branch: + type: string + commitSha: + type: string + completedAt: + format: date-time + nullable: true + type: string + errorMessage: + type: string + id: + type: string + projectsTouched: + items: + $ref: '#/components/schemas/EndpointsRepoScanProjectTouched' + type: array + repositoryId: + type: string + sbomsGenerated: + items: + $ref: '#/components/schemas/EndpointsRepoScanSBOMGenerated' + type: array + startedAt: + format: date-time + type: string + status: + type: string + subagentsRun: + additionalProperties: + $ref: '#/components/schemas/EndpointsRepoScanSubagent' + type: object + updatedAt: + format: date-time + type: string + required: + - id + - repositoryId + - commitSha + - status + - startedAt + - updatedAt + type: object + EndpointsRepositorySortBy: + enum: + - '' + - alphabetical + type: string + EndpointsRepositoryWithoutLockfile: + properties: + depCount: + format: int64 + type: integer + ecosystems: + items: + type: string + nullable: true + type: array + projectCount: + format: int64 + type: integer + repositoryId: + type: string + repositoryName: + type: string + type: object + EndpointsSBOMIngestReplayInput: + properties: + globalReplay: + type: boolean + projectID: + type: string + repositoryID: + type: string + type: object + EndpointsSBOMIngestReplayOutput: + properties: + message: + type: string + version: + type: string + type: object + EndpointsSchemaSummary: + properties: + downloadUrl: + type: string + projectId: + type: string + projectName: + type: string + repositoryId: + type: string + schemaFormat: + type: string + schemaType: + type: string + size: + type: integer + type: object + EndpointsUpdateOrganizationInput: + properties: + name: + nullable: true + type: string + notes: + nullable: true + type: string + type: object + EndpointsUpdateProjectInput: + properties: + deletedAt: + format: date-time + nullable: true + type: string + description: + nullable: true + type: string + isDeleted: + nullable: true + type: boolean + metadata: + additionalProperties: {} + type: object + tags: + items: + type: string + type: array + type: object + EndpointsUpdateProjectOutput: + properties: + success: + type: boolean + version: + type: string + required: + - success + type: object + EndpointsUpdateRepositoryInput: + properties: + name: + nullable: true + type: string + type: object + EndpointsVaultFile: + properties: + contentType: + type: string + createdAt: + format: date-time + type: string + documentId: + type: string + fileId: + type: string + fileName: + type: string + filePresignedUrl: + type: string + uploaderId: + type: string + uploaderUsername: + type: string + required: + - filePresignedUrl + - fileId + - fileName + - uploaderId + - uploaderUsername + - createdAt + type: object + EndpointsVaultFileSimple: + properties: + description: + nullable: true + type: string + documentId: + nullable: true + type: string + fileName: + type: string + required: + - fileName + type: object + GraphBuildArtifactRepositoryType: + enum: + - ARTIFACTORY + - GITHUB_RELEASES + - IMAGE_REGISTRY + - OTHER + - PACKAGE_REGISTRY + - S3_BUCKET + type: string + GraphBuildArtifactType: + enum: + - ARCHIVE + - BYTECODE_OBJECT_FILE + - CODE_DIRECTORY + - CONTAINER_IMAGE + - CRATE_PACKAGE + - EXECUTABLE_BINARY + - GEM_PACKAGE + - HELM_CHART + - JAR + - MAVEN_PACKAGE + - NPM_PACKAGE + - NUGET_PACKAGE + - OCI_IMAGE + - OS_PACKAGE + - OTHER + - PYPI_PACKAGE + - SPA_BUNDLE + - STATIC_WEBSITE + - VIRTUAL_MACHINE_IMAGE + - WASM_MODULES + - WEB_COMPONENTS + type: string + GraphCodeArtifactType: + enum: + - BROWSER_CLIENT + - BROWSER_EXTENSION + - CLI + - CLOUD_FUNCTION + - DESKTOP + - GRAPHQL_API + - IOT_FIRMWARE + - MOBILE_APP + - OTHER + - PIPELINE_NODE + - PLUGIN + - PRIVATE_LIBRARY + - PUBLIC_LIBRARY + - REST_API + - SMART_CONTRACT + - SPA_BROWSER_APP + - TEST_SUITE + - WEB_SERVER + type: string + GraphEdge: + properties: + explanation: + nullable: true + type: string + sourceId: + type: string + targetId: + type: string + type: + $ref: '#/components/schemas/GraphEdgeType' + type: object + GraphEdgeType: + enum: + - ACCESSED_BY + - ALLOWED_BY + - ALLOWS_EGRESS_TO + - ALLOWS_INGRESS_FROM + - APPLIES_TO + - ASSUMES + - ASSUMES_ROLE + - ATTACHED_TO + - AUTHENTICATES + - BASED_ON_CONTAINERFILE + - BELONGS_TO + - BUILDS + - BUILT_FROM + - CALLS + - CAN_REACH + - CLAIMS + - CONTAINS + - CONTRIBUTES_TO + - CONTRIBUTES_TO_PROJECT + - CONTROLS + - DEPLOYED_BY + - DEPLOYED_IN + - DEPLOYED_TO + - ENCRYPTS + - ENFORCED_BY + - ENFORCES + - ENTRY_POINTS + - EXECUTES + - EXISTS + - EXISTS_IN + - EXPOSED_AT + - EXPOSED_BY + - EXPOSED_ON + - EXPOSES + - FILTERED_BY + - FORWARDS_TO + - GRANTS_ACCESS + - HAS_AUTH + - HAS_CONTRIBUTOR + - HAS_ENDPOINT + - HAS_ENTRYPOINT + - HAS_FINDING + - HAS_HOST + - HAS_MEMBER + - HAS_NOTE + - HAS_ROLE + - HAS_RULE + - HAS_SECURITY_GROUP + - HOSTS + - IN_PROJECT + - IN_REPOSITORY + - IN_SUBNET + - IN_VPC + - ISSUED_TO + - MEMBER_OF + - MONITORS + - MOUNTED_BY + - OPEN_ON + - ORIGIN + - PEERED_WITH + - PRODUCED_BY + - PROTECTED_BY + - PROVIDED_BY + - PROVIDES + - PUBLISHES_TO + - QUERIED_BY + - QUERIES + - REFERENCES + - RESOLVES_TO + - ROUTED_BY + - ROUTES_TO + - RUNS_IMAGE + - SCALES + - SECURED_BY + - SERVES + - SOURCED_FROM + - STORED_IN + - SUBSCRIBES_TO + - TARGETS + - TARGET_WORKLOAD + - TRIGGERED_BY + - TRIGGERS + - UPLOADED_TO + - USED_BY + - USES + - USES_CONTAINER + - USES_POD + - USES_SECURITY_GROUP + - USES_TASK_DEFINITION + type: string + GraphGraph: + properties: + edges: + items: + $ref: '#/components/schemas/GraphEdge' + nullable: true + type: array + nodes: + items: {} + nullable: true + type: array + type: object + LanguageCodeLanguage: + enum: + - Apex + - Bicep + - C + - CPlusPlus + - CSharp + - CloudFormation + - Containerfile + - Dockerfile + - FSharp + - Go + - HCL + - JSON + - Java + - JavaScript + - Kotlin + - Kubernetes + - Objective-C + - OpenAPI + - PHP + - Python + - Renovate + - Ruby + - Rust + - Scala + - Serverless + - Shell + - Solidity + - Swift + - Terraform + - TypeScript + - Unknown + - YAML + type: string + ModelsAPISpecMetadata: + properties: + basePath: + type: string + numEndpoints: + type: integer + servers: + items: + type: string + type: array + version: + type: string + required: + - numEndpoints + type: object + ModelsAPISpecRef: + properties: + contentRef: + $ref: '#/components/schemas/ModelsContentReference' + format: + type: string + id: + type: string + metadata: + $ref: '#/components/schemas/ModelsAPISpecMetadata' + name: + type: string + source: + type: string + type: + type: string + required: + - id + - name + - contentRef + - metadata + type: object + ModelsAPISurface: + properties: + authenticatedEndpoints: + type: integer + coverage: + format: double + type: number + publicEndpoints: + type: integer + totalEndpoints: + type: integer + required: + - totalEndpoints + - publicEndpoints + - authenticatedEndpoints + - coverage + type: object + ModelsAWSAccountType: + enum: + - Production + - Development + - Staging + - Sandbox + - PreProd + - Other + type: string + ModelsAWSIntegrationAssetInventoryHost: + properties: + accountId: + type: string + accountName: + type: string + accountType: + $ref: '#/components/schemas/ModelsAWSAccountType' + aliases: + items: + type: string + nullable: true + type: array + protocol: + type: string + region: + type: string + resourceId: + type: string + service: + type: string + required: + - accountId + - accountName + - accountType + - region + - service + - aliases + - resourceId + - protocol + type: object + ModelsAgentAppContextSeed: + properties: + componentTypes: + items: + type: string + type: array + description: + type: string + id: + nullable: true + type: string + name: + type: string + productType: + nullable: true + type: string + productUrl: + nullable: true + type: string + tags: + items: + type: string + type: array + type: object + ModelsAppContextSeed: + properties: + description: + type: string + name: + type: string + type: object + ModelsApplication: + properties: + components: + items: + $ref: '#/components/schemas/ModelsApplicationComponent' + nullable: true + type: array + createdAt: + format: date-time + type: string + description: + type: string + discovery: + $ref: '#/components/schemas/ModelsApplicationDiscovery' + id: + type: string + metadata: + $ref: '#/components/schemas/ModelsApplicationMetadata' + name: + type: string + tags: + items: + type: string + type: array + tenantId: + type: string + updatedAt: + format: date-time + type: string + version: + type: string + required: + - id + - tenantId + - name + - description + - components + - discovery + - metadata + - createdAt + - updatedAt + type: object + ModelsApplicationComponent: + properties: + discovery: + $ref: '#/components/schemas/ModelsComponentDiscovery' + id: + type: string + name: + type: string + source: + $ref: '#/components/schemas/ModelsComponentSource' + type: + type: string + required: + - id + - name + - source + - discovery + type: object + ModelsApplicationDiscovery: + properties: + apiSpecs: + items: + $ref: '#/components/schemas/ModelsAPISpecRef' + nullable: true + type: array + apiSurface: + $ref: '#/components/schemas/ModelsAPISurface' + securityProfile: + $ref: '#/components/schemas/ModelsSecurityProfile' + technologies: + items: + type: string + nullable: true + type: array + required: + - apiSpecs + - apiSurface + - technologies + - securityProfile + type: object + ModelsApplicationMetadata: + properties: + agentExecutionId: + type: string + cacheKey: + type: string + customFields: + additionalProperties: + type: string + type: object + generatedByAgentVersion: + type: string + lastRebuildTime: + format: date-time + type: string + sourceRepositories: + items: + type: string + type: array + sourceRepositoryCount: + type: integer + status: + type: string + required: + - lastRebuildTime + type: object + ModelsAssetInventoryCloudAccountRecord: + properties: + accountId: + type: string + accountName: + type: string + active: + type: boolean + cloudProvider: + type: string + createdAt: + type: string + deletedAt: + type: string + id: + type: string + lastScanAt: + type: string + lastScanId: + type: string + updatedAt: + type: string + required: + - id + - accountId + - accountName + - cloudProvider + - active + - createdAt + - updatedAt + type: object + ModelsAssetInventoryHost: + properties: + active: + type: boolean + awsIntegration: + $ref: '#/components/schemas/ModelsAWSIntegrationAssetInventoryHost' + codeLocation: + $ref: '#/components/schemas/ModelsAssetInventoryHostCodeLocation' + createdAt: + type: string + dnsNames: + items: + type: string + nullable: true + type: array + firstScanAt: + type: string + host: + type: string + id: + type: string + ipAddresses: + items: + type: string + nullable: true + type: array + isAuthenticated: + type: boolean + isLatest: + type: boolean + lastScanAt: + type: string + ports: + items: + $ref: '#/components/schemas/ModelsAssetInventoryPort' + type: array + resourceCategory: + type: string + resourceType: + type: string + sourceType: + $ref: '#/components/schemas/ModelsHostSourceType' + updatedAt: + type: string + required: + - host + - dnsNames + - ipAddresses + - sourceType + - createdAt + - updatedAt + - awsIntegration + - active + - firstScanAt + - lastScanAt + - codeLocation + - isLatest + - id + - resourceType + - resourceCategory + type: object + ModelsAssetInventoryHostCodeLocation: + properties: + description: + type: string + ownerId: + type: string + ownerName: + type: string + platform: + type: string + projectName: + type: string + repositoryId: + type: string + repositoryName: + type: string + required: + - ownerId + - ownerName + - repositoryId + - repositoryName + - projectName + - description + type: object + ModelsAssetInventoryPort: + properties: + active: + type: boolean + createdAt: + type: string + port: + type: integer + protocol: + type: string + transportProtocol: + type: string + updatedAt: + type: string + required: + - port + - transportProtocol + - active + type: object + ModelsAssetInventoryResource: + properties: + accountId: + type: string + active: + type: boolean + cloudProvider: + type: string + createdAt: + type: string + deletedAt: + type: string + dnsNames: + items: + type: string + type: array + firstSeenAt: + type: string + id: + type: string + isPublicFacing: + type: boolean + lastSeenAt: + type: string + lastSeenScanId: + type: string + name: + type: string + privateIPs: + items: + type: string + type: array + properties: + additionalProperties: {} + type: object + providerType: + type: string + publicIPs: + items: + type: string + type: array + region: + type: string + resourceCategory: + type: string + resourceId: + type: string + resourceType: + type: string + subnet: + type: string + tags: + additionalProperties: + type: string + type: object + updatedAt: + type: string + vpc: + type: string + required: + - id + - resourceId + - name + - resourceType + - resourceCategory + - providerType + - cloudProvider + - accountId + - active + - createdAt + - updatedAt + type: object + ModelsCDXAuthors: + properties: + email: + type: string + name: + type: string + required: + - name + - email + type: object + ModelsCDXComponents: + properties: + author: + type: string + bom-ref: + type: string + description: + type: string + externalReferences: + items: + $ref: '#/components/schemas/ModelsCDXReferences' + nullable: true + type: array + group: + type: string + hashes: + items: + $ref: '#/components/schemas/ModelsCDXHashes' + nullable: true + type: array + licenses: + items: + $ref: '#/components/schemas/ModelsCDXLicenseEntry' + nullable: true + type: array + name: + type: string + properties: + items: + $ref: '#/components/schemas/ModelsCDXProperties' + nullable: true + type: array + publisher: + type: string + purl: + type: string + scope: + type: string + type: + type: string + version: + type: string + required: + - author + - publisher + - group + - name + - version + - description + - hashes + - licenses + - purl + - type + - bom-ref + - properties + - externalReferences + - scope + type: object + ModelsCDXDeps: + properties: + dependsOn: + items: + type: string + nullable: true + type: array + ref: + type: string + required: + - ref + - dependsOn + type: object + ModelsCDXGen: + properties: + bomFormat: + type: string + components: + items: + $ref: '#/components/schemas/ModelsCDXComponents' + nullable: true + type: array + dependencies: + items: + $ref: '#/components/schemas/ModelsCDXDeps' + nullable: true + type: array + metadata: + $ref: '#/components/schemas/ModelsCDXMetaData' + serialNumber: + type: string + services: + items: + $ref: '#/components/schemas/ModelsCDXService' + nullable: true + type: array + specVersion: + type: string + version: + type: integer + required: + - bomFormat + - specVersion + - serialNumber + - version + - metadata + - components + - services + - dependencies + type: object + ModelsCDXGenAtCommit: + properties: + cdxGen: + $ref: '#/components/schemas/ModelsCDXGen' + commitSha: + type: string + commitTimestamp: + format: date-time + type: string + detectedEcosystems: + items: + type: string + type: array + detectedLockfiles: + items: + type: string + type: array + detectedManifests: + items: + type: string + type: array + lockfileClassification: + type: string + manifestRangeSources: + additionalProperties: + $ref: '#/components/schemas/ModelsManifestRangeSource' + type: object + manifestRanges: + additionalProperties: + type: string + type: object + required: + - commitSha + - commitTimestamp + type: object + ModelsCDXHashes: + properties: + alg: + type: string + content: + type: string + required: + - alg + - content + type: object + ModelsCDXLicenseEntry: + properties: + expression: + type: string + license: + $ref: '#/components/schemas/ModelsCDXLicenseInfo' + type: object + ModelsCDXLicenseInfo: + properties: + id: + type: string + url: + type: string + type: object + ModelsCDXMetaData: + properties: + authors: + items: + $ref: '#/components/schemas/ModelsCDXAuthors' + nullable: true + type: array + component: + $ref: '#/components/schemas/ModelsCDXComponents' + timestamp: + format: date-time + type: string + tools: + additionalProperties: + items: + $ref: '#/components/schemas/ModelsCDXTool' + type: array + nullable: true + type: object + required: + - timestamp + - tools + - authors + - component + type: object + ModelsCDXProperties: + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + ModelsCDXReferences: + properties: + type: + type: string + url: + type: string + required: + - type + - url + type: object + ModelsCDXService: + properties: + bom-ref: + type: string + endpoints: + items: + type: string + type: array + group: + type: string + name: + type: string + provider: + type: string + version: + type: string + type: object + ModelsCDXTool: + properties: + group: + type: string + name: + type: string + version: + type: string + required: + - group + - name + - version + type: object + ModelsCloudProvider: + enum: + - AWS + - AZURE + - GCP + - K8S + type: string + ModelsComponentDiscovery: + properties: + apiSpecs: + items: + $ref: '#/components/schemas/ModelsAPISpecRef' + type: array + endpoints: + items: + type: string + type: array + frontendAssets: + $ref: '#/components/schemas/ModelsFrontendAssets' + technologies: + items: + type: string + type: array + type: object + ModelsComponentSource: + properties: + path: + type: string + projectId: + type: string + repositoryId: + type: string + type: + type: string + type: object + ModelsContentReference: + properties: + hash: + type: string + location: + type: string + size: + format: int64 + type: integer + type: + type: string + required: + - size + - hash + type: object + ModelsContextProject: + properties: + createdAt: + format: date-time + type: string + deletedAt: + format: date-time + nullable: true + type: string + dependencies: + items: + type: string + type: array + description: + type: string + framework: + type: string + id: + type: string + isDeleted: + type: boolean + language: + type: string + metadata: + additionalProperties: {} + type: object + name: + type: string + path: + type: string + repositoryId: + type: string + tags: + items: + type: string + type: array + updatedAt: + format: date-time + type: string + required: + - id + - repositoryId + - name + - description + - path + - isDeleted + - createdAt + - updatedAt + type: object + ModelsDependencyDiff: + properties: + added: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + removed: + items: + $ref: '#/components/schemas/ModelsDependencyOccurrence' + nullable: true + type: array + upgraded: + items: + $ref: '#/components/schemas/ModelsDependencyUpgrade' + nullable: true + type: array + required: + - added + - removed + - upgraded + type: object + ModelsDependencyOccurrence: + properties: + bomRef: + nullable: true + type: string + depth: + nullable: true + type: integer + direct: + nullable: true + type: boolean + ecosystem: + type: string + introducedAt: + format: date-time + nullable: true + type: string + introducedByCommit: + nullable: true + type: string + name: + type: string + parents: + items: + type: string + type: array + projectId: + type: string + projectName: + type: string + purl: + type: string + removedAt: + format: date-time + nullable: true + type: string + removedByCommit: + nullable: true + type: string + repoId: + type: string + repositoryName: + type: string + requestedRange: + nullable: true + type: string + requestedRangeSource: + nullable: true + type: string + version: + type: string + required: + - repoId + - projectId + - ecosystem + - name + - version + type: object + ModelsDependencyUpgrade: + properties: + ecosystem: + type: string + from: + type: string + fromCommit: + nullable: true + type: string + name: + type: string + projectId: + type: string + projectName: + type: string + repoId: + type: string + repositoryName: + type: string + to: + type: string + required: + - repoId + - projectId + - ecosystem + - name + - from + - to + type: object + ModelsDependencyWindow: + properties: + ecosystem: + type: string + fromCommit: + type: string + fromTime: + format: date-time + type: string + isArchived: + description: Whether the repository is archived on its source platform + type: boolean + lastScannedAt: + description: Last SBOM scan timestamp for the project + format: date-time + nullable: true + type: string + name: + type: string + projectId: + type: string + projectName: + type: string + repoId: + type: string + repositoryName: + type: string + resolvedWithoutLockfile: + description: Whether this dependency was resolved without a committed lockfile + type: boolean + toCommit: + nullable: true + type: string + toTime: + format: date-time + nullable: true + type: string + version: + type: string + required: + - repoId + - projectId + - ecosystem + - name + - version + - fromTime + type: object + ModelsEscalationPolicy: + properties: + citations: + items: + $ref: '#/components/schemas/ModelsEscalationPolicyCitationsElem' + type: array + description: + nullable: true + type: string + escalationChain: + items: + $ref: '#/components/schemas/ModelsEscalationPolicyEscalationChainElem' + nullable: true + type: array + id: + type: string + name: + type: string + scope: + $ref: '#/components/schemas/ModelsEscalationPolicyScope' + severitySLAs: + items: + $ref: '#/components/schemas/ModelsEscalationPolicySeveritySLAsElem' + type: array + type: object + ModelsEscalationPolicyCitationsElem: + properties: + documentId: + nullable: true + type: string + documentName: + nullable: true + type: string + page: + nullable: true + type: string + type: object + ModelsEscalationPolicyEscalationChainElem: + properties: + contact: + $ref: '#/components/schemas/ModelsEscalationPolicyEscalationChainElemContact' + escalateAfterHours: + nullable: true + type: number + level: + type: integer + type: object + ModelsEscalationPolicyEscalationChainElemContact: + properties: + channel: + nullable: true + type: string + name: + nullable: true + type: string + type: object + ModelsEscalationPolicyScope: + properties: + services: + items: + type: string + type: array + teams: + items: + type: string + type: array + type: object + ModelsEscalationPolicySeveritySLAsElem: + properties: + resolutionTimeHours: + nullable: true + type: number + responseTimeHours: + nullable: true + type: number + severity: + $ref: '#/components/schemas/ModelsEscalationPolicySeveritySLAsElemSeverity' + type: object + ModelsEscalationPolicySeveritySLAsElemSeverity: + enum: + - CRITICAL + - HIGH + - LOW + - MEDIUM + type: string + ModelsFrontendAssets: + properties: + apiEndpoints: + items: + type: string + type: array + exposedValues: + type: integer + routes: + items: + type: string + type: array + type: object + ModelsHostSourceType: + enum: + - UserUploadHost + - CodeScanHost + - AWSIntegrationHost + - BugHuntHost + - ManualHost + type: string + ModelsManifestRangeSource: + properties: + filePath: + type: string + range: + type: string + required: + - range + type: object + ModelsMemory: + properties: + citations: + items: + $ref: '#/components/schemas/ModelsMemoryCitationsElem' + type: array + classification: + $ref: '#/components/schemas/ModelsMemoryClassification' + commentIds: + items: + type: string + type: array + confidence: + nullable: true + type: number + content: + type: string + createdAt: + format: date-time + type: string + createdBy: + nullable: true + type: string + crossReferences: + items: + $ref: '#/components/schemas/ModelsMemoryCrossReferencesElem' + type: array + id: + type: string + isUserCreated: + type: boolean + memoryLineage: + $ref: '#/components/schemas/ModelsMemoryMemoryLineage' + memoryType: + $ref: '#/components/schemas/ModelsMemoryMemoryType' + metadata: + $ref: '#/components/schemas/ModelsMemoryMetadata' + priority: + $ref: '#/components/schemas/ModelsMemoryPriority' + questionId: + nullable: true + type: string + resourceId: + type: string + resourceType: + $ref: '#/components/schemas/ModelsMemoryResourceType' + scope: + $ref: '#/components/schemas/ModelsMemoryScope' + nullable: true + scopeResourceId: + nullable: true + type: string + tags: + items: + type: string + type: array + title: + nullable: true + type: string + updatedAt: + format: date-time + nullable: true + type: string + type: object + ModelsMemoryCitationsElem: + properties: + citation_id: + type: string + document_id: + type: string + document_name: + type: string + page: + type: string + title: + nullable: true + type: string + type: object + ModelsMemoryClassification: + properties: + businessImpact: + $ref: '#/components/schemas/ModelsMemoryClassificationBusinessImpact' + nullable: true + computePlatforms: + items: + $ref: '#/components/schemas/ModelsMemoryClassificationComputePlatformsElem' + type: array + containsSensitiveData: + nullable: true + type: boolean + criticality: + $ref: '#/components/schemas/ModelsMemoryClassificationCriticality' + nullable: true + dataClassification: + $ref: '#/components/schemas/ModelsMemoryClassificationDataClassification' + nullable: true + environments: + items: + $ref: '#/components/schemas/ModelsMemoryClassificationEnvironmentsElem' + type: array + networkExposure: + $ref: '#/components/schemas/ModelsMemoryClassificationNetworkExposure' + nullable: true + organizationalEntityType: + $ref: '#/components/schemas/ModelsMemoryClassificationOrganizationalEntityType' + nullable: true + riskLevel: + $ref: '#/components/schemas/ModelsMemoryClassificationRiskLevel' + nullable: true + securityDomains: + items: + $ref: '#/components/schemas/ModelsMemoryClassificationSecurityDomainsElem' + type: array + systemTypes: + items: + $ref: '#/components/schemas/ModelsMemoryClassificationSystemTypesElem' + type: array + type: object + ModelsMemoryClassificationBusinessImpact: + enum: + - CUSTOMER_FACING + - INTERNAL_OPERATIONS + - REVENUE_CRITICAL + - SUPPORT_FUNCTION + type: string + ModelsMemoryClassificationComputePlatformsElem: + enum: + - BARE_METAL + - CLOUD_FUNCTION + - CONTAINER + - DOCKER + - KUBERNETES + - SERVERLESS + - VIRTUAL_MACHINE + type: string + ModelsMemoryClassificationCriticality: + enum: + - CRITICAL + - HIGH + - LOW + - MEDIUM + type: string + ModelsMemoryClassificationDataClassification: + enum: + - CONFIDENTIAL + - INTERNAL + - PUBLIC + - RESTRICTED + type: string + ModelsMemoryClassificationEnvironmentsElem: + enum: + - DEVELOPMENT + - OTHER + - PREPRODUCTION + - PRODUCTION + - STAGING + - TEST + type: string + ModelsMemoryClassificationNetworkExposure: + enum: + - AIR_GAPPED + - INTERNAL_NETWORK + - ISOLATED + - PUBLIC_INTERNET + - VPN_ONLY + type: string + ModelsMemoryClassificationOrganizationalEntityType: + enum: + - BUSINESS_UNIT + - CONTRACTOR + - DEPARTMENT + - DIVISION + - EXTERNAL_PARTNER + - GROUP + - ROLE + - SERVICE_ACCOUNT + - TEAM + - USER + - VENDOR + type: string + ModelsMemoryClassificationRiskLevel: + enum: + - CRITICAL + - HIGH + - LOW + - MEDIUM + - MINIMAL + type: string + ModelsMemoryClassificationSecurityDomainsElem: + enum: + - APPLICATION_SECURITY + - CLOUD_SECURITY + - COMPLIANCE + - DATA_PROTECTION + - INCIDENT_RESPONSE + - INFRASTRUCTURE_SECURITY + - SECURITY_ARCHITECTURE + - SUPPLY_CHAIN_SECURITY + - THREAT_INTELLIGENCE + type: string + ModelsMemoryClassificationSystemTypesElem: + enum: + - API + - APPLICATION + - DATABASE + - ENDPOINT + - INFRASTRUCTURE + - SERVICE + type: string + ModelsMemoryCrossReferencesElem: + properties: + description: + nullable: true + type: string + id: + type: string + type: object + ModelsMemoryMemoryLineage: + properties: + agentVersion: + nullable: true + type: string + generationReason: + $ref: '#/components/schemas/ModelsMemoryMemoryLineageGenerationReason' + nullable: true + isLatest: + type: boolean + parentMemoryId: + nullable: true + type: string + parentSessionId: + nullable: true + type: string + sessionId: + type: string + timestamp: + format: date-time + type: string + type: object + ModelsMemoryMemoryLineageGenerationReason: + enum: + - AGENT_UPGRADED + - DOCUMENT_UPDATED + - OTHER + - USER_TRIGGERED + type: string + ModelsMemoryMemoryType: + enum: + - ANALYSIS + - AUTOFIX + - DISCOVERY + - ESCALATION + - FOLLOW_UP + - HISTORICAL + - KNOWLEDGE + - OTHER + - REMEDIATION + - TRIAGE + - VALIDATION + type: string + ModelsMemoryMetadata: + properties: + documentMetadata: + $ref: '#/components/schemas/ModelsMemoryMetadataDocumentMetadata' + findingId: + nullable: true + type: string + type: object + ModelsMemoryMetadataDocumentMetadata: + properties: + documentDescription: + nullable: true + type: string + documentId: + nullable: true + type: string + documentName: + nullable: true + type: string + documentType: + $ref: '#/components/schemas/ModelsMemoryMetadataDocumentMetadataDocumentType' + nullable: true + documentVersion: + nullable: true + type: string + source: + nullable: true + type: string + structuralInfo: + $ref: '#/components/schemas/ModelsMemoryMetadataDocumentMetadataStructuralInfo' + type: object + ModelsMemoryMetadataDocumentMetadataDocumentType: + enum: + - API_SPEC + - ARCHITECTURE + - AUDIT_REPORT + - COMPLIANCE_REPORT + - DOCUMENTATION + - OTHER + - POLICY + - SECURITY_REPORT + - TEST_RESULT + - VULNERABILITY_REPORT + type: string + ModelsMemoryMetadataDocumentMetadataStructuralInfo: + properties: + encoding: + nullable: true + type: string + sections: + items: + $ref: '#/components/schemas/ModelsMemoryMetadataDocumentMetadataStructuralInfoSectionsElem' + type: array + totalCharacters: + nullable: true + type: integer + totalLines: + nullable: true + type: integer + type: object + ModelsMemoryMetadataDocumentMetadataStructuralInfoSectionsElem: + properties: + endLine: + nullable: true + type: integer + name: + nullable: true + type: string + startLine: + nullable: true + type: integer + type: + nullable: true + type: string + type: object + ModelsMemoryPriority: + enum: + - CRITICAL + - HIGH + - INFO + - LOW + - MEDIUM + type: string + ModelsMemoryResourceType: + enum: + - AGENT_REASONING + - APP_CONTEXT + - BUGHUNT_SCAN + - BUGHUNT_TRIAGE + - CHAT_SESSION + - CLOUD_CONTEXT + - CODE_AUTOFIX + - CODE_TRIAGE + - COMPLIANCE_FRAMEWORK + - CONTAINERS_TRIAGE + - DEPENDENCIES_AUTOFIX + - DEPENDENCIES_TRIAGE + - MANAGER_CAMPAIGN + - NETWORK_REACHABILITY + - ORGANIZATION + - ORG_CONTEXT + - OTHER + - PENTEST_AUTH_MATRIX + - PENTEST_EXPLOIT_ANALYSIS + - PENTEST_TOOLS + - PROJECT + - QUESTION_ANSWER + - REPO_CONTEXT + - SCHEMA_REVERSING + - SECRETS_TRIAGE + - STANDOUT_ASSESSMENT + - TEAM + - USER + - VAULT + - VULNERABILITY_FINDING + type: string + ModelsMemoryScope: + enum: + - CLOUD + - ORGANIZATION + - REPOSITORY + type: string + ModelsOrgContext: + properties: + cacheKey: + nullable: true + type: string + complianceRequirements: + items: + type: string + type: array + description: + type: string + detailedOverview: + nullable: true + type: string + documentCitations: + items: + $ref: '#/components/schemas/ModelsOrgContextDocumentCitationsElem' + type: array + escalationPolicies: + items: + $ref: '#/components/schemas/ModelsEscalationPolicy' + type: array + industries: + items: + $ref: '#/components/schemas/ModelsOrgContextIndustriesElem' + nullable: true + type: array + name: + type: string + notes: + items: + $ref: '#/components/schemas/ModelsMemory' + type: array + onboarded: + nullable: true + type: boolean + otherIndustries: + items: + type: string + type: array + products: + items: + $ref: '#/components/schemas/ModelsOrgContextProductsElem' + type: array + questionnaire: + $ref: '#/components/schemas/ModelsSecurityOnboardingAnswers' + timeZone: + nullable: true + type: string + vaultFiles: + items: + $ref: '#/components/schemas/ModelsOrgContextVaultFilesElem' + type: array + type: object + ModelsOrgContextDocumentCitationsElem: + properties: + citation_id: + type: string + document_id: + nullable: true + type: string + document_name: + nullable: true + type: string + page: + nullable: true + type: string + source_type: + $ref: '#/components/schemas/ModelsOrgContextDocumentCitationsElemSourceType' + title: + nullable: true + type: string + type: object + ModelsOrgContextDocumentCitationsElemSourceType: + enum: + - document + - questionnaire + type: string + ModelsOrgContextIndustriesElem: + enum: + - AGRICULTURE + - CONSTRUCTION + - EDUCATION + - ENERGY + - ENTERTAINMENT + - FINANCIAL_SERVICES + - GOVERNMENT + - HEALTHCARE + - INFORMATION_TECHNOLOGY + - INSURANCE_SERVICES + - LOGISTICS + - MANUFACTURING + - MINING + - OTHER + - PROFESSIONAL_SERVICES + - REAL_ESTATE + - RETAIL + - TECHNOLOGY + type: string + ModelsOrgContextProductsElem: + properties: + description: + type: string + name: + type: string + productType: + $ref: '#/components/schemas/ModelsOrgContextProductsElemProductType' + url: + type: string + type: object + ModelsOrgContextProductsElemProductType: + enum: + - B2B_ON_PREMISE + - B2B_SAAS + - B2B_SAAS_OSS + - B2C_SAAS + - DESKTOP_APPLICATION + - E_COMMERCE + - MARKETPLACE + - MEDIA_STREAMING + - SOCIAL + type: string + ModelsOrgContextVaultFilesElem: + properties: + content: + type: string + description: + type: string + documentId: + type: string + fileName: + type: string + type: object + ModelsProjectSummary: + properties: + description: + type: string + framework: + type: string + id: + type: string + isDeleted: + type: boolean + language: + type: string + name: + type: string + path: + type: string + repositoryId: + type: string + required: + - id + - name + - repositoryId + - path + - description + - isDeleted + type: object + ModelsSBOMProject: + properties: + commits: + items: + type: string + nullable: true + type: array + projectId: + type: string + projectName: + type: string + required: + - projectId + - commits + type: object + ModelsSBOMRepository: + properties: + projects: + items: + $ref: '#/components/schemas/ModelsSBOMProject' + nullable: true + type: array + repositoryId: + type: string + repositoryName: + type: string + required: + - repositoryId + - projects + type: object + ModelsSchemaFormat: + enum: + - JSON + - PROTO + - SDL + - TEXT + - WSDL + - YAML + type: string + ModelsSchemaType: + enum: + - GRAPHQL + - GRPC + - OPENAPI + - SOAP + type: string + ModelsSecurityOnboardingAnswers: + properties: + additionalNotes: + nullable: true + type: string + companyName: + type: string + complianceStandards: + items: + type: string + type: array + coreProductsServices: + type: string + dataTypes: + items: + type: string + type: array + files: + items: + $ref: '#/components/schemas/ModelsSecurityOnboardingAnswersFilesElem' + type: array + impactConcerns: + items: + type: string + type: array + perceivedThreatActors: + items: + type: string + type: array + type: object + ModelsSecurityOnboardingAnswersFilesElem: + properties: + content: + type: string + description: + type: string + fileName: + type: string + type: object + ModelsSecurityProfile: + properties: + exposedSecrets: + type: integer + recommendations: + items: + type: string + type: array + riskScore: + type: integer + required: + - riskScore + - exposedSecrets + type: object + RepocontextAPISchema: + properties: + content: + nullable: true + type: string + format: + $ref: '#/components/schemas/RepocontextAPISchemaFormat' + name: + type: string + origin: + $ref: '#/components/schemas/RepocontextAPISchemaOrigin' + nullable: true + path: + nullable: true + type: string + type: + $ref: '#/components/schemas/RepocontextAPISchemaType' + version: + nullable: true + type: string + type: object + RepocontextAPISchemaFormat: + enum: + - JSON + - PROTO + - SDL + - TEXT + - XML + - YAML + type: string + RepocontextAPISchemaOrigin: + enum: + - discovered + - generated + type: string + RepocontextAPISchemaType: + enum: + - ASYNCAPI + - GRAPHQL + - GRPC + - INSOMNIA + - OPENAPI + - POSTMAN + - RAML + - SWAGGER + - WADL + type: string + RepocontextAccountInfrastructureSummary: + properties: + accountId: + type: string + accountType: + $ref: '#/components/schemas/RepocontextAccountInfrastructureSummaryAccountType' + capabilities: + $ref: '#/components/schemas/RepocontextAccountInfrastructureSummaryCapabilities' + computeServices: + items: + $ref: '#/components/schemas/RepocontextAccountInfrastructureSummaryComputeServicesElem' + type: array + internetFacingServiceCount: + nullable: true + type: integer + narrative: + nullable: true + type: string + regions: + items: + type: string + type: array + totalComputeServices: + nullable: true + type: integer + type: object + RepocontextAccountInfrastructureSummaryAccountType: + enum: + - development + - network_services + - production + - staging + type: string + RepocontextAccountInfrastructureSummaryCapabilities: + properties: + hasApiGateway: + nullable: true + type: boolean + hasCdn: + nullable: true + type: boolean + hasContainerServices: + nullable: true + type: boolean + hasCrossAccountReferences: + nullable: true + type: boolean + hasDatabases: + nullable: true + type: boolean + hasDns: + nullable: true + type: boolean + hasKubernetes: + nullable: true + type: boolean + hasLoadBalancers: + nullable: true + type: boolean + hasServerlessFunctions: + nullable: true + type: boolean + hasTransitGateway: + nullable: true + type: boolean + type: object + RepocontextAccountInfrastructureSummaryComputeServicesElem: + properties: + computeType: + $ref: '#/components/schemas/RepocontextAccountInfrastructureSummaryComputeServicesElemComputeType' + internetFacing: + type: boolean + name: + type: string + region: + nullable: true + type: string + trafficFlow: + nullable: true + type: string + type: object + RepocontextAccountInfrastructureSummaryComputeServicesElemComputeType: + enum: + - container_service + - kubernetes_workload + - other + - serverless_function + - virtual_machine + type: string + RepocontextArtifactLink: + properties: + artifactId: + type: string + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + description: + type: string + entrypointId: + nullable: true + type: string + evidencePaths: + items: + type: string + type: array + matchMethod: + $ref: '#/components/schemas/RepocontextArtifactLinkMatchMethod' + projectId: + nullable: true + type: string + targetKind: + $ref: '#/components/schemas/RepocontextArtifactLinkTargetKind' + targetNodeId: + nullable: true + type: string + targetRef: + type: string + type: object + RepocontextArtifactLinkMatchMethod: + enum: + - affinity_hint + - build_config + - ci_pipeline + - container_image_name + - container_image_uri + - manual_label + - other + - registry_reference + - service_name_match + type: string + RepocontextArtifactLinkTargetKind: + enum: + - graph_node + - infrastructure_resource + - registry + - workload + type: string + RepocontextBusinessFunction: + properties: + description: + type: string + id: + type: string + name: + type: string + ownedPaths: + items: + type: string + type: array + type: object + RepocontextCallEdge: + properties: + callSiteFilePath: + type: string + callSiteLine: + type: integer + calleeQualifiedName: + type: string + calleeSymbolId: + nullable: true + type: string + callerQualifiedName: + type: string + callerSymbolId: + nullable: true + type: string + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + detector: + nullable: true + type: string + id: + type: string + isExternal: + nullable: true + type: boolean + kind: + $ref: '#/components/schemas/RepocontextCallEdgeKind' + language: + $ref: '#/components/schemas/LanguageCodeLanguage' + nullable: true + projectId: + nullable: true + type: string + type: object + RepocontextCallEdgeKind: + enum: + - callback + - direct + - dynamic + - framework + - interface + - method + - virtual + type: string + RepocontextCodeConvention: + properties: + category: + $ref: '#/components/schemas/RepocontextCodeConventionCategory' + description: + type: string + evidencePaths: + items: + type: string + type: array + scope: + nullable: true + type: string + type: object + RepocontextCodeConventionCategory: + enum: + - API_DESIGN + - ARCHITECTURE + - CODE_STYLE + - DATA_ACCESS + - DEPENDENCY_MANAGEMENT + - ERROR_HANDLING + - NAMING + - OBSERVABILITY + - OTHER + - RELEASE_PROCESS + - SECURITY + - TESTING + type: string + RepocontextCodeSymbol: + properties: + endLine: + nullable: true + type: integer + filePath: + type: string + id: + type: string + kind: + $ref: '#/components/schemas/RepocontextCodeSymbolKind' + language: + $ref: '#/components/schemas/LanguageCodeLanguage' + nullable: true + name: + type: string + parentSymbolId: + nullable: true + type: string + qualifiedName: + nullable: true + type: string + signature: + nullable: true + type: string + startLine: + type: integer + summary: + nullable: true + type: string + visibility: + $ref: '#/components/schemas/RepocontextCodeSymbolVisibility' + nullable: true + type: object + RepocontextCodeSymbolKind: + enum: + - class + - constant + - enum + - function + - interface + - macro + - method + - module + - type + - variable + type: string + RepocontextCodeSymbolVisibility: + enum: + - internal + - private + - protected + - public + type: string + RepocontextComplianceFramework: + enum: + - CCPA + - CIS + - FEDRAMP + - GDPR + - GLBA + - HIPAA + - ISO27001 + - NIST + - OTHER + - PCI-DSS + - SOC2 + type: string + RepocontextConfidence: + enum: + - confirmed + - high + - low + - medium + - speculative + type: string + RepocontextDataClassification: + enum: + - confidential + - highly_confidential + - internal + - public + - restricted + type: string + RepocontextDataDomain: + properties: + availabilityRequirement: + $ref: '#/components/schemas/RepocontextImpactLevel' + nullable: true + complianceFrameworks: + items: + $ref: '#/components/schemas/RepocontextComplianceFramework' + type: array + description: + type: string + examplePaths: + items: + type: string + type: array + id: + type: string + integrityRequirement: + $ref: '#/components/schemas/RepocontextImpactLevel' + nullable: true + name: + type: string + piiCategories: + items: + $ref: '#/components/schemas/RepocontextDataDomainPiiCategoriesElem' + type: array + sensitivity: + $ref: '#/components/schemas/RepocontextDataDomainSensitivity' + type: object + RepocontextDataDomainPiiCategoriesElem: + enum: + - CREDENTIALS + - EMAIL + - FINANCIAL + - HEALTH + - NAME + - OTHER + - SSN + type: string + RepocontextDataDomainSensitivity: + enum: + - CRITICAL + - HIGH + - LOW + - MODERATE + type: string + RepocontextDataFlow: + properties: + accessPattern: + $ref: '#/components/schemas/RepocontextDataFlowAccessPattern' + nullable: true + cloudReconDataFlowId: + nullable: true + type: string + codeHops: + items: + $ref: '#/components/schemas/RepocontextDataflowHop' + type: array + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + crossedBoundaryIds: + items: + type: string + type: array + dataClassification: + $ref: '#/components/schemas/RepocontextDataClassification' + nullable: true + dataDomainIds: + items: + type: string + type: array + description: + nullable: true + type: string + entrypointId: + nullable: true + type: string + evidencePaths: + items: + type: string + type: array + exposure: + $ref: '#/components/schemas/RepocontextExposureLevel' + nullable: true + id: + type: string + infraConnections: + $ref: '#/components/schemas/RepocontextDataFlowInfraConnections' + name: + type: string + pathEdgeTypes: + items: + $ref: '#/components/schemas/GraphEdgeType' + type: array + pathNodeIds: + items: + type: string + type: array + projectId: + nullable: true + type: string + protections: + items: + $ref: '#/components/schemas/RepocontextDataFlowProtectionsElem' + type: array + sink: + $ref: '#/components/schemas/RepocontextDataFlowSink' + source: + $ref: '#/components/schemas/RepocontextDataFlowSource' + sourceSinkIds: + items: + type: string + type: array + validationApplied: + $ref: '#/components/schemas/RepocontextDataFlowValidationApplied' + nullable: true + type: object + RepocontextDataFlowAccessPattern: + enum: + - DELETE + - OTHER + - PUBLISH + - READ + - READ_WRITE + - SUBSCRIBE + - WRITE + type: string + RepocontextDataFlowInfraConnections: + properties: + fullPath: + nullable: true + type: string + internalPath: + $ref: '#/components/schemas/RepocontextInfraPath' + internetPath: + $ref: '#/components/schemas/RepocontextInfraPath' + sinkPath: + $ref: '#/components/schemas/RepocontextInfraPath' + type: object + RepocontextDataFlowProtectionsElem: + enum: + - ACCESS_CONTROLLED + - ANONYMIZED + - ENCRYPTED_AT_REST + - ENCRYPTED_IN_TRANSIT + - HASHED + - NONE_OBSERVED + - REDACTED + - SIGNED + - TOKENIZED + type: string + RepocontextDataFlowSink: + properties: + description: + nullable: true + type: string + identifier: + nullable: true + type: string + isExternal: + nullable: true + type: boolean + kind: + $ref: '#/components/schemas/RepocontextDataFlowSinkKind' + nodeId: + nullable: true + type: string + trustedServiceId: + nullable: true + type: string + type: object + RepocontextDataFlowSinkKind: + enum: + - cache + - database + - external_api + - file_system + - llm_input + - logs + - notification + - object_storage + - other + - queue + - response + type: string + RepocontextDataFlowSource: + properties: + description: + nullable: true + type: string + entrypointId: + nullable: true + type: string + identifier: + nullable: true + type: string + isExternal: + nullable: true + type: boolean + kind: + $ref: '#/components/schemas/RepocontextDataFlowSourceKind' + nodeId: + nullable: true + type: string + trustedServiceId: + nullable: true + type: string + type: object + RepocontextDataFlowSourceKind: + enum: + - cache_read + - database_read + - event + - external_api + - file_upload + - internal_config + - internal_service + - llm_output + - other + - scheduled + - user_input + - web_scraping + - webhook + type: string + RepocontextDataFlowValidationApplied: + enum: + - full + - none_observed + - partial + - unknown + type: string + RepocontextDataflowHop: + properties: + boundaryId: + nullable: true + type: string + callEdgeId: + nullable: true + type: string + filePath: + type: string + index: + type: integer + line: + type: integer + notes: + nullable: true + type: string + qualifiedName: + type: string + role: + $ref: '#/components/schemas/RepocontextDataflowHopRole' + symbol: + nullable: true + type: string + symbolId: + nullable: true + type: string + type: object + RepocontextDataflowHopRole: + enum: + - dispatcher + - sanitizer + - sink + - source + - transform + type: string + RepocontextEntrypointRoute: + properties: + authMethods: + items: + $ref: '#/components/schemas/RepocontextEntrypointRouteAuthMethodsElem' + type: array + dataDomainIds: + items: + type: string + type: array + dataFlowIds: + items: + type: string + type: array + filePath: + nullable: true + type: string + handlerSymbolId: + nullable: true + type: string + isAuthenticated: + nullable: true + type: boolean + isInternal: + nullable: true + type: boolean + lineNumber: + nullable: true + type: integer + method: + $ref: '#/components/schemas/RepocontextEntrypointRouteMethod' + nullable: true + operationId: + nullable: true + type: string + parameters: + items: + $ref: '#/components/schemas/RepocontextRouteParameter' + type: array + path: + type: string + rateLimit: + nullable: true + type: boolean + requestBodyFields: + items: + type: string + type: array + requiresPrivilegedAccess: + nullable: true + type: boolean + responseStatuses: + items: + type: integer + type: array + summary: + nullable: true + type: string + validationApplied: + $ref: '#/components/schemas/RepocontextEntrypointRouteValidationApplied' + nullable: true + type: object + RepocontextEntrypointRouteAuthMethodsElem: + enum: + - API_KEY + - BASIC_AUTH + - IAM + - JWT + - LDAP + - MFA + - MTLS + - NONE + - OAUTH2 + - OPENID + - PASSWORD + - SAML + - SESSION_COOKIE + type: string + RepocontextEntrypointRouteMethod: + enum: + - CONSUME + - DELETE + - EVENT + - GET + - HEAD + - MUTATION + - OPTIONS + - PATCH + - POST + - PUT + - QUERY + - RPC + - SCHEDULE + - SUBSCRIPTION + type: string + RepocontextEntrypointRouteValidationApplied: + enum: + - full + - none_observed + - partial + - unknown + type: string + RepocontextExposureLevel: + enum: + - internal + - internet_reachable + - mixed + - private + - public + - unknown + type: string + RepocontextFileSummary: + properties: + id: + nullable: true + type: string + isGenerated: + nullable: true + type: boolean + isTest: + nullable: true + type: boolean + language: + $ref: '#/components/schemas/LanguageCodeLanguage' + nullable: true + path: + type: string + projectId: + nullable: true + type: string + summary: + type: string + type: object + RepocontextImpactLevel: + enum: + - CRITICAL + - HIGH + - LOW + - MODERATE + type: string + RepocontextInfraNode: + properties: + name: + nullable: true + type: string + nodeId: + nullable: true + type: string + type: + nullable: true + type: string + type: object + RepocontextInfraPath: + properties: + description: + nullable: true + type: string + exposure: + $ref: '#/components/schemas/RepocontextExposureLevel' + nullable: true + nodes: + items: + $ref: '#/components/schemas/RepocontextInfraNode' + type: array + type: object + RepocontextInfrastructureMatch: + properties: + accountId: + type: string + accountType: + $ref: '#/components/schemas/RepocontextInfrastructureMatchAccountType' + nullable: true + artifactName: + nullable: true + type: string + computeType: + $ref: '#/components/schemas/RepocontextInfrastructureMatchComputeType' + isInternetFacing: + type: boolean + matchConfidence: + $ref: '#/components/schemas/RepocontextConfidence' + matchDetail: + nullable: true + type: string + matchMethod: + $ref: '#/components/schemas/RepocontextInfrastructureMatchMatchMethod' + nodeId: + type: string + region: + nullable: true + type: string + serviceName: + type: string + type: object + RepocontextInfrastructureMatchAccountType: + enum: + - development + - network_services + - production + - staging + type: string + RepocontextInfrastructureMatchComputeType: + enum: + - container_service + - kubernetes_workload + - other + - serverless_function + - virtual_machine + type: string + RepocontextInfrastructureMatchMatchMethod: + enum: + - affinity_hint + - aws_tag + - container_image_name + - container_image_uri + - k8s_label + - service_name_match + type: string + RepocontextMetadata: + properties: + generatedAt: + format: date-time + nullable: true + type: string + generatorModel: + nullable: true + type: string + generatorPromptVersion: + nullable: true + type: string + warnings: + items: + type: string + type: array + type: object + RepocontextProjectArtifact: + properties: + artifactName: + type: string + buildEvidencePaths: + items: + type: string + type: array + deploymentContext: + $ref: '#/components/schemas/RepocontextProjectArtifactDeploymentContext' + description: + type: string + id: + type: string + name: + type: string + nonProduction: + type: boolean + otherArtifactType: + nullable: true + type: string + registries: + items: + $ref: '#/components/schemas/RepocontextProjectArtifactRegistriesElem' + nullable: true + type: array + story: + items: + $ref: '#/components/schemas/RepocontextProjectArtifactStoryElem' + type: array + subArtifactPath: + nullable: true + type: string + subArtifactType: + $ref: '#/components/schemas/GraphBuildArtifactType' + nullable: true + type: + $ref: '#/components/schemas/GraphBuildArtifactType' + nullable: true + type: object + RepocontextProjectArtifactDeploymentContext: + properties: + isDeployed: + nullable: true + type: boolean + type: object + RepocontextProjectArtifactRegistriesElem: + properties: + baseUrl: + type: string + id: + type: string + name: + nullable: true + type: string + otherType: + nullable: true + type: string + path: + type: string + type: + $ref: '#/components/schemas/GraphBuildArtifactRepositoryType' + type: object + RepocontextProjectArtifactStoryElem: + properties: + command: + nullable: true + type: string + description: + nullable: true + type: string + otherTool: + nullable: true + type: string + relatedFiles: + items: + type: string + type: array + tool: + $ref: '#/components/schemas/RepocontextProjectArtifactStoryElemTool' + nullable: true + type: + $ref: '#/components/schemas/RepocontextProjectArtifactStoryElemType' + nullable: true + type: object + RepocontextProjectArtifactStoryElemTool: + enum: + - bazel + - docker + - docker-compose + - go + - gradle + - make + - maven + - npm + - other + - pip + - yarn + type: string + RepocontextProjectArtifactStoryElemType: + enum: + - COPY_OR_MOVE_FILE + - DOCKER_BUILD_COMMAND + - DOCKER_COPY + - DOCKER_TAG_COMMAND + - EXECUTE_CI_STEP + - PACKAGE_MANAGER_BUILD + - RUN_SCRIPT + type: string + RepocontextProjectContext: + properties: + artifacts: + items: + $ref: '#/components/schemas/RepocontextProjectContextArtifactsElem' + type: array + boundaryIds: + items: + type: string + type: array + businessFunctionIds: + items: + $ref: '#/components/schemas/RepocontextProjectContextBusinessFunctionIdsElem' + type: array + cacheKey: + nullable: true + type: string + codeSymbols: + items: + $ref: '#/components/schemas/RepocontextCodeSymbol' + type: array + dataDomainIds: + items: + type: string + type: array + dataHandled: + items: + $ref: '#/components/schemas/RepocontextProjectContextDataHandledElem' + type: array + dependencyManifests: + items: + type: string + type: array + deploymentGraph: + $ref: '#/components/schemas/GraphGraph' + deploymentSummary: + additionalProperties: {} + type: object + description: + type: string + directorySummaries: + items: + $ref: '#/components/schemas/RepocontextRepoContextDirectorySummary' + type: array + entrypoints: + items: + $ref: '#/components/schemas/RepocontextProjectEntrypoint' + type: array + fileSummaries: + items: + $ref: '#/components/schemas/RepocontextFileSummary' + type: array + frameworks: + items: + $ref: '#/components/schemas/RepocontextProjectContextFrameworksElem' + type: array + id: + type: string + importanceReasoning: + nullable: true + type: string + internalDependencyIds: + items: + type: string + type: array + isTruncatedAnalysis: + type: boolean + languages: + items: + $ref: '#/components/schemas/LanguageCodeLanguage' + nullable: true + type: array + name: + type: string + orgImportance: + $ref: '#/components/schemas/RepocontextRepoContextProjectImportance' + nullable: true + orgRole: + $ref: '#/components/schemas/RepocontextRepoContextProjectRole' + nullable: true + otherDataHandled: + items: + type: string + type: array + owners: + items: + $ref: '#/components/schemas/RepocontextProjectContextOwnersElem' + type: array + pathPrefix: + type: string + projectFiles: + items: + type: string + nullable: true + type: array + repositoryReferences: + items: + $ref: '#/components/schemas/RepocontextProjectContextRepositoryReferencesElem' + type: array + role: + $ref: '#/components/schemas/RepocontextProjectContextRole' + nullable: true + securityImportance: + $ref: '#/components/schemas/RepocontextProjectContextSecurityImportance' + nullable: true + testCoverage: + $ref: '#/components/schemas/RepocontextProjectContextTestCoverage' + trustedServiceIds: + items: + type: string + type: array + type: object + RepocontextProjectContextArtifactsElem: + properties: + artifactType: + $ref: '#/components/schemas/RepocontextProjectContextArtifactsElemArtifactType' + availabilityImportance: + $ref: '#/components/schemas/RepocontextProjectContextArtifactsElemAvailabilityImportance' + dataConfidentialityImportance: + $ref: '#/components/schemas/RepocontextProjectContextArtifactsElemDataConfidentialityImportance' + entrypointPath: + type: string + nonProduction: + type: boolean + otherType: + nullable: true + type: string + systemIntegrityImportance: + $ref: '#/components/schemas/RepocontextProjectContextArtifactsElemSystemIntegrityImportance' + type: object + RepocontextProjectContextArtifactsElemArtifactType: + enum: + - BROWSER_CLIENT + - BROWSER_EXTENSION + - CLI + - DESKTOP + - ETL_PIPELINE + - GRAPHQL_API + - IOT_FIRMWARE + - MOBILE_APP + - OTHER + - PLUGIN + - PRIVATE_LIBRARY + - PUBLIC_LIBRARY + - REST_API + - SPA_BROWSER_APP + - TEST_SUITE + - WEB_SERVER + type: string + RepocontextProjectContextArtifactsElemAvailabilityImportance: + enum: + - HIGH + - LOW + - MEDIUM + type: string + RepocontextProjectContextArtifactsElemDataConfidentialityImportance: + enum: + - HIGH + - LOW + - MEDIUM + type: string + RepocontextProjectContextArtifactsElemSystemIntegrityImportance: + enum: + - HIGH + - LOW + - MEDIUM + type: string + RepocontextProjectContextBusinessFunctionIdsElem: + properties: + description: + nullable: true + type: string + id: + type: string + implementation: + $ref: '#/components/schemas/RepocontextProjectContextBusinessFunctionIdsElemImplementation' + nullable: true + type: object + RepocontextProjectContextBusinessFunctionIdsElemImplementation: + enum: + - full + - partial + - supporting + type: string + RepocontextProjectContextDataHandledElem: + enum: + - ADDRESS + - BIRTHDATE + - CREDIT_CARD + - EMAIL + - NAME + - OTHER + - PASSWORD + - PERSONAL_MEDICAL + - PHONE + - PROPRIETARY_FINANCIAL + - SOCIAL_SECURITY + - TRADE_SECRET + type: string + RepocontextProjectContextFrameworksElem: + properties: + name: + type: string + version: + nullable: true + type: string + type: object + RepocontextProjectContextOwnersElem: + properties: + name: + type: string + source: + nullable: true + type: string + type: + $ref: '#/components/schemas/RepocontextProjectContextOwnersElemType' + nullable: true + type: object + RepocontextProjectContextOwnersElemType: + enum: + - individual + - team + type: string + RepocontextProjectContextRepositoryReferencesElem: + properties: + description: + nullable: true + type: string + name: + type: string + repositoryReferenceType: + $ref: '#/components/schemas/RepocontextProjectContextRepositoryReferencesElemRepositoryReferenceType' + url: + type: string + version: + nullable: true + type: string + type: object + RepocontextProjectContextRepositoryReferencesElemRepositoryReferenceType: + enum: + - dependency + - fork + - framework + - infrastructure + - library + - related + - template + - tool + - vendor + type: string + RepocontextProjectContextRole: + enum: + - application + - cli + - infrastructure + - library + - other + - package + - service + - shared_component + - tests + type: string + RepocontextProjectContextSecurityImportance: + enum: + - HIGH + - LOW + - MEDIUM + type: string + RepocontextProjectContextTestCoverage: + properties: + hasIntegrationTests: + nullable: true + type: boolean + hasTests: + nullable: true + type: boolean + testFileCount: + nullable: true + type: integer + testFrameworks: + items: + type: string + type: array + type: object + RepocontextProjectEntrypoint: + properties: + affinityHints: + items: + type: string + type: array + apiSpecs: + items: + $ref: '#/components/schemas/RepocontextAPISchema' + type: array + applicationTypes: + items: + $ref: '#/components/schemas/GraphCodeArtifactType' + nullable: true + type: array + artifacts: + items: + $ref: '#/components/schemas/RepocontextProjectArtifact' + nullable: true + type: array + authMethods: + items: + $ref: '#/components/schemas/RepocontextProjectEntrypointAuthMethodsElem' + type: array + boundaryIds: + items: + type: string + type: array + dataFlowIds: + items: + type: string + type: array + description: + nullable: true + type: string + detectionConfidence: + $ref: '#/components/schemas/RepocontextConfidence' + frameworkName: + nullable: true + type: string + id: + type: string + kind: + $ref: '#/components/schemas/RepocontextProjectEntrypointKind' + nullable: true + lineNumber: + nullable: true + type: integer + name: + nullable: true + type: string + nodeId: + nullable: true + type: string + path: + type: string + ports: + items: + type: integer + type: array + protocols: + items: + $ref: '#/components/schemas/RepocontextProjectEntrypointProtocolsElem' + type: array + routes: + items: + $ref: '#/components/schemas/RepocontextEntrypointRoute' + type: array + sessionMechanism: + $ref: '#/components/schemas/RepocontextProjectEntrypointSessionMechanism' + nullable: true + symbolId: + nullable: true + type: string + trustedServiceIds: + items: + type: string + type: array + type: object + RepocontextProjectEntrypointAuthMethodsElem: + enum: + - API_KEY + - BASIC_AUTH + - IAM + - JWT + - LDAP + - MFA + - MTLS + - NONE + - OAUTH2 + - OPENID + - PASSWORD + - SAML + - SESSION_COOKIE + type: string + RepocontextProjectEntrypointKind: + enum: + - CLI + - LIBRARY_EXPORT + - NETWORK + - OTHER + - SCHEDULED + - WORKER + type: string + RepocontextProjectEntrypointProtocolsElem: + enum: + - GRAPHQL + - GRPC + - HTTP + - HTTPS + - MQTT + - TCP + - UDP + - WEBSOCKET + type: string + RepocontextProjectEntrypointSessionMechanism: + enum: + - cookie + - none + - server_session + - stateless_token + type: string + RepocontextReachabilityPath: + properties: + artifactLinkId: + nullable: true + type: string + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + entrypointIds: + items: + type: string + type: array + exposureRoot: + $ref: '#/components/schemas/RepocontextReachabilityPathExposureRoot' + exposureSummary: + nullable: true + type: string + id: + type: string + networkControls: + items: + type: string + type: array + pathEdgeTypes: + items: + $ref: '#/components/schemas/GraphEdgeType' + type: array + pathNodeIds: + items: + type: string + nullable: true + type: array + privateJustification: + nullable: true + type: string + projectId: + nullable: true + type: string + publicRoutes: + items: + $ref: '#/components/schemas/RepocontextReachabilityPathPublicRoutesElem' + type: array + workloadKind: + $ref: '#/components/schemas/RepocontextReachabilityPathWorkloadKind' + workloadNodeId: + type: string + type: object + RepocontextReachabilityPathExposureRoot: + enum: + - cross_account + - internet + - peered_vpc + - private + - unknown + - vpn + type: string + RepocontextReachabilityPathPublicRoutesElem: + properties: + entrypointId: + nullable: true + type: string + isAuthenticated: + nullable: true + type: boolean + method: + type: string + path: + type: string + type: object + RepocontextReachabilityPathWorkloadKind: + enum: + - AWS_APP_RUNNER + - AWS_EC2 + - AWS_ECS + - AWS_EKS + - AWS_FARGATE + - AWS_LAMBDA + - OTHER + type: string + RepocontextRepoContext: + properties: + artifactLinks: + items: + $ref: '#/components/schemas/RepocontextArtifactLink' + type: array + authenticationMethods: + items: + type: string + type: array + businessFunctions: + items: + $ref: '#/components/schemas/RepocontextBusinessFunction' + type: array + cacheKey: + nullable: true + type: string + callEdges: + items: + $ref: '#/components/schemas/RepocontextCallEdge' + type: array + cicdPipelineSummary: + $ref: '#/components/schemas/RepocontextRepoContextCicdPipelineSummary' + cloudAccounts: + items: + $ref: '#/components/schemas/RepocontextAccountInfrastructureSummary' + type: array + codeConventions: + items: + $ref: '#/components/schemas/RepocontextCodeConvention' + type: array + commitPatterns: + $ref: '#/components/schemas/RepocontextRepoContextCommitPatterns' + complianceFrameworks: + items: + $ref: '#/components/schemas/RepocontextComplianceFramework' + type: array + contextSummary: + $ref: '#/components/schemas/RepocontextRepoContextContextSummary' + dataDomains: + items: + $ref: '#/components/schemas/RepocontextDataDomain' + type: array + dataFlows: + items: + $ref: '#/components/schemas/RepocontextDataFlow' + type: array + databases: + items: + $ref: '#/components/schemas/RepocontextRepoContextDatabasesElem' + type: array + deploymentTargets: + items: + type: string + type: array + description: + type: string + developmentGuidelines: + $ref: '#/components/schemas/RepocontextRepoContextDevelopmentGuidelines' + graph: + $ref: '#/components/schemas/GraphGraph' + id: + type: string + infrastructureMatches: + items: + $ref: '#/components/schemas/RepocontextInfrastructureMatch' + type: array + inputValidationFrameworks: + items: + type: string + type: array + internalDependencies: + additionalProperties: + items: + type: string + type: array + type: object + isInitializedOnly: + type: boolean + isMonorepo: + nullable: true + type: boolean + isOpenAPISpecAvailable: + type: boolean + isTruncatedAnalysis: + type: boolean + metadata: + $ref: '#/components/schemas/RepocontextMetadata' + monitoringTooling: + items: + type: string + type: array + name: + type: string + networkExposure: + $ref: '#/components/schemas/RepocontextRepoContextNetworkExposure' + nullable: true + openAPISpecPath: + items: + type: string + type: array + projects: + items: + $ref: '#/components/schemas/RepocontextProjectContext' + nullable: true + type: array + public: + type: boolean + reachabilityPaths: + items: + $ref: '#/components/schemas/RepocontextReachabilityPath' + type: array + repositoryClassification: + $ref: '#/components/schemas/RepocontextRepoContextRepositoryClassification' + nullable: true + repositoryReferences: + items: + $ref: '#/components/schemas/RepocontextRepoContextRepositoryReferencesElem' + type: array + rootDirectorySummary: + $ref: '#/components/schemas/RepocontextRepoContextDirectorySummary' + secretsSurface: + items: + $ref: '#/components/schemas/RepocontextSecretUsage' + type: array + securityBoundaries: + items: + $ref: '#/components/schemas/RepocontextSecurityBoundary' + type: array + securityPosture: + $ref: '#/components/schemas/RepocontextRepoContextSecurityPosture' + securityTooling: + items: + $ref: '#/components/schemas/RepocontextRepoContextSecurityToolingElem' + type: array + sourceSinks: + items: + $ref: '#/components/schemas/RepocontextSourceSink' + type: array + submodules: + items: + $ref: '#/components/schemas/RepocontextRepoContextSubmodulesElem' + type: array + technologyStack: + items: + $ref: '#/components/schemas/RepocontextRepoContextTechnologyStackElem' + type: array + toxicCombinations: + items: + $ref: '#/components/schemas/RepocontextToxicCombination' + type: array + trustedServices: + items: + $ref: '#/components/schemas/RepocontextTrustedService' + type: array + type: object + RepocontextRepoContextCicdPipelineSummary: + properties: + prWorkflowCount: + nullable: true + type: integer + summary: + nullable: true + type: string + workflows: + items: + $ref: '#/components/schemas/RepocontextRepoContextCicdPipelineSummaryWorkflowsElem' + type: array + type: object + RepocontextRepoContextCicdPipelineSummaryWorkflowsElem: + properties: + jobs: + items: + $ref: '#/components/schemas/RepocontextRepoContextCicdPipelineSummaryWorkflowsElemJobsElem' + type: array + name: + nullable: true + type: string + path: + nullable: true + type: string + platform: + nullable: true + type: string + runsOnPr: + nullable: true + type: boolean + type: object + RepocontextRepoContextCicdPipelineSummaryWorkflowsElemJobsElem: + properties: + name: + nullable: true + type: string + steps: + items: + $ref: '#/components/schemas/RepocontextRepoContextCicdPipelineSummaryWorkflowsElemJobsElemStepsElem' + type: array + type: object + RepocontextRepoContextCicdPipelineSummaryWorkflowsElemJobsElemStepsElem: + properties: + command: + nullable: true + type: string + name: + nullable: true + type: string + uses: + nullable: true + type: string + type: object + RepocontextRepoContextCommitPatterns: + properties: + exampleMessages: + items: + type: string + type: array + lastUpdated: + format: date-time + nullable: true + type: string + learnedFromCommits: + nullable: true + type: integer + messageFormat: + $ref: '#/components/schemas/RepocontextRepoContextCommitPatternsMessageFormat' + nullable: true + prefixPatterns: + items: + type: string + type: array + type: object + RepocontextRepoContextCommitPatternsMessageFormat: + enum: + - conventional + - descriptive + - imperative + - ticket-prefixed + type: string + RepocontextRepoContextContextSummary: + properties: + complianceDrivers: + items: + type: string + type: array + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + executiveSummary: + nullable: true + type: string + recommendedFollowups: + items: + type: string + type: array + technicalSummary: + nullable: true + type: string + topRisks: + items: + type: string + type: array + type: object + RepocontextRepoContextDatabasesElem: + properties: + databaseType: + $ref: '#/components/schemas/RepocontextRepoContextDatabasesElemDatabaseType' + name: + type: string + type: object + RepocontextRepoContextDatabasesElemDatabaseType: + enum: + - CASSANDRA + - DYNAMODB + - ELASTICSEARCH + - MONGODB + - MSSQL + - MYSQL + - OTHER + - POSTGRESQL + - REDIS + - SQLITE + type: string + RepocontextRepoContextDevelopmentGuidelines: + properties: + summary: + nullable: true + type: string + tools: + items: + $ref: '#/components/schemas/RepocontextRepoContextDevelopmentGuidelinesToolsElem' + type: array + type: object + RepocontextRepoContextDevelopmentGuidelinesToolsElem: + properties: + category: + $ref: '#/components/schemas/RepocontextRepoContextDevelopmentGuidelinesToolsElemCategory' + filePath: + type: string + summary: + nullable: true + type: string + tool: + type: string + type: object + RepocontextRepoContextDevelopmentGuidelinesToolsElemCategory: + enum: + - ai_coding_assistant + - code_review_bot + - linter_formatter + type: string + RepocontextRepoContextDirectorySummary: + properties: + childPaths: + items: + type: string + type: array + keyFiles: + items: + type: string + type: array + kind: + $ref: '#/components/schemas/RepocontextRepoContextDirectorySummaryKind' + path: + type: string + publicInterfaces: + items: + type: string + type: array + responsibilities: + items: + type: string + type: array + summary: + type: string + type: object + RepocontextRepoContextDirectorySummaryKind: + enum: + - application + - config + - directory + - docs + - infrastructure + - library + - module + - other + - package + - root + - service + - tests + type: string + RepocontextRepoContextNetworkExposure: + enum: + - internal + - internet_facing + - library + type: string + RepocontextRepoContextProjectImportance: + enum: + - high + - low + - medium + type: string + RepocontextRepoContextProjectRole: + enum: + - admin_surface + - batch_job + - cli_tool + - frontend_app + - infrastructure + - internal_api + - prototype + - public_api + - shared_library + - test_harness + - unknown + - worker + type: string + RepocontextRepoContextRepositoryClassification: + enum: + - application + - infrastructure + - library + - mixed + type: string + RepocontextRepoContextRepositoryReferencesElem: + properties: + description: + nullable: true + type: string + isCloudToCodeConnected: + nullable: true + type: boolean + name: + type: string + repositoryReferenceType: + $ref: '#/components/schemas/RepocontextRepoContextRepositoryReferencesElemRepositoryReferenceType' + url: + type: string + type: object + RepocontextRepoContextRepositoryReferencesElemRepositoryReferenceType: + enum: + - dependency + - fork + - framework + - infrastructure + - library + - related + - template + - tool + - vendor + type: string + RepocontextRepoContextSecurityPosture: + properties: + authCoverage: + $ref: '#/components/schemas/RepocontextRepoContextSecurityPostureAuthCoverage' + nullable: true + hasDependencyScanning: + nullable: true + type: boolean + hasInputValidation: + nullable: true + type: boolean + hasSecretScanning: + nullable: true + type: boolean + hasStaticAnalysis: + nullable: true + type: boolean + mitigatingFactors: + items: + type: string + type: array + riskFactors: + items: + type: string + type: array + type: object + RepocontextRepoContextSecurityPostureAuthCoverage: + enum: + - FULL + - NONE + - PARTIAL + type: string + RepocontextRepoContextSecurityToolingElem: + properties: + category: + $ref: '#/components/schemas/RepocontextRepoContextSecurityToolingElemCategory' + name: + type: string + type: object + RepocontextRepoContextSecurityToolingElemCategory: + enum: + - CONTAINER_SECURITY + - DAST + - DEPENDENCY_UPDATE + - IAC_SECURITY + - SAST + - SCA + - SECRETS_SCANNING + type: string + RepocontextRepoContextSubmodulesElem: + properties: + branch: + nullable: true + type: string + name: + nullable: true + type: string + path: + type: string + url: + type: string + type: object + RepocontextRepoContextTechnologyStackElem: + properties: + category: + $ref: '#/components/schemas/RepocontextRepoContextTechnologyStackElemCategory' + name: + type: string + type: object + RepocontextRepoContextTechnologyStackElemCategory: + enum: + - CACHE + - DATABASE + - FRAMEWORK + - MESSAGE_QUEUE + - MONITORING + - SEARCH_ENGINE + type: string + RepocontextRouteParameter: + properties: + in: + $ref: '#/components/schemas/RepocontextRouteParameterIn' + name: + type: string + required: + nullable: true + type: boolean + sensitive: + nullable: true + type: boolean + type: + $ref: '#/components/schemas/RepocontextRouteParameterType' + nullable: true + type: object + RepocontextRouteParameterIn: + enum: + - cookie + - header + - path + - query + type: string + RepocontextRouteParameterType: + enum: + - array + - boolean + - integer + - number + - object + - string + type: string + RepocontextSecretUsage: + properties: + cloudNodeId: + nullable: true + type: string + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + consumerQualifiedNames: + items: + type: string + type: array + id: + type: string + name: + type: string + projectId: + nullable: true + type: string + purpose: + nullable: true + type: string + readEvidence: + items: + $ref: '#/components/schemas/RepocontextSecretUsageReadEvidenceElem' + nullable: true + type: array + rotationEvidence: + $ref: '#/components/schemas/RepocontextSecretUsageRotationEvidence' + nullable: true + sensitivity: + $ref: '#/components/schemas/RepocontextDataClassification' + nullable: true + source: + $ref: '#/components/schemas/RepocontextSecretUsageSource' + trustedServiceId: + nullable: true + type: string + type: object + RepocontextSecretUsageReadEvidenceElem: + properties: + filePath: + type: string + line: + type: integer + qualifiedName: + nullable: true + type: string + symbol: + nullable: true + type: string + type: object + RepocontextSecretUsageRotationEvidence: + enum: + - automatic + - manual + - none_observed + - unknown + type: string + RepocontextSecretUsageSource: + enum: + - aws_secrets_manager + - aws_ssm_parameter_store + - azure_key_vault + - config_file + - env_var + - gcp_secret_manager + - hardcoded + - hashicorp_vault + - kubernetes_secret + - other + type: string + RepocontextSecurityBoundary: + properties: + cloudReconBoundaryId: + nullable: true + type: string + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + description: + type: string + evidencePaths: + items: + type: string + type: array + exposure: + $ref: '#/components/schemas/RepocontextExposureLevel' + nullable: true + id: + type: string + mechanismTypes: + items: + $ref: '#/components/schemas/RepocontextSecurityBoundaryMechanismTypesElem' + type: array + name: + type: string + nodeIds: + items: + type: string + type: array + relatedDataDomainIds: + items: + type: string + type: array + relatedEntrypointIds: + items: + type: string + type: array + relatedProjectIds: + items: + type: string + type: array + trustedServiceIds: + items: + type: string + type: array + type: + $ref: '#/components/schemas/RepocontextSecurityBoundaryType' + type: object + RepocontextSecurityBoundaryMechanismTypesElem: + enum: + - AUTHENTICATION + - AUTHORIZATION + - ENCRYPTION + - IAM + - MTLS + - NETWORK_POLICY + - OTHER + - PRIVATE_NETWORK + - QUEUE_ISOLATION + - SECURITY_GROUP + - TENANT_SCOPING + type: string + RepocontextSecurityBoundaryType: + enum: + - account + - admin_surface + - background_processing + - data_perimeter + - data_plane + - identity_boundary + - kubernetes_cluster + - kubernetes_namespace + - network_boundary + - other + - private_network + - private_service + - public_edge + - secrets_boundary + - security_group + - service_perimeter + - subnet + - tenant_boundary + - vpc + type: string + RepocontextServiceCategory: + enum: + - CACHE + - DATABASE + - EVENT_BUS + - EXTERNAL_API + - FILE_STORAGE + - KEY_MANAGEMENT + - MESSAGE_QUEUE + - NOTIFICATION + - OBJECT_STORAGE + - OTHER + - SEARCH + - SECRETS + - WORKFLOW + type: string + RepocontextSourceSink: + properties: + argumentDigest: + nullable: true + type: string + category: + $ref: '#/components/schemas/RepocontextSourceSinkCategory' + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + dataClassHint: + $ref: '#/components/schemas/RepocontextDataClassification' + nullable: true + dataDomainHint: + nullable: true + type: string + detector: + nullable: true + type: string + endLine: + nullable: true + type: integer + filePath: + type: string + framework: + nullable: true + type: string + id: + type: string + isExternal: + nullable: true + type: boolean + kind: + $ref: '#/components/schemas/RepocontextSourceSinkKind' + language: + $ref: '#/components/schemas/LanguageCodeLanguage' + nullable: true + projectId: + nullable: true + type: string + qualifiedName: + type: string + startLine: + type: integer + symbol: + nullable: true + type: string + symbolId: + nullable: true + type: string + type: object + RepocontextSourceSinkCategory: + enum: + - cache_read + - cache_write + - cli_entry + - config_read + - database_read + - database_write + - encrypt + - env_read + - event_handler + - external_api_call + - file_read + - file_write + - hash + - http_request_handler + - llm_input + - llm_output + - log_write + - notification_send + - object_storage_read + - object_storage_write + - other + - outbound_http + - queue_consumer + - queue_publish + - redact + - response_write + - scheduled_task + - secret_read + - tokenize + - validate + type: string + RepocontextSourceSinkKind: + enum: + - sanitizer + - sink + - source + type: string + RepocontextToxicCombination: + properties: + componentFindings: + $ref: '#/components/schemas/RepocontextToxicCombinationComponentFindings' + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + description: + nullable: true + type: string + evidencePaths: + items: + type: string + type: array + id: + type: string + name: + type: string + pattern: + $ref: '#/components/schemas/RepocontextToxicCombinationPattern' + recommendedRemediation: + nullable: true + type: string + severity: + $ref: '#/components/schemas/RepocontextToxicCombinationSeverity' + type: object + RepocontextToxicCombinationComponentFindings: + properties: + artifactLinkIds: + items: + type: string + type: array + dataFlowIds: + items: + type: string + type: array + entrypointIds: + items: + type: string + type: array + reachabilityPathIds: + items: + type: string + type: array + routeReferences: + items: + $ref: '#/components/schemas/RepocontextToxicCombinationComponentFindingsRouteReferencesElem' + type: array + secretUsageIds: + items: + type: string + type: array + securityBoundaryIds: + items: + type: string + type: array + trustedServiceIds: + items: + type: string + type: array + type: object + RepocontextToxicCombinationComponentFindingsRouteReferencesElem: + properties: + entrypointId: + nullable: true + type: string + method: + type: string + path: + type: string + type: object + RepocontextToxicCombinationPattern: + enum: + - cross_boundary_flow_without_sanitizer + - hardcoded_credential_write_access + - internet_reachable_admin_endpoint + - internet_reachable_sensitive_sink + - missing_authz_on_tenant_isolation_boundary + - other + - privileged_role_internet_reachable + - public_workload_with_plaintext_secret + - sensitive_data_logged_in_plaintext + - unauthenticated_route_with_pii + - unencrypted_data_flow_over_internet + type: string + RepocontextToxicCombinationSeverity: + enum: + - CRITICAL + - HIGH + - LOW + - MEDIUM + type: string + RepocontextTrustedService: + properties: + accessPatterns: + items: + $ref: '#/components/schemas/RepocontextTrustedServiceAccessPatternsElem' + type: array + boundaryIds: + items: + type: string + type: array + category: + $ref: '#/components/schemas/RepocontextServiceCategory' + cloudReconServiceId: + nullable: true + type: string + confidence: + $ref: '#/components/schemas/RepocontextConfidence' + description: + type: string + evidencePaths: + items: + type: string + type: array + id: + type: string + name: + type: string + nodeIds: + items: + type: string + type: array + relatedDataDomainIds: + items: + type: string + type: array + relatedEntrypointIds: + items: + type: string + type: array + relatedProjectIds: + items: + type: string + type: array + secretsAccessPattern: + $ref: '#/components/schemas/RepocontextTrustedServiceSecretsAccessPattern' + nullable: true + serviceType: + $ref: '#/components/schemas/RepocontextTrustedServiceType' + type: object + RepocontextTrustedServiceAccessPatternsElem: + enum: + - DECRYPT + - ENCRYPT + - OTHER + - PUBLISH + - READ + - READ_SECRET + - READ_WRITE + - SIGN + - STORE_SECRET + - SUBSCRIBE + - VERIFY + - WRITE + type: string + RepocontextTrustedServiceSecretsAccessPattern: + enum: + - config_file + - env_var + - hardcoded + - sdk_call + - sidecar + - unknown + type: string + RepocontextTrustedServiceType: + enum: + - AWS_DYNAMODB + - AWS_EFS + - AWS_ELASTICACHE + - AWS_EVENTBRIDGE + - AWS_KMS + - AWS_MQ + - AWS_RDS + - AWS_S3 + - AWS_SECRETS_MANAGER + - AWS_SNS + - AWS_SQS + - AWS_STEPFUNCTIONS + - AZURE_BLOB_STORAGE + - AZURE_KEY_VAULT + - AZURE_SERVICE_BUS + - AZURE_SQL + - ELASTICSEARCH + - GCP_CLOUD_SQL + - GCP_CLOUD_STORAGE + - GCP_KMS + - GCP_PUBSUB + - GENERIC_HTTP_API + - KAFKA + - MONGODB + - MYSQL + - OTHER + - POSTGRESQL + - RABBITMQ + - REDIS + type: string + EndpointsAutofixActivityLogEntry: + properties: + content: + type: string + createdAt: + type: string + eventType: + type: string + id: + type: string + metadata: + nullable: true + type: string + type: object + EndpointsAutofixStatusOutput: + properties: + autofixVerdictExplanation: + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + currentActivity: + type: string + currentPhase: + $ref: '#/components/schemas/ModelsAutofixPhase' + isAutoFixable: + nullable: true + type: boolean + iterations: + $ref: '#/components/schemas/EndpointsIterationSummary' + lastActivityAt: + type: string + pullRequestState: + $ref: '#/components/schemas/ModelsPullRequestState' + pullRequestUrl: + type: string + pullRequests: + items: + $ref: '#/components/schemas/EndpointsPullRequestSummary' + type: array + reconciliationStale: + type: boolean + state: + $ref: '#/components/schemas/ModelsAutoFixState' + terminal: + type: boolean + updatedAt: + type: string + required: + - state + - terminal + type: object + EndpointsGetAutofixActivityLogOutput: + properties: + entries: + items: + $ref: '#/components/schemas/EndpointsAutofixActivityLogEntry' + nullable: true + type: array + nextCursor: + type: string + required: + - entries + type: object + EndpointsGetCSPMFindingAutofixDiffOutput: + properties: + commit: + type: string + diffs: + items: + $ref: '#/components/schemas/ModelsDiffFile' + nullable: true + type: array + explanation: + type: string + pullRequestBody: + type: string + pullRequestTitle: + type: string + version: + type: string + required: + - diffs + - pullRequestTitle + - pullRequestBody + - explanation + - commit + type: object + EndpointsGetCSPMFindingAutofixStateOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetCSPMFindingAutofixStatusOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetCSPMFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsCSPMFinding' + version: + type: string + required: + - finding + - version + type: object + EndpointsGetCSPMFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsCSPMFindingPreview' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - version + type: object + EndpointsGetCSPMScanOutput: + properties: + scan: + $ref: '#/components/schemas/ModelsCSPMScan' + version: + type: string + required: + - scan + - version + type: object + EndpointsGetCSPMScansOutput: + properties: + nextToken: + type: string + numItems: + type: integer + scans: + items: + $ref: '#/components/schemas/ModelsCSPMScanPreview' + nullable: true + type: array + version: + type: string + required: + - scans + - numItems + - version + type: object + EndpointsIterationSummary: + properties: + count: + type: integer + durationSeconds: + type: integer + lastIterationAt: + type: string + totalCostUSD: + format: double + type: number + totalInputTokens: + type: integer + totalOutputTokens: + type: integer + required: + - count + - totalCostUSD + - totalInputTokens + - totalOutputTokens + - durationSeconds + type: object + EndpointsPostCSPMFindingAutofixInput: + properties: + force: + nullable: true + type: boolean + message: + type: string + originCampaignId: + type: string + type: object + EndpointsPostCSPMFindingAutofixOutput: + properties: + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + error: + type: string + version: + type: string + required: + - autoFixState + type: object + EndpointsPostCreateTicketCSPMFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + campaignId: + type: string + campaignTitle: + type: string + message: + type: string + project: + type: string + userCanonicalId: + type: string + type: object + EndpointsPostCreateTicketCSPMFindingOutput: + properties: + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + version: + type: string + required: + - ticket + type: object + EndpointsPullRequestSummary: + properties: + createdAt: + type: string + identifier: + type: integer + mergedAt: + type: string + provider: + $ref: '#/components/schemas/ModelsProviderID' + status: + $ref: '#/components/schemas/ModelsPullRequestState' + url: + type: string + required: + - identifier + type: object + ModelsAutofixFailureReason: + enum: + - AGENT_ERROR + - AGENT_SURRENDERED + - CODE_NOT_FOUND + - DEPENDABOT_NO_OP + - ECOSYSTEM_NOT_SUPPORTED + - FIX_GENERATION_FAILED + - FIX_REVIEW_REJECTED + - NO_FIX_VERSION_AVAILABLE + - TIMEOUT + - TRANSITIVE_NO_PARENT_BUMP_PATH + type: string + ModelsAutofixPhase: + enum: + - planning + - fixing + - reviewing + - creating_pr + type: string + ModelsCSPMFinding: + properties: + accountId: + type: string + accountName: + type: string + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + autoFixCurrentActivity: + type: string + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictExplanation: + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + budgetExhausted: + type: boolean + budgetLimit: + format: double + type: number + budgetUsed: + format: double + type: number + category: + type: string + cloudProvider: + type: string + complianceFrames: + items: + $ref: '#/components/schemas/ModelsComplianceFrame' + type: array + concurrencyLimit: + type: integer + createdAt: + type: string + currentConfig: + additionalProperties: {} + type: object + deletedAt: + format: date-time + type: string + description: + type: string + devDescription: + type: string + expectedConfig: + additionalProperties: {} + type: object + exploitabilityConfidence: + type: string + exploitabilityLabel: + type: string + failedTriage: + type: boolean + fixCommit: + type: string + fixSource: + type: string + fixedAt: + format: date-time + nullable: true + type: string + id: + type: string + impactConfidence: + type: string + impactLabel: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isFalsePositive: + type: boolean + isFixed: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + message: + type: string + platform: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + type: array + region: + type: string + resolvedAt: + format: date-time + type: string + resourceArn: + type: string + resourceId: + type: string + resourceName: + type: string + resourceTags: + additionalProperties: + type: string + type: object + resourceType: + type: string + ruleId: + type: string + ruleUrl: + type: string + scanId: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + severityConfidence: + type: string + severityLabel: + $ref: '#/components/schemas/ModelsSeverity' + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + severityScore: + type: integer + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + ticketState: + type: string + title: + type: string + triageAgentVersion: + type: string + triageDurationSeconds: + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageLangfuseSessionId: + nullable: true + type: string + triageLangfuseTraceId: + nullable: true + type: string + triageLlmCostUsd: + nullable: true + type: number + triageStart: + format: date-time + nullable: true + type: string + triageTokenCount: + nullable: true + type: integer + triageTraceId: + nullable: true + type: string + updatedAt: + type: string + userNotes: + type: string + required: + - platform + - installationId + - resolvedAt + - triageDurationSeconds + - isResolved + type: object + ModelsCSPMFindingPreview: + properties: + accountId: + type: string + accountName: + type: string + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + category: + type: string + cloudProvider: + type: string + complianceFrames: + items: + $ref: '#/components/schemas/ModelsComplianceFrame' + type: array + createdAt: + type: string + id: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + message: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + region: + type: string + resourceArn: + type: string + resourceId: + type: string + resourceName: + type: string + resourceType: + type: string + ruleId: + type: string + ruleUrl: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + title: + type: string + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + updatedAt: + type: string + required: + - createdAt + - updatedAt + - tenantId + - id + - title + - isResolved + type: object + ModelsCSPMScan: + properties: + accountId: + type: string + accountName: + type: string + cloudProvider: + $ref: '#/components/schemas/ModelsCloudProvider' + createdAt: + type: string + duration: + type: integer + endedAt: + format: date-time + nullable: true + type: string + executionArn: + type: string + failureReason: + nullable: true + type: string + findingsCount: + type: integer + findingsS3Bucket: + type: string + findingsS3Key: + type: string + id: + type: string + installationId: + type: string + isArchived: + type: boolean + platform: + type: string + progress: + type: integer + region: + type: string + regionsToScan: + items: + type: string + type: array + resourceCoverage: + additionalProperties: {} + type: object + resourceTypes: + items: + type: string + type: array + rulesToScan: + items: + type: string + type: array + scanConfig: + additionalProperties: {} + type: object + scanType: + $ref: '#/components/schemas/ModelsCSPMScanType' + scannerConfig: + type: string + scannerVersion: + type: string + startedAt: + format: date-time + type: string + status: + $ref: '#/components/schemas/ModelsScanStatus' + summary: + $ref: '#/components/schemas/ModelsCSPMScanSummary' + tenantId: + type: string + updatedAt: + type: string + required: + - platform + - installationId + - startedAt + - summary + type: object + ModelsCSPMScanPreview: + properties: + accountId: + type: string + accountName: + type: string + cloudProvider: + $ref: '#/components/schemas/ModelsCloudProvider' + createdAt: + type: string + duration: + type: integer + endedAt: + format: date-time + nullable: true + type: string + findingsCount: + type: integer + id: + type: string + isArchived: + type: boolean + progress: + type: integer + region: + type: string + scanType: + $ref: '#/components/schemas/ModelsCSPMScanType' + scannerVersion: + type: string + startedAt: + format: date-time + type: string + status: + $ref: '#/components/schemas/ModelsScanStatus' + summary: + $ref: '#/components/schemas/ModelsCSPMScanSummary' + tenantId: + type: string + updatedAt: + type: string + required: + - startedAt + - summary + type: object + ModelsCSPMScanSummary: + properties: + criticalFindings: + type: integer + failedChecks: + type: integer + highFindings: + type: integer + infoFindings: + type: integer + lowFindings: + type: integer + mediumFindings: + type: integer + passedChecks: + type: integer + resourcesScanned: + type: integer + rulesEvaluated: + type: integer + totalFindings: + type: integer + required: + - totalFindings + - criticalFindings + - highFindings + - mediumFindings + - lowFindings + - infoFindings + - passedChecks + - failedChecks + - resourcesScanned + - rulesEvaluated + type: object + ModelsCSPMScanType: + enum: + - full + - incremental + - targeted + - scheduled-cloud-scan + type: string + ModelsComplianceFrame: + properties: + control: + type: string + framework: + type: string + version: + type: string + type: object + ModelsScanStatus: + enum: + - queued + - in progress + - stopping + - completed + - cancelled + - failed + - aborted_config_error + - human_fallback + type: string + AgentsAgentLogs: + items: {} + nullable: true + type: array + AgentsGroupedAgentLog: + properties: + logs: + $ref: '#/components/schemas/AgentsAgentLogs' + summary: + type: string + type: object + AgentsGroupedAgentLogs: + items: + $ref: '#/components/schemas/AgentsGroupedAgentLog' + nullable: true + type: array + EndpointsBugHuntConfigInput: + properties: + credentials: + items: + $ref: '#/components/schemas/ModelsCredentialBinding' + nullable: true + type: array + enabled: + type: boolean + intensity: + $ref: '#/components/schemas/ModelsBugHuntScanIntensity' + scope: + $ref: '#/components/schemas/ModelsScopePolicy' + suites: + items: + $ref: '#/components/schemas/ModelsTestSuitePolicy' + nullable: true + type: array + vulnClasses: + items: + $ref: '#/components/schemas/ModelsVulnClassRule' + nullable: true + type: array + required: + - enabled + - scope + - vulnClasses + - suites + - credentials + - intensity + type: object + EndpointsBugHuntFindingEvent: + properties: + data: {} + id: + type: string + time: + type: string + type: + type: string + required: + - id + - time + - type + - data + type: object + EndpointsDeleteCredentialOutput: + properties: + success: + type: boolean + required: + - success + type: object + EndpointsDeletePentestAppConfigOutput: + properties: + success: + type: boolean + required: + - success + type: object + EndpointsGetAuthMatrixHypothesesOutput: + properties: + hypotheses: + items: + $ref: '#/components/schemas/ModelsPentestAuthMatrixHypothesis' + nullable: true + type: array + version: + type: string + required: + - hypotheses + type: object + EndpointsGetBugHuntConfigOutput: + properties: + config: + $ref: '#/components/schemas/ModelsBugHuntScanConfig' + required: + - config + type: object + EndpointsGetBugHuntFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/EndpointsBugHuntFindingEvent' + nullable: true + type: array + required: + - events + type: object + EndpointsGetBugHuntFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsBugHuntFinding' + type: object + EndpointsGetBugHuntFindingTriageOutput: + properties: + triage: + $ref: '#/components/schemas/ModelsTriage' + type: object + EndpointsGetBugHuntFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsBugHuntFinding' + nullable: true + type: array + required: + - findings + type: object + EndpointsGetBugHuntScanDiffOutput: + properties: + new: + items: + $ref: '#/components/schemas/ModelsBugHuntFinding' + nullable: true + type: array + reopened: + items: + $ref: '#/components/schemas/ModelsBugHuntFinding' + nullable: true + type: array + resolved: + items: + $ref: '#/components/schemas/ModelsBugHuntFinding' + nullable: true + type: array + unchanged: + items: + $ref: '#/components/schemas/ModelsBugHuntFinding' + nullable: true + type: array + required: + - new + - reopened + - unchanged + - resolved + type: object + EndpointsGetBugHuntScanFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsBugHuntFinding' + nullable: true + type: array + required: + - findings + type: object + EndpointsGetBugHuntScanOutput: + properties: + scan: + $ref: '#/components/schemas/ModelsBugHuntScan' + required: + - scan + type: object + EndpointsGetBugHuntScansOutput: + properties: + scans: + items: + $ref: '#/components/schemas/ModelsBugHuntScan' + nullable: true + type: array + required: + - scans + type: object + EndpointsGetBugHuntSuiteRunsOutput: + properties: + runs: + items: + $ref: '#/components/schemas/EndpointsSuiteRunRecord' + nullable: true + type: array + required: + - runs + type: object + EndpointsGetCredentialOutput: + properties: + credential: + $ref: '#/components/schemas/ModelsCredential' + required: + - credential + type: object + EndpointsGetCredentialsOutput: + properties: + credentials: + items: + $ref: '#/components/schemas/ModelsCredential' + nullable: true + type: array + required: + - credentials + type: object + EndpointsGetDASTFindingAutofixStateOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetDASTFindingAutofixStatusOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetDASTLastScanStatusesOutput: + properties: + awsIntegration: + $ref: '#/components/schemas/EndpointsLastScanStatus' + bughunt: + $ref: '#/components/schemas/EndpointsLastScanStatus' + type: object + EndpointsGetLatestPentestPreflightOutput: + properties: + preflight: + $ref: '#/components/schemas/ModelsPentestPreflight' + type: object + EndpointsGetPentestAppConfigOutput: + properties: + application: + $ref: '#/components/schemas/ModelsApplicationPentestConfig' + required: + - application + type: object + EndpointsGetPentestAppConfigsOutput: + properties: + applications: + items: + $ref: '#/components/schemas/ModelsApplicationPentestConfig' + nullable: true + type: array + nextToken: + type: string + required: + - applications + - nextToken + type: object + EndpointsGetPentestFindingAutofixDiffOutput: + properties: + commit: + type: string + diffs: + items: + $ref: '#/components/schemas/ModelsDiffFile' + nullable: true + type: array + explanation: + type: string + pullRequestBody: + type: string + pullRequestTitle: + type: string + version: + type: string + required: + - diffs + - pullRequestTitle + - pullRequestBody + - explanation + - commit + type: object + EndpointsGetPentestFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsDASTEventInterface' + nullable: true + type: array + version: + type: string + required: + - events + type: object + EndpointsGetPentestFindingFullOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsPentestFinding' + version: + type: string + required: + - finding + type: object + EndpointsGetPentestFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsPentestFinding' + version: + type: string + required: + - finding + type: object + EndpointsGetPentestFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsPentestFinding' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetPentestPreflightEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsDASTEventInterface' + nullable: true + type: array + highestSeq: + format: int64 + type: integer + version: + type: string + required: + - events + - highestSeq + type: object + EndpointsGetPentestPreflightOutput: + properties: + preflight: + $ref: '#/components/schemas/ModelsPentestPreflight' + required: + - preflight + type: object + EndpointsGetPentestPreflightQuotaOutput: + properties: + limit: + format: int64 + type: integer + used: + format: int64 + type: integer + windowResetAt: + format: date-time + type: string + required: + - used + - limit + - windowResetAt + type: object + EndpointsGetPentestScanFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsPentestFinding' + nullable: true + type: array + version: + type: string + required: + - findings + type: object + EndpointsGetPentestScanOutput: + properties: + scan: + $ref: '#/components/schemas/ModelsPentestScan' + version: + type: string + required: + - scan + type: object + EndpointsGetPentestScanReportDownloadURLOutput: + properties: + downloadUrl: + type: string + version: + type: string + required: + - downloadUrl + type: object + EndpointsGetPentestScanReportOutput: + properties: + report: + $ref: '#/components/schemas/ModelsPentestReport' + version: + type: string + required: + - report + type: object + EndpointsGetPentestScanReportPDFOutput: + properties: + downloadUrl: + type: string + version: + type: string + required: + - downloadUrl + type: object + EndpointsGetPentestScansOutput: + properties: + nextToken: + type: string + scans: + items: + $ref: '#/components/schemas/ModelsPentestScan' + nullable: true + type: array + version: + type: string + required: + - scans + - nextToken + type: object + EndpointsGetSourceIPsOutput: + properties: + ips: + items: + type: string + nullable: true + type: array + region: + type: string + required: + - ips + - region + type: object + EndpointsGetSubAgentNetworkLogOutput: + properties: + networkLog: + $ref: '#/components/schemas/ModelsNetworkLog' + version: + type: string + required: + - networkLog + type: object + EndpointsLastScanResults: + properties: + totalEndpoints: + type: integer + totalFindings: + type: integer + totalHosts: + type: integer + type: object + EndpointsLastScanStatus: + properties: + endTime: + type: string + scanId: + type: string + scanResults: + $ref: '#/components/schemas/EndpointsLastScanResults' + startTime: + type: string + status: + type: string + required: + - scanId + - status + - startTime + type: object + EndpointsPatchBugHuntFindingAllowlistInput: + properties: + allow: + type: boolean + reason: + type: string + required: + - reason + - allow + type: object + EndpointsPatchBugHuntFindingAllowlistOutput: + properties: + success: + type: boolean + required: + - success + type: object + EndpointsPostAllowlistPentestFindingInput: + properties: + allowlistReason: + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - allowlistReason + - allowlistType + type: object + EndpointsPostAutofixDASTPentestFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + force: + nullable: true + type: boolean + message: + description: >- + Appended to the PR description body; when Force=true and the row is in a verdict-surrender state, this + string is forwarded to the autofix agent as the user's aggressive override prompt. + type: string + originCampaignId: + type: string + type: object + EndpointsPostAutofixDASTPentestFindingOutput: + properties: + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + error: + type: string + version: + type: string + required: + - autoFixState + type: object + EndpointsPostBugHuntScanInput: + properties: + intensity: + $ref: '#/components/schemas/ModelsBugHuntScanIntensity' + scope: + $ref: '#/components/schemas/ModelsScopePolicy' + required: + - scope + - intensity + type: object + EndpointsPostBugHuntScanOutput: + properties: + scanId: + type: string + required: + - scanId + type: object + EndpointsPostBugHuntSuiteRunNowInput: + properties: + intensity: + $ref: '#/components/schemas/ModelsBugHuntScanIntensity' + type: object + EndpointsPostBugHuntSuiteRunNowOutput: + properties: + scanId: + type: string + required: + - scanId + type: object + EndpointsPostCreateTicketPentestFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + campaignId: + type: string + campaignTitle: + type: string + message: + type: string + project: + type: string + type: object + EndpointsPostCreateTicketPentestFindingOutput: + properties: + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + version: + type: string + required: + - ticket + type: object + EndpointsPostCredentialInput: + properties: + config: + $ref: '#/components/schemas/ModelsCredentialConfig' + description: + type: string + name: + type: string + type: + $ref: '#/components/schemas/ModelsCredentialType' + required: + - name + - description + - type + - config + type: object + EndpointsPostCredentialOutput: + properties: + credential: + $ref: '#/components/schemas/ModelsCredential' + required: + - credential + type: object + EndpointsPostPentestAppConfigInput: + properties: + credentialIds: + items: + type: string + nullable: true + type: array + id: + type: string + targets: + items: + $ref: '#/components/schemas/ModelsApplicationPentestTarget' + nullable: true + type: array + required: + - targets + - credentialIds + type: object + EndpointsPostPentestAppConfigOutput: + properties: + application: + $ref: '#/components/schemas/ModelsApplicationPentestConfig' + required: + - application + type: object + EndpointsPostUnallowlistPentestFindingInput: + properties: + unallowlistReason: + description: The reason for unallowlisting the finding + type: string + required: + - unallowlistReason + type: object + EndpointsPutBugHuntConfigInput: + properties: + config: + $ref: '#/components/schemas/EndpointsBugHuntConfigInput' + required: + - config + type: object + EndpointsPutBugHuntConfigOutput: + properties: + config: + $ref: '#/components/schemas/ModelsBugHuntScanConfig' + required: + - config + type: object + EndpointsPutCredentialInput: + properties: + config: + $ref: '#/components/schemas/ModelsCredentialConfig' + description: + type: string + name: + type: string + type: + $ref: '#/components/schemas/ModelsCredentialType' + required: + - name + - description + - type + - config + type: object + EndpointsPutCredentialOutput: + properties: + credential: + $ref: '#/components/schemas/ModelsCredential' + required: + - credential + type: object + EndpointsPutPentestAppConfigInput: + properties: + credentialIds: + items: + type: string + type: array + targets: + items: + $ref: '#/components/schemas/ModelsApplicationPentestTarget' + type: array + type: object + EndpointsPutPentestAppConfigOutput: + properties: + application: + $ref: '#/components/schemas/ModelsApplicationPentestConfig' + required: + - application + type: object + EndpointsStartPentestPreflightInput: + properties: + triggeredByScan: + type: boolean + type: object + EndpointsStartPentestPreflightOutput: + properties: + preflight: + $ref: '#/components/schemas/ModelsPentestPreflight' + required: + - preflight + type: object + EndpointsStartPentestScanFromApplicationInput: + properties: + applicationId: + type: string + configOverrides: + $ref: '#/components/schemas/ModelsApplicationPentestConfigOverrides' + required: + - applicationId + type: object + EndpointsStartPentestScanFromApplicationOutput: + properties: + scan: + $ref: '#/components/schemas/ModelsPentestScan' + version: + type: string + required: + - scan + type: object + EndpointsStopBugHuntScanOutput: + properties: + success: + type: boolean + required: + - success + type: object + EndpointsStopPentestScanOutput: + properties: + scan: + $ref: '#/components/schemas/ModelsPentestScan' + version: + type: string + required: + - scan + type: object + EndpointsSuiteRunRecord: + properties: + lastRunAt: + type: string + lastRunId: + type: string + suite: + $ref: '#/components/schemas/ModelsTestSuite' + required: + - suite + - lastRunAt + - lastRunId + type: object + EndpointsValidateBugHuntConfigInput: + properties: + config: + $ref: '#/components/schemas/EndpointsBugHuntConfigInput' + required: + - config + type: object + EndpointsValidateBugHuntConfigOutput: + properties: + errors: + items: + $ref: '#/components/schemas/ModelsConfigValidationError' + nullable: true + type: array + required: + - errors + type: object + EndpointsValidateCredentialOutput: + properties: + message: + type: string + valid: + type: boolean + validatedAt: + type: string + validationEvidence: + $ref: '#/components/schemas/ModelsValidationEvidence' + required: + - valid + - validationEvidence + - validatedAt + type: object + ModelsAPIType: + enum: + - REST + - GraphQL + type: string + ModelsAppendices: + properties: + authMatrixHypotheses: + items: + $ref: '#/components/schemas/ModelsAppendixAuthMatrixHypothesis' + type: array + networkLogsSummary: + $ref: '#/components/schemas/ModelsNetworkLogsSummary' + toolOutputs: + $ref: '#/components/schemas/ModelsToolOutputs' + type: object + ModelsAppendixAuthMatrixHypothesis: + properties: + falseReason: + nullable: true + type: string + findingId: + nullable: true + type: string + hypothesis: + type: string + isInsecure: + type: boolean + required: + - hypothesis + - isInsecure + type: object + ModelsApplicationPentestConfig: + properties: + createdAt: + format: date-time + type: string + credentialIds: + items: + type: string + nullable: true + type: array + defaultScanConfig: + $ref: '#/components/schemas/ModelsPentestScanConfig' + id: + type: string + targets: + items: + $ref: '#/components/schemas/ModelsApplicationPentestTarget' + nullable: true + type: array + updatedAt: + format: date-time + type: string + required: + - createdAt + - updatedAt + - targets + type: object + ModelsApplicationPentestConfigOverrides: + properties: + apiSchema: + type: string + credentials: + items: + $ref: '#/components/schemas/ModelsCredential' + type: array + enableAuthMatrix: + type: boolean + enableExploitAnalysis: + type: boolean + enablePentestTools: + type: boolean + targets: + items: + $ref: '#/components/schemas/ModelsApplicationPentestTarget' + type: array + required: + - apiSchema + - enablePentestTools + - enableAuthMatrix + - enableExploitAnalysis + type: object + ModelsApplicationPentestTarget: + properties: + host: + type: string + id: + type: string + name: + type: string + port: + nullable: true + type: integer + required: + - id + - name + type: object + ModelsAssessmentPeriod: + properties: + endDate: + type: string + startDate: + type: string + type: object + ModelsAssetID: + properties: + id: + type: string + provider: + type: string + type: object + ModelsAssetSelector: + properties: + assetId: + $ref: '#/components/schemas/ModelsAssetID' + kind: + $ref: '#/components/schemas/ModelsAssetSelectorKind' + tagQuery: + $ref: '#/components/schemas/ModelsTagQueryAST' + value: + type: string + type: object + ModelsAssetSelectorKind: + enum: + - '' + - cloud_account + - resource_type + - tag_query + - cidr + - ip_address + - domain + - wildcard + - asset_id + - repository + type: string + ModelsAuthMatrixOverride: + properties: + maxEndpoints: + type: integer + maxRoles: + type: integer + type: object + ModelsAuthMatrixStage: + properties: + approach: + type: string + description: + type: string + hypothesesGenerated: + type: integer + required: + - description + - approach + - hypothesesGenerated + type: object + ModelsAuthenticatedWalkOverride: + properties: + maxDepth: + type: integer + maxMinutes: + type: integer + type: object + ModelsAuthor: + properties: + email: + nullable: true + type: string + name: + type: string + role: + nullable: true + type: string + required: + - name + type: object + ModelsBrowserUseOverride: + properties: + maxPagesPerHost: + type: integer + maxSeconds: + type: integer + type: object + ModelsBugHuntAssessmentPhase: + properties: + durationSeconds: + format: double + type: number + endTime: + format: date-time + nullable: true + type: string + groupedLogs: + items: + $ref: '#/components/schemas/ModelsGroupedAgentLog' + type: array + langfuseTraceId: + type: string + langfuseTraceUrl: + type: string + logs: + items: {} + type: array + name: + type: string + startTime: + format: date-time + type: string + status: + type: string + usageMetrics: + $ref: '#/components/schemas/ModelsBugHuntPhaseUsageMetrics' + required: + - name + - startTime + type: object + ModelsBugHuntFinding: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistType: + type: string + createdAt: + format: date-time + type: string + description: + type: string + devDescription: + type: string + evidence: + additionalProperties: {} + type: object + firstSeenAt: + format: date-time + type: string + host: + type: string + id: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isFalsePositive: + type: boolean + isFixed: + type: boolean + isLatest: + type: boolean + lastSeenAt: + format: date-time + type: string + lastSeenScanId: + type: string + notes: + type: string + path: + type: string + port: + type: integer + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + protocol: + type: string + scanId: + type: string + service: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + tenantId: + type: string + title: + type: string + type: + type: string + updatedAt: + format: date-time + type: string + userNotes: + type: string + required: + - id + - scanId + - tenantId + - createdAt + - type + - severity + - title + - description + - host + - isFalsePositive + type: object + ModelsBugHuntPhaseUsageMetrics: + properties: + cacheHitCost: + format: double + type: number + cacheHitTokenCount: + type: integer + cacheWriteCost: + format: double + type: number + cacheWriteTokenCount: + type: integer + inputCost: + format: double + type: number + inputTokenCount: + type: integer + outputCost: + format: double + type: number + outputTokenCount: + type: integer + totalCost: + format: double + type: number + required: + - inputTokenCount + - outputTokenCount + - cacheHitTokenCount + - cacheWriteTokenCount + - inputCost + - outputCost + - cacheHitCost + - cacheWriteCost + - totalCost + type: object + ModelsBugHuntScan: + properties: + assessmentPhases: + items: + $ref: '#/components/schemas/ModelsBugHuntAssessmentPhase' + type: array + createdAt: + format: date-time + type: string + endTime: + format: date-time + nullable: true + type: string + endedAt: + format: date-time + nullable: true + type: string + executionArn: + type: string + failureReason: + nullable: true + type: string + findingIds: + items: + type: string + nullable: true + type: array + findings: + items: + $ref: '#/components/schemas/ModelsBugHuntFinding' + type: array + id: + type: string + intensity: + $ref: '#/components/schemas/ModelsBugHuntScanIntensity' + metrics: + $ref: '#/components/schemas/ModelsBugHuntScanMetrics' + networkLogs: + items: + $ref: '#/components/schemas/ModelsNetworkLog' + type: array + progress: + type: integer + scope: + $ref: '#/components/schemas/ModelsScopePolicy' + stage: + $ref: '#/components/schemas/ModelsBugHuntScanStage' + startTime: + format: date-time + nullable: true + type: string + startedAt: + format: date-time + nullable: true + type: string + status: + $ref: '#/components/schemas/ModelsScanStatus' + suites: + items: + $ref: '#/components/schemas/ModelsTestSuitePolicy' + nullable: true + type: array + summary: + $ref: '#/components/schemas/ModelsBugHuntSummary' + tenantId: + type: string + totalCost: + $ref: '#/components/schemas/ModelsBugHuntScanCostSummary' + updatedAt: + format: date-time + type: string + required: + - id + - tenantId + - status + - stage + - createdAt + - updatedAt + - scope + - suites + - intensity + - progress + - findingIds + - metrics + type: object + ModelsBugHuntScanConfig: + properties: + createdAt: + format: date-time + type: string + credentials: + items: + $ref: '#/components/schemas/ModelsCredentialBinding' + nullable: true + type: array + enabled: + type: boolean + id: + type: string + intensity: + $ref: '#/components/schemas/ModelsBugHuntScanIntensity' + scope: + $ref: '#/components/schemas/ModelsScopePolicy' + suites: + items: + $ref: '#/components/schemas/ModelsTestSuitePolicy' + nullable: true + type: array + tenantId: + type: string + updatedAt: + format: date-time + type: string + vulnClasses: + items: + $ref: '#/components/schemas/ModelsVulnClassRule' + nullable: true + type: array + required: + - id + - tenantId + - createdAt + - updatedAt + - enabled + - scope + - vulnClasses + - suites + - credentials + - intensity + type: object + ModelsBugHuntScanCostSummary: + properties: + costByPhase: + additionalProperties: + $ref: '#/components/schemas/ModelsBugHuntPhaseUsageMetrics' + type: object + totalCacheHitCost: + format: double + type: number + totalCacheHitTokens: + type: integer + totalCacheWriteCost: + format: double + type: number + totalCacheWriteTokens: + type: integer + totalCost: + format: double + type: number + totalInputCost: + format: double + type: number + totalInputTokens: + type: integer + totalOutputCost: + format: double + type: number + totalOutputTokens: + type: integer + required: + - totalInputTokens + - totalOutputTokens + - totalCacheHitTokens + - totalCacheWriteTokens + - totalInputCost + - totalOutputCost + - totalCacheHitCost + - totalCacheWriteCost + - totalCost + type: object + ModelsBugHuntScanIntensity: + enum: + - low + - medium + - high + type: string + ModelsBugHuntScanMetrics: + properties: + domains: + additionalProperties: + type: integer + nullable: true + type: object + endpoints: + additionalProperties: + type: integer + nullable: true + type: object + ports: + additionalProperties: + type: integer + nullable: true + type: object + total: + $ref: '#/components/schemas/ModelsBugHuntScanMetricsTotal' + type: object + ModelsBugHuntScanMetricsTotal: + properties: + domainNames: + type: integer + endpoints: + type: integer + findings: + type: integer + hosts: + type: integer + ipAddresses: + type: integer + services: + type: integer + required: + - hosts + - domainNames + - ipAddresses + - services + - endpoints + - findings + type: object + ModelsBugHuntScanStage: + enum: + - initializing + - enumerate_hosts + - enumerate_ports + - enumerate_endpoints + - scan_endpoints + - collect_results + - triage + - complete + type: string + ModelsBugHuntSummary: + properties: + findingsBySeverity: + additionalProperties: + type: integer + nullable: true + type: object + findingsByType: + additionalProperties: + type: integer + nullable: true + type: object + totalFindings: + type: integer + totalHosts: + type: integer + totalPorts: + type: integer + required: + - totalHosts + - totalPorts + - totalFindings + - findingsBySeverity + - findingsByType + type: object + ModelsCadence: + enum: + - '' + - daily + - weekly + - monthly + - on_change + - manual + type: string + ModelsCodeFinding: + properties: + aiGenerated: + nullable: true + type: boolean + branch: + nullable: true + type: string + campaignIds: + items: + type: string + type: array + category: + nullable: true + type: string + commitHash: + nullable: true + type: string + commitSha: + nullable: true + type: string + cwe: + nullable: true + type: integer + endLine: + nullable: true + type: integer + entrypoint: + nullable: true + type: string + falsePositiveReason: + nullable: true + type: string + filePath: + type: string + id: + nullable: true + type: string + isCloudTriaged: + nullable: true + type: boolean + isFalsePositive: + nullable: true + type: boolean + isResolved: + nullable: true + type: boolean + language: + $ref: '#/components/schemas/LanguageCodeLanguage' + nullable: true + message: + nullable: true + type: string + priority: + $ref: '#/components/schemas/ModelsCodeFindingPriority' + repository: + nullable: true + type: string + repositoryId: + nullable: true + type: string + ruleId: + nullable: true + type: string + severity: + nullable: true + type: string + startLine: + type: integer + title: + nullable: true + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + type: object + ModelsCodeFindingPriority: + properties: + description: + nullable: true + type: string + exploitability: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitability' + fixEffort: + $ref: '#/components/schemas/ModelsCodeFindingPriorityFixEffort' + label: + $ref: '#/components/schemas/ModelsPriorityEnum' + score: + type: integer + severity: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverity' + type: object + ModelsCodeFindingPriorityExploitability: + properties: + attackComplexity: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityAttackComplexity' + attackVector: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityAttackVector' + description: + nullable: true + type: string + evidence: + $ref: '#/components/schemas/GraphGraph' + label: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityLabel' + type: object + ModelsCodeFindingPriorityExploitabilityAttackComplexity: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityAttackComplexityLabel' + privilegesRequired: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityAttackComplexityPrivilegesRequired' + type: object + ModelsCodeFindingPriorityExploitabilityAttackComplexityLabel: + enum: + - HIGH + - LOW + type: string + ModelsCodeFindingPriorityExploitabilityAttackComplexityPrivilegesRequired: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityAttackComplexityPrivilegesRequiredLabel' + nullable: true + type: object + ModelsCodeFindingPriorityExploitabilityAttackComplexityPrivilegesRequiredLabel: + enum: + - AUTHENTICATED + - PRIVILEGED + - UNAUTHENTICATED + type: string + ModelsCodeFindingPriorityExploitabilityAttackVector: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityAttackVectorLabel' + subVector: + items: + $ref: '#/components/schemas/ModelsCodeFindingPriorityExploitabilityAttackVectorSubVectorElem' + nullable: true + type: array + type: object + ModelsCodeFindingPriorityExploitabilityAttackVectorLabel: + enum: + - ADJACENT + - LOCAL + - NETWORK + - PHYSICAL + type: string + ModelsCodeFindingPriorityExploitabilityAttackVectorSubVectorElem: + enum: + - LOCAL_COMMAND_LINE_ARGUMENT + - LOCAL_CONFIGURATION_FILE + - LOCAL_ENVIRONMENT_VARIABLE + - LOCAL_FILE_CONTENT + - LOCAL_FILE_NAME + - LOCAL_FILE_PATH + - NETWORK_GRAPHQL_QUERY + - NETWORK_HTTP_BODY + - NETWORK_HTTP_HEADER + - NETWORK_HTTP_PATH_PARAMETER + - NETWORK_HTTP_QUERY_PARAMETER + - NETWORK_TCP + type: string + ModelsCodeFindingPriorityExploitabilityLabel: + enum: + - LIKELY + - NEUTRAL + - UNLIKELY + type: string + ModelsCodeFindingPriorityFixEffort: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsCodeFindingPriorityFixEffortLabel' + type: object + ModelsCodeFindingPriorityFixEffortLabel: + enum: + - EASY + - HARD + - MEDIUM + type: string + ModelsCodeFindingPrioritySeverity: + properties: + availability: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityAvailability' + businessCriticality: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityBusinessCriticality' + confidentiality: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityConfidentiality' + description: + nullable: true + type: string + integrity: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityIntegrity' + label: + $ref: '#/components/schemas/ModelsSeverityEnum' + type: object + ModelsCodeFindingPrioritySeverityAvailability: + properties: + cause: + items: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityAvailabilityCauseElem' + type: array + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityAvailabilityLabel' + type: object + ModelsCodeFindingPrioritySeverityAvailabilityCauseElem: + enum: + - BUFFER_OVERFLOW + - INFINITE_LOOP + - MEMORY_LEAK + - RESOURCE_EXHAUSTION + type: string + ModelsCodeFindingPrioritySeverityAvailabilityLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsCodeFindingPrioritySeverityBusinessCriticality: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityBusinessCriticalityLabel' + nullable: true + type: object + ModelsCodeFindingPrioritySeverityBusinessCriticalityLabel: + enum: + - HIGH + - LOW + - MEDIUM + type: string + ModelsCodeFindingPrioritySeverityConfidentiality: + properties: + dataLeaked: + items: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityConfidentialityDataLeakedElem' + nullable: true + type: array + label: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityConfidentialityLabel' + type: object + ModelsCodeFindingPrioritySeverityConfidentialityDataLeakedElem: + enum: + - ADDRESS + - AGE + - AUTHENTICATION_DATA + - BANK_ACCOUNT_INFORMATION + - BIOMETRIC_DATA + - CALL_LOGS + - CLIENT_AND_VENDOR_INFORMATION + - COMPLIANCE_RECORDS + - CREDIT_DEBIT_CARD_DETAILS + - DEVICE_IDENTIFIERS + - DRIVERS_LICENSE + - EDUCATION_RECORDS + - EMAIL_ADDRESS + - EMAILS_AND_MESSAGES + - EMPLOYMENT_HISTORY + - GENDER + - INCOME_AND_TAX_INFORMATION + - INTELLECTUAL_PROPERTY + - INVENTORY_DATA + - INVESTMENT_INFORMATION + - IP_ADDRESSES + - LEGAL_DOCUMENTS + - MEDICAL_DATA + - NAME + - OTHER_PRIVATE_NON_SENSITIVE_DATA + - OTHER_PRIVATE_SENSITIVE_DATA + - OTHER_PUBLIC_DATA + - PASSPORT + - PERFORMANCE_REVIEWS + - POLITICAL_OPINIONS + - RACIAL_OR_ETHNIC_ORIGIN + - RELIGIOUS_OR_PHILOSOPHICAL_BELIEFS + - SALARY_AND_BENEFITS_INFORMATION + - SEXUAL_ORIENTATION + - SOCIAL_MEDIA_INTERACTIONS + - SOCIAL_SECURITY_NUMBER + - STRATEGIC_PLANS_AND_FORECASTS + - SYSTEM_LOGS_AND_MONITORING_DATA + - TRADE_SECRETS + - TRANSACTION_HISTORY + type: string + ModelsCodeFindingPrioritySeverityConfidentialityLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsCodeFindingPrioritySeverityIntegrity: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityIntegrityLabel' + type: + items: + $ref: '#/components/schemas/ModelsCodeFindingPrioritySeverityIntegrityTypeElem' + nullable: true + type: array + type: object + ModelsCodeFindingPrioritySeverityIntegrityLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsCodeFindingPrioritySeverityIntegrityTypeElem: + enum: + - BEHAVIOUR_MANIPULATED + - DATABASE_ALTERED + - MALWARE_IMPANTED + type: string + ModelsConfigValidationError: + properties: + code: + $ref: '#/components/schemas/ModelsConfigValidationErrorCode' + message: + type: string + path: + type: string + type: object + ModelsConfigValidationErrorCode: + enum: + - none + - overlap + - unknown_enum_value + - duplicate_suite_policy + - duplicate_vuln_class_rule + - empty_scope + - missing_credential_for_auth_suite + - invalid_override + - unsupported_override + - unsupported_selector_kind + - forbidden_scope + type: string + ModelsCredential: + properties: + config: + $ref: '#/components/schemas/ModelsCredentialConfig' + createdAt: + format: date-time + type: string + deletedAt: + format: date-time + nullable: true + type: string + deletedBy: + type: string + description: + type: string + id: + type: string + isDeleted: + type: boolean + lastUsed: + format: date-time + nullable: true + type: string + lastValidatedAt: + format: date-time + nullable: true + type: string + name: + type: string + tenantId: + type: string + type: + $ref: '#/components/schemas/ModelsCredentialType' + updatedAt: + format: date-time + type: string + usageCount: + type: integer + validationEvidence: + $ref: '#/components/schemas/ModelsValidationEvidence' + required: + - id + - tenantId + - name + - description + - type + - config + - createdAt + - updatedAt + - usageCount + - isDeleted + type: object + ModelsCredentialBinding: + properties: + credentialId: + type: string + scope: + $ref: '#/components/schemas/ModelsCredentialBindingScope' + selector: + $ref: '#/components/schemas/ModelsAssetSelector' + suites: + items: + $ref: '#/components/schemas/ModelsTestSuite' + nullable: true + type: array + type: object + ModelsCredentialBindingScope: + enum: + - '' + - asset + - domain + - wildcard + type: string + ModelsCredentialConfig: + properties: + apiKey: + type: string + authUrl: + type: string + clientId: + type: string + clientSecret: + type: string + hints: + type: string + loginUrl: + type: string + password: + type: string + scope: + type: string + token: + type: string + tokenPath: + type: string + tokenType: + type: string + tokenUrl: + type: string + username: + type: string + type: object + ModelsCredentialType: + enum: + - basic + - bearer + - api_key + - oauth2 + - browser + - custom + type: string + ModelsCustomerQuestion: + properties: + answer: {} + answerMemoryId: + nullable: true + type: string + answeredAt: + format: date-time + nullable: true + type: string + customMessage: + nullable: true + type: string + findingIds: + items: + type: string + type: array + id: + type: string + options: + items: + $ref: '#/components/schemas/ModelsCustomerQuestionOptionsElem' + type: array + questionText: + type: string + questionType: + $ref: '#/components/schemas/ModelsCustomerQuestionQuestionType' + relatedMemoryIds: + items: + type: string + type: array + scope: + $ref: '#/components/schemas/ModelsCustomerQuestionScope' + scopeResourceId: + nullable: true + type: string + unknownIds: + items: + type: string + type: array + type: object + ModelsCustomerQuestionOptionsElem: + properties: + id: + type: string + label: + type: string + value: + type: string + type: object + ModelsCustomerQuestionQuestionType: + enum: + - FREE_TEXT + - MULTI_SELECT + - SINGLE_SELECT + - YES_NO + type: string + ModelsCustomerQuestionScope: + enum: + - CLOUD + - ORGANIZATION + - REPOSITORY + type: string + ModelsCustomerQuestionSet: + properties: + customMessage: + nullable: true + type: string + generatedMemoryIds: + items: + type: string + type: array + id: + type: string + questions: + items: + $ref: '#/components/schemas/ModelsCustomerQuestion' + nullable: true + type: array + type: object + ModelsDASTEventInterface: + properties: + data: {} + id: + type: string + time: + type: string + type: + $ref: '#/components/schemas/EventsEventType' + required: + - id + - time + - type + - data + type: object + ModelsDNSEnumerationOverride: + properties: + includeSubdomains: + type: boolean + maxSubdomainsPerDomain: + type: integer + useCertificateTransparency: + type: boolean + type: object + ModelsDependencyFinding: + properties: + campaignIds: + items: + type: string + type: array + commitSha: + nullable: true + type: string + dossier: + $ref: '#/components/schemas/ModelsDependencyFindingDossier' + falsePositiveReason: + nullable: true + type: string + filePath: + type: string + hasReachableCVEs: + nullable: true + type: boolean + id: + nullable: true + type: string + isAutoFixable: + nullable: true + type: boolean + isCloudTriaged: + nullable: true + type: boolean + isDirect: + type: boolean + isFalsePositive: + nullable: true + type: boolean + isResolved: + nullable: true + type: boolean + isStaticReachabilitySupported: + nullable: true + type: boolean + line: + nullable: true + type: integer + package: + type: string + packageFilePath: + nullable: true + type: string + repository: + nullable: true + type: string + repositoryId: + nullable: true + type: string + resolvedWithoutLockfile: + nullable: true + type: boolean + triage: + $ref: '#/components/schemas/ModelsTriage' + version: + type: string + vulnerabilities: + items: + $ref: '#/components/schemas/ModelsDependencyFindingVulnerabilitiesElem' + type: array + type: object + ModelsDependencyFindingDossier: + properties: + cves: + items: + $ref: '#/components/schemas/ModelsDependencyFindingDossierCvesElem' + nullable: true + type: array + deptree: + $ref: '#/components/schemas/ModelsDependencyFindingDossierDeptree' + emitted_at: + format: date-time + type: string + input_hash: + type: string + package: + type: string + package_group_id: + type: string + path: + $ref: '#/components/schemas/ModelsDependencyFindingDossierPath' + reachability: + $ref: '#/components/schemas/ModelsDependencyFindingDossierReachability' + scanner_version: + type: string + v: + type: integer + version: + type: string + type: object + ModelsDependencyFindingDossierCvesElem: + properties: + has_fix: + type: boolean + id: + type: string + severity: + type: string + type: object + ModelsDependencyFindingDossierDeptree: + properties: + depth: + nullable: true + type: integer + direct: + type: boolean + scope: + $ref: '#/components/schemas/ModelsDependencyFindingDossierDeptreeScope' + type: object + ModelsDependencyFindingDossierDeptreeScope: + enum: + - DEV + - OPTIONAL + - PROD + - TEST + - UNKNOWN + type: string + ModelsDependencyFindingDossierPath: + properties: + category: + $ref: '#/components/schemas/ModelsDependencyFindingDossierPathCategory' + confidence: + $ref: '#/components/schemas/ModelsDependencyFindingDossierPathConfidence' + reason: + nullable: true + type: string + type: object + ModelsDependencyFindingDossierPathCategory: + enum: + - GENERATED + - LOCKFILE_ONLY + - SOURCE + - TEST + - UNKNOWN + - VENDORED + type: string + ModelsDependencyFindingDossierPathConfidence: + enum: + - AMBIGUOUS + - HIGH + - LOW + - MEDIUM + type: string + ModelsDependencyFindingDossierReachability: + properties: + called: + type: boolean + confidence: + $ref: '#/components/schemas/ModelsDependencyFindingDossierReachabilityConfidence' + method: + $ref: '#/components/schemas/ModelsDependencyFindingDossierReachabilityMethod' + type: object + ModelsDependencyFindingDossierReachabilityConfidence: + enum: + - AMBIGUOUS + - HIGH + - LOW + - MEDIUM + type: string + ModelsDependencyFindingDossierReachabilityMethod: + enum: + - COMBINED + - OSV + - TIMEOUT + - TREESITTER + - UNSUPPORTED + type: string + ModelsDependencyFindingVulnerabilitiesElem: + properties: + cves: + items: + $ref: '#/components/schemas/ModelsDependencyFindingVulnerabilitiesElemCvesElem' + nullable: true + type: array + details: + nullable: true + type: string + fixed: + type: string + hasFix: + type: boolean + id: + type: string + introduced: + type: string + severity: + type: string + title: + type: string + version: + type: string + type: object + ModelsDependencyFindingVulnerabilitiesElemCvesElem: + properties: + cisaKev: + nullable: true + type: boolean + cvss: + nullable: true + type: number + exploitability: + nullable: true + type: string + id: + type: string + osvReachability: + $ref: '#/components/schemas/ModelsDependencyFindingVulnerabilitiesElemCvesElemOsvReachability' + reachabilityConfidence: + nullable: true + type: string + reachabilityEvidence: + nullable: true + type: string + reachabilityMethod: + nullable: true + type: string + reachable: + nullable: true + type: boolean + vectorString: + nullable: true + type: string + type: object + ModelsDependencyFindingVulnerabilitiesElemCvesElemOsvReachability: + properties: + called: + type: boolean + type: object + ModelsExecutiveSummary: + properties: + executiveSummaryFirstParagraph: + type: string + executiveSummaryRest: + type: string + topRecommendations: + items: + type: string + nullable: true + type: array + topRisks: + items: + type: string + nullable: true + type: array + required: + - executiveSummaryFirstParagraph + - executiveSummaryRest + - topRisks + - topRecommendations + type: object + ModelsExploitAnalysisStage: + properties: + approach: + type: string + description: + type: string + findingsAnalyzed: + type: integer + required: + - description + - approach + - findingsAnalyzed + type: object + ModelsFindingSummary: + properties: + affectedAsset: + type: string + id: + type: string + reference: + nullable: true + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + source: + type: string + title: + type: string + required: + - id + - title + - affectedAsset + - severity + - source + type: object + ModelsFullBackendPentestOverride: + properties: + maxPortsPerHost: + type: integer + maxSeconds: + type: integer + type: object + ModelsGroupedAgentLog: + properties: + logs: + items: {} + nullable: true + type: array + summary: + type: string + required: + - summary + - logs + type: object + ModelsLightweightBackendPentestOverride: + properties: + maxRequestsPerEndpoint: + type: integer + maxSeconds: + type: integer + type: object + ModelsMalwareScanOverride: + properties: + heuristicOnly: + type: boolean + maxArtifacts: + type: integer + type: object + ModelsMethodology: + properties: + authMatrixStage: + $ref: '#/components/schemas/ModelsAuthMatrixStage' + exploitAnalysisStage: + $ref: '#/components/schemas/ModelsExploitAnalysisStage' + toolsStage: + $ref: '#/components/schemas/ModelsToolsStage' + type: object + ModelsNetworkLog: + properties: + timestamp: + format: date-time + type: string + transactions: + items: + $ref: '#/components/schemas/ModelsNetworkTransaction' + nullable: true + type: array + required: + - timestamp + - transactions + type: object + ModelsNetworkLogsSummary: + properties: + logFileReferences: + items: + type: string + type: array + totalRequests: + type: integer + required: + - totalRequests + type: object + ModelsNetworkRequest: + properties: + body: + nullable: true + type: string + headers: + additionalProperties: + type: string + type: object + method: + type: string + url: + type: string + required: + - method + - url + type: object + ModelsNetworkResponse: + properties: + body: + nullable: true + type: string + headers: + additionalProperties: + type: string + type: object + statusCode: + type: integer + required: + - statusCode + type: object + ModelsNetworkTransaction: + properties: + authRedacted: + nullable: true + type: boolean + correlationId: + nullable: true + type: string + durationMs: + nullable: true + type: number + endTime: + format: date-time + nullable: true + type: string + error: + nullable: true + type: string + protocol: + nullable: true + type: string + request: + $ref: '#/components/schemas/ModelsNetworkRequest' + response: + $ref: '#/components/schemas/ModelsNetworkResponse' + startTime: + format: date-time + nullable: true + type: string + required: + - request + type: object + ModelsNetworkTransactionsSummary: + properties: + logFileReferences: + items: + type: string + type: array + totalRequests: + type: integer + required: + - totalRequests + type: object + ModelsNucleiScanOverride: + properties: + excludeTags: + items: + type: string + type: array + includeTags: + items: + type: string + type: array + rateLimit: + type: integer + severityFloor: + $ref: '#/components/schemas/ModelsSeverityFloor' + type: object + ModelsPentestAbortCategory: + enum: + - config_error + - agent_crash + type: string + ModelsPentestAbortCode: + enum: + - credentials_invalid + - target_unreachable + - missing_app_context + - missing_api_schema + - agent_crash_pentest_tools + - agent_crash_auth_matrix + - agent_crash_exploit_analysis + - agent_crash_report + - agent_crash_unknown + type: string + ModelsPentestAbortReason: + properties: + agentName: + type: string + category: + $ref: '#/components/schemas/ModelsPentestAbortCategory' + code: + $ref: '#/components/schemas/ModelsPentestAbortCode' + deepLinkRef: + type: string + fixHint: + type: string + message: + type: string + timestamp: + format: date-time + type: string + required: + - code + - category + - message + - timestamp + type: object + ModelsPentestAssessmentPhase: + properties: + durationSeconds: + format: double + type: number + endTime: + format: date-time + nullable: true + type: string + groupedLogs: + items: + $ref: '#/components/schemas/ModelsGroupedAgentLog' + type: array + hypotheses: + items: + $ref: '#/components/schemas/ModelsPentestHypothesis' + type: array + langfuseTraceId: + type: string + langfuseTraceUrl: + type: string + logs: + items: {} + type: array + name: + type: string + startTime: + format: date-time + type: string + status: + type: string + usageMetrics: + $ref: '#/components/schemas/ModelsPentestPhaseUsageMetrics' + required: + - name + - startTime + type: object + ModelsPentestAuthMatrixHypothesis: + properties: + falseReason: + nullable: true + type: string + findingId: + nullable: true + type: string + hypothesis: + type: string + isInsecure: + type: boolean + logs: + $ref: '#/components/schemas/AgentsAgentLogs' + required: + - hypothesis + - isInsecure + type: object + ModelsPentestAuthMatrixResult: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsPentestFinding' + type: array + hypotheses: + items: + $ref: '#/components/schemas/ModelsPentestAuthMatrixHypothesis' + type: array + type: object + ModelsPentestEndpointMetrics: + properties: + fuzzed: + type: integer + tested: + type: integer + total: + type: integer + vulnerable: + type: integer + required: + - total + - fuzzed + - tested + - vulnerable + type: object + ModelsPentestExploitAnalysisResult: + properties: + updatedCodeFindings: + items: + $ref: '#/components/schemas/ModelsCodeFinding' + type: array + updatedDependencyFindings: + items: + $ref: '#/components/schemas/ModelsDependencyFinding' + type: array + type: object + ModelsPentestFinding: + properties: + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + allowlistedReason: + type: string + api: + $ref: '#/components/schemas/ModelsPentestFindingAPI' + authMatrix: + $ref: '#/components/schemas/ModelsPentestFindingAuthMatrix' + autoFixCurrentActivity: + type: string + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictExplanation: + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + budgetExhausted: + type: boolean + budgetLimit: + format: double + type: number + budgetUsed: + format: double + type: number + concurrencyLimit: + type: integer + createdAt: + format: date-time + type: string + cwe: + type: integer + endpoint: + $ref: '#/components/schemas/ModelsPentestFindingEndpoint' + host: + type: string + id: + type: string + isAllowlisted: + type: boolean + isAutoFixable: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isFixed: + type: boolean + isLatest: + type: boolean + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityEnum' + priorityScore: + type: integer + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + type: array + repository: + type: string + repositoryId: + type: string + repositoryName: + type: string + scanInfo: + $ref: '#/components/schemas/ModelsPentestFindingScanInfo' + source: + $ref: '#/components/schemas/ModelsPentestFindingSource' + summary: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + title: + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + updatedAt: + format: date-time + type: string + userRole: + type: string + userRoleDescription: + type: string + required: + - id + - scanInfo + - title + - summary + - cwe + - source + - endpoint + - host + - isLatest + - isFixed + - isAllowlisted + - allowlistedReason + - createdAt + - updatedAt + - isAutoFixable + - priorityLabel + - priorityScore + type: object + ModelsPentestFindingAPI: + properties: + errorDescription: + type: string + errorType: + type: string + httpVersion: + type: string + method: + type: string + path: + type: string + previousResponse: + type: string + queryParameters: + $ref: '#/components/schemas/ModelsPentestFindingRESTQueryParameters' + requestBody: + type: string + requestHeader: + $ref: '#/components/schemas/ModelsPentestFindingRESTRequestHeader' + responseBody: + type: string + responseHeader: + $ref: '#/components/schemas/ModelsPentestFindingRESTResponseHeader' + severity: + $ref: '#/components/schemas/ModelsSeverity' + solution: + type: string + uri: + type: string + vulnerableParameterName: + type: string + vulnerableParameterValue: + type: string + required: + - severity + - solution + - errorDescription + - errorType + - httpVersion + - method + - path + - previousResponse + - queryParameters + - requestBody + - requestHeader + - responseBody + - responseHeader + - uri + - vulnerableParameterName + - vulnerableParameterValue + type: object + ModelsPentestFindingAuthMatrix: + properties: + hypothesis: + type: string + user: + $ref: '#/components/schemas/ModelsPentestFindingAuthMatrixUser' + required: + - hypothesis + type: object + ModelsPentestFindingAuthMatrixUser: + properties: + roleDescription: + type: string + roleName: + type: string + userName: + type: string + required: + - userName + - roleName + - roleDescription + type: object + ModelsPentestFindingEndpoint: + properties: + method: + type: string + path: + type: string + required: + - method + - path + type: object + ModelsPentestFindingMetrics: + properties: + fixed: + type: integer + new: + type: integer + total: + type: integer + unfixed: + type: integer + required: + - total + - new + - fixed + - unfixed + type: object + ModelsPentestFindingRESTQueryParameters: + additionalProperties: + type: string + type: object + ModelsPentestFindingRESTRequestHeader: + additionalProperties: + type: string + type: object + ModelsPentestFindingRESTResponseHeader: + additionalProperties: + type: string + type: object + ModelsPentestFindingScanInfo: + properties: + appId: + type: string + scanId: + type: string + scanType: + $ref: '#/components/schemas/ModelsPentestFindingScanType' + targetUrl: + type: string + required: + - scanId + - scanType + - appId + - targetUrl + type: object + ModelsPentestFindingScanType: + enum: + - API + - AuthMatrix + type: string + ModelsPentestFindingSource: + enum: + - AIPenTester + - Nuclei + - Nmap + - ZAP + - RESTler + type: string + ModelsPentestHypothesis: + properties: + description: + type: string + endpoint: + type: string + evidence: + items: + $ref: '#/components/schemas/ModelsPentestHypothesisEvidence' + type: array + id: + type: string + result: + type: string + role: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + title: + type: string + required: + - id + - title + - description + - severity + - result + type: object + ModelsPentestHypothesisEvidence: + properties: + notes: + type: string + request: + $ref: '#/components/schemas/ModelsNetworkRequest' + response: + $ref: '#/components/schemas/ModelsNetworkResponse' + type: object + ModelsPentestMetadata: + properties: + description: + type: string + langfuseTraceIds: + items: + type: string + nullable: true + type: array + required: + - description + - langfuseTraceIds + type: object + ModelsPentestMetrics: + properties: + endpointMetrics: + $ref: '#/components/schemas/ModelsPentestEndpointMetrics' + findingMetrics: + $ref: '#/components/schemas/ModelsPentestFindingMetrics' + numUsers: + type: integer + requestMetrics: + $ref: '#/components/schemas/ModelsPentestRequestMetrics' + usageMetrics: + $ref: '#/components/schemas/ModelsPentestUsageMetrics' + required: + - numUsers + - endpointMetrics + - requestMetrics + - findingMetrics + - usageMetrics + type: object + ModelsPentestPhaseUsageMetrics: + properties: + cacheHitCost: + format: double + type: number + cacheHitTokenCount: + type: integer + cacheWriteCost: + format: double + type: number + cacheWriteTokenCount: + type: integer + inputCost: + format: double + type: number + inputTokenCount: + type: integer + outputCost: + format: double + type: number + outputTokenCount: + type: integer + totalCost: + format: double + type: number + required: + - inputTokenCount + - outputTokenCount + - cacheHitTokenCount + - cacheWriteTokenCount + - inputCost + - outputCost + - cacheHitCost + - cacheWriteCost + - totalCost + type: object + ModelsPentestPreflight: + properties: + applicationId: + type: string + endTime: + format: date-time + nullable: true + type: string + executionArn: + type: string + failureReason: + nullable: true + type: string + id: + type: string + lastScanId: + nullable: true + type: string + runStatus: + $ref: '#/components/schemas/ModelsPentestPreflightRunStatus' + startTime: + format: date-time + type: string + summary: + $ref: '#/components/schemas/ModelsPentestPreflightSummary' + tenantId: + type: string + triggeredByScan: + type: boolean + required: + - id + - tenantId + - applicationId + - runStatus + - startTime + type: object + ModelsPentestPreflightAppContextSnapshot: + properties: + apiEndpointCount: + type: integer + apiEndpointsSample: + items: + type: string + type: array + apiSchemaSourceRef: + type: string + components: + items: + $ref: '#/components/schemas/ModelsPentestPreflightComponentSnapshot' + nullable: true + type: array + type: object + ModelsPentestPreflightCheck: + properties: + category: + $ref: '#/components/schemas/ModelsPentestPreflightCheckCategory' + deepLinkRef: + type: string + fixHint: + type: string + message: + type: string + name: + type: string + status: + $ref: '#/components/schemas/ModelsPentestPreflightStatus' + required: + - name + - category + - status + - message + type: object + ModelsPentestPreflightCheckCategory: + enum: + - credentials + - context + - sast_findings + - sca_findings + - reachability + - target_url + - budget + type: string + ModelsPentestPreflightComponentSnapshot: + properties: + commitHash: + type: string + componentId: + type: string + name: + type: string + repositoryId: + type: string + type: object + ModelsPentestPreflightConfidence: + enum: + - low + - medium + - high + type: string + ModelsPentestPreflightCredentialResult: + properties: + credentialId: + type: string + evidence: + $ref: '#/components/schemas/ModelsValidationEvidence' + status: + $ref: '#/components/schemas/ModelsValidationStatus' + required: + - credentialId + - status + type: object + ModelsPentestPreflightFindingKind: + enum: + - sast + - sca + type: string + ModelsPentestPreflightPentestEstimate: + properties: + basedOnHistoricalRuns: + type: integer + confidence: + $ref: '#/components/schemas/ModelsPentestPreflightConfidence' + durationSeconds: + type: integer + llmCostUsdCents: + format: int64 + type: integer + tokens: + $ref: '#/components/schemas/ModelsPentestPreflightTokenEstimate' + required: + - durationSeconds + - llmCostUsdCents + - confidence + type: object + ModelsPentestPreflightReachableFinding: + properties: + findingId: + type: string + isInternetFacing: + type: boolean + kind: + $ref: '#/components/schemas/ModelsPentestPreflightFindingKind' + reachabilityPath: + items: + type: string + type: array + severity: + $ref: '#/components/schemas/ModelsSeverity' + title: + type: string + required: + - findingId + - kind + - severity + - title + type: object + ModelsPentestPreflightRunStatus: + enum: + - queued + - in_progress + - completed + - failed + type: string + ModelsPentestPreflightStatus: + enum: + - cannot_run + - can_run_with_warnings + - ready + type: string + ModelsPentestPreflightSummary: + properties: + appContextSnapshot: + $ref: '#/components/schemas/ModelsPentestPreflightAppContextSnapshot' + checks: + items: + $ref: '#/components/schemas/ModelsPentestPreflightCheck' + nullable: true + type: array + generatedAt: + format: date-time + type: string + pentestEstimate: + $ref: '#/components/schemas/ModelsPentestPreflightPentestEstimate' + reachableFindings: + items: + $ref: '#/components/schemas/ModelsPentestPreflightReachableFinding' + type: array + status: + $ref: '#/components/schemas/ModelsPentestPreflightStatus' + summary: + type: string + validatedCredentials: + items: + $ref: '#/components/schemas/ModelsPentestPreflightCredentialResult' + type: array + required: + - status + - summary + - generatedAt + - checks + type: object + ModelsPentestPreflightTokenEstimate: + properties: + input: + format: int64 + type: integer + output: + format: int64 + type: integer + type: object + ModelsPentestRateLimit: + properties: + burstSize: + type: integer + requestsPerSecond: + type: integer + required: + - requestsPerSecond + type: object + ModelsPentestReport: + properties: + appendices: + $ref: '#/components/schemas/ModelsAppendices' + assessmentPeriod: + $ref: '#/components/schemas/ModelsAssessmentPeriod' + authMatrixResult: + $ref: '#/components/schemas/ModelsPentestAuthMatrixResult' + executiveSummary: + $ref: '#/components/schemas/ModelsExecutiveSummary' + exploitAnalysisResult: + $ref: '#/components/schemas/ModelsPentestExploitAnalysisResult' + findingsSummary: + items: + $ref: '#/components/schemas/ModelsFindingSummary' + type: array + limitations: + type: string + metadata: + $ref: '#/components/schemas/ModelsPentestMetadata' + methodology: + $ref: '#/components/schemas/ModelsMethodology' + metrics: + $ref: '#/components/schemas/ModelsPentestMetrics' + networkTransactionsSummary: + $ref: '#/components/schemas/ModelsNetworkTransactionsSummary' + pentestToolsResult: + $ref: '#/components/schemas/ModelsPentestToolsResult' + reportMetadata: + $ref: '#/components/schemas/ModelsReportMetadata' + retestPolicy: + type: string + scanId: + type: string + scope: + $ref: '#/components/schemas/ModelsReportScope' + required: + - scanId + - metadata + - metrics + type: object + ModelsPentestRequestMetrics: + properties: + error: + type: integer + fail: + additionalProperties: + type: integer + nullable: true + type: object + success: + type: integer + timeout: + type: integer + total: + type: integer + required: + - success + - fail + - timeout + - error + - total + type: object + ModelsPentestScan: + properties: + abortReason: + $ref: '#/components/schemas/ModelsPentestAbortReason' + appId: + type: string + assessmentPhases: + items: + $ref: '#/components/schemas/ModelsPentestAssessmentPhase' + type: array + endTime: + format: date-time + nullable: true + type: string + executionArn: + type: string + failureReason: + nullable: true + type: string + findingIds: + items: + type: string + nullable: true + type: array + id: + type: string + isExternal: + type: boolean + networkLogs: + items: + $ref: '#/components/schemas/ModelsNetworkLog' + type: array + progress: + type: integer + startTime: + format: date-time + type: string + status: + $ref: '#/components/schemas/ModelsScanStatus' + tenantId: + type: string + totalCost: + $ref: '#/components/schemas/ModelsPentestScanCostSummary' + required: + - id + - tenantId + - appId + - progress + - status + - startTime + - findingIds + - isExternal + - executionArn + type: object + ModelsPentestScanConfig: + properties: + apiType: + $ref: '#/components/schemas/ModelsAPIType' + attackMode: + type: string + attackStrength: + type: string + disabledChecks: + items: + type: string + type: array + enabledChecks: + items: + type: string + type: array + excludePatterns: + items: + type: string + type: array + includePatterns: + items: + type: string + type: array + isExternal: + type: boolean + maxDepth: + type: integer + maxDurationMinutes: + type: integer + rateLimit: + $ref: '#/components/schemas/ModelsPentestRateLimit' + requestTimeoutSeconds: + type: integer + scannerType: + type: string + scannerVersion: + type: string + targetUrl: + type: string + threadCount: + type: integer + userAgents: + items: + type: string + type: array + required: + - isExternal + - apiType + - targetUrl + type: object + ModelsPentestScanCostSummary: + properties: + costByPhase: + additionalProperties: + $ref: '#/components/schemas/ModelsPentestPhaseUsageMetrics' + type: object + totalCacheHitCost: + format: double + type: number + totalCacheHitTokens: + type: integer + totalCacheWriteCost: + format: double + type: number + totalCacheWriteTokens: + type: integer + totalCost: + format: double + type: number + totalInputCost: + format: double + type: number + totalInputTokens: + type: integer + totalOutputCost: + format: double + type: number + totalOutputTokens: + type: integer + required: + - totalInputTokens + - totalOutputTokens + - totalCacheHitTokens + - totalCacheWriteTokens + - totalInputCost + - totalOutputCost + - totalCacheHitCost + - totalCacheWriteCost + - totalCost + type: object + ModelsPentestToolsResult: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsPentestFinding' + type: array + type: object + ModelsPentestUsageMetrics: + properties: + cacheHitCost: + format: double + type: number + cacheWriteCost: + format: double + type: number + inputCost: + format: double + type: number + inputTokenCount: + type: integer + outputCost: + format: double + type: number + outputTokenCount: + type: integer + totalCost: + format: double + type: number + required: + - totalCost + - inputCost + - outputCost + - cacheWriteCost + - cacheHitCost + - inputTokenCount + - outputTokenCount + type: object + ModelsPortScanOverride: + properties: + aggressiveMode: + type: boolean + customPortRanges: + type: string + rateLimitAllHosts: + type: integer + rateLimitPerHost: + type: integer + serviceDetection: + type: boolean + threadCount: + type: integer + type: object + ModelsPriorityEnum: + enum: + - FALSE_POSITIVE + - IMPORTANT + - NEGLIGIBLE + - URGENT + type: string + ModelsReportMetadata: + properties: + authors: + items: + $ref: '#/components/schemas/ModelsAuthor' + type: array + classification: + type: string + client: + type: string + reportVersion: + type: string + title: + type: string + required: + - client + - title + - reportVersion + - classification + type: object + ModelsReportScope: + properties: + targetDescription: + nullable: true + type: string + targetUrl: + type: string + users: + items: + $ref: '#/components/schemas/ModelsScopeUser' + nullable: true + type: array + required: + - targetUrl + - users + type: object + ModelsSPACheckOverride: + properties: + checkLeakedEnv: + type: boolean + checkSourceMaps: + type: boolean + type: object + ModelsScopePolicy: + properties: + exclude: + items: + $ref: '#/components/schemas/ModelsAssetSelector' + nullable: true + type: array + include: + items: + $ref: '#/components/schemas/ModelsAssetSelector' + nullable: true + type: array + type: object + ModelsScopeUser: + properties: + name: + type: string + roleDescription: + type: string + required: + - name + - roleDescription + type: object + ModelsSeverityEnum: + enum: + - CRITICAL + - HIGH + - INFORMATIONAL + - LOW + - MEDIUM + type: string + ModelsSeverityFloor: + enum: + - '' + - info + - low + - medium + - high + - critical + type: string + ModelsTagQueryAST: + properties: + children: + items: + $ref: '#/components/schemas/ModelsTagQueryAST' + type: array + key: + type: string + op: + $ref: '#/components/schemas/ModelsTagQueryOp' + value: + type: string + type: object + ModelsTagQueryOp: + enum: + - AND + - OR + - EQ + type: string + ModelsTestSuite: + enum: + - '' + - dns_enumeration + - port_scan + - web_fingerprint + - nuclei_scan + - browser_use + - authenticated_walk + - spa_check + - malware_scan + - lightweight_backend_pentest + - full_backend_pentest + - auth_matrix + type: string + ModelsTestSuiteOverride: + properties: + authMatrix: + $ref: '#/components/schemas/ModelsAuthMatrixOverride' + authenticatedWalk: + $ref: '#/components/schemas/ModelsAuthenticatedWalkOverride' + browserUse: + $ref: '#/components/schemas/ModelsBrowserUseOverride' + dnsEnumeration: + $ref: '#/components/schemas/ModelsDNSEnumerationOverride' + fullBackendPentest: + $ref: '#/components/schemas/ModelsFullBackendPentestOverride' + lightweightBackendPentest: + $ref: '#/components/schemas/ModelsLightweightBackendPentestOverride' + malwareScan: + $ref: '#/components/schemas/ModelsMalwareScanOverride' + nucleiScan: + $ref: '#/components/schemas/ModelsNucleiScanOverride' + portScan: + $ref: '#/components/schemas/ModelsPortScanOverride' + spaCheck: + $ref: '#/components/schemas/ModelsSPACheckOverride' + webFingerprint: + $ref: '#/components/schemas/ModelsWebFingerprintOverride' + type: object + ModelsTestSuitePolicy: + properties: + cadence: + $ref: '#/components/schemas/ModelsCadence' + enabled: + type: boolean + override: + $ref: '#/components/schemas/ModelsTestSuiteOverride' + suite: + $ref: '#/components/schemas/ModelsTestSuite' + type: object + ModelsToolOutputs: + properties: + rawFindingsCount: + type: integer + toolsUsed: + items: + type: string + type: array + triagedFindingsCount: + type: integer + required: + - rawFindingsCount + - triagedFindingsCount + type: object + ModelsToolsStage: + properties: + coverage: + type: string + description: + type: string + toolsUsed: + items: + type: string + nullable: true + type: array + required: + - description + - toolsUsed + - coverage + type: object + ModelsTriage: + properties: + budgetExhausted: + nullable: true + type: boolean + campaignMetadata: + $ref: '#/components/schemas/ModelsTriageCampaignMetadata' + cloudContext: + $ref: '#/components/schemas/ModelsTriageCloudContext' + customerQuestions: + $ref: '#/components/schemas/ModelsCustomerQuestionSet' + description: + nullable: true + type: string + devDescription: + nullable: true + type: string + devTitle: + nullable: true + type: string + evidence: + $ref: '#/components/schemas/GraphGraph' + exploitHypothesis: + $ref: '#/components/schemas/GraphGraph' + exploitability: + $ref: '#/components/schemas/ModelsTriageExploitability' + failedTriage: + nullable: true + type: boolean + fixEffort: + $ref: '#/components/schemas/ModelsTriageFixEffort' + id: + nullable: true + type: string + impact: + $ref: '#/components/schemas/ModelsTriageImpact' + lastTriagedAt: + format: date-time + nullable: true + type: string + memoriesGenerated: + items: + type: string + type: array + memoriesUsed: + items: + type: string + type: array + parentTriageId: + nullable: true + type: string + pentest: + $ref: '#/components/schemas/ModelsTriagePentest' + priority: + $ref: '#/components/schemas/ModelsPriorityEnum' + retriageMetadata: + $ref: '#/components/schemas/ModelsTriageRetriageMetadata' + retriageStatus: + $ref: '#/components/schemas/ModelsTriageRetriageStatus' + nullable: true + severity: + $ref: '#/components/schemas/ModelsTriageSeverity' + thoughts: + nullable: true + type: string + title: + nullable: true + type: string + version: + type: integer + type: object + ModelsTriageCampaignMetadata: + properties: + id: + type: string + name: + nullable: true + type: string + type: object + ModelsTriageCloudContext: + properties: + confidence: + nullable: true + type: number + mode: + $ref: '#/components/schemas/ModelsTriageCloudContextMode' + nullable: true + repos: + items: + type: string + type: array + thoughts: + nullable: true + type: string + type: object + ModelsTriageCloudContextMode: + enum: + - MODEA + - MODEB + type: string + ModelsTriageExploitability: + properties: + attackComplexity: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackComplexity' + attackRequirements: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirements' + attackVector: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackVector' + confidence: + $ref: '#/components/schemas/ModelsTriageExploitabilityConfidence' + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityLabel' + privilegesRequired: + $ref: '#/components/schemas/ModelsTriageExploitabilityPrivilegesRequired' + title: + nullable: true + type: string + unknowns: + items: + type: string + type: array + userInteraction: + $ref: '#/components/schemas/ModelsTriageExploitabilityUserInteraction' + type: object + ModelsTriageExploitabilityAttackComplexity: + properties: + description: + nullable: true + type: string + exploitChainRequired: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackComplexityExploitChainRequired' + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackComplexityLabel' + payloadDifficulty: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackComplexityPayloadDifficulty' + type: object + ModelsTriageExploitabilityAttackComplexityExploitChainRequired: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackComplexityExploitChainRequiredLabel' + nullable: true + title: + nullable: true + type: string + type: object + ModelsTriageExploitabilityAttackComplexityExploitChainRequiredLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageExploitabilityAttackComplexityLabel: + enum: + - HIGH + - LOW + type: string + ModelsTriageExploitabilityAttackComplexityPayloadDifficulty: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackComplexityPayloadDifficultyLabel' + nullable: true + type: object + ModelsTriageExploitabilityAttackComplexityPayloadDifficultyLabel: + enum: + - EASY + - HARD + - NONE + type: string + ModelsTriageExploitabilityAttackRequirements: + properties: + description: + nullable: true + type: string + environmentState: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsEnvironmentState' + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsLabel' + nullable: true + mitm: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsMitm' + raceCondition: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsRaceCondition' + timeWindow: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsTimeWindow' + title: + nullable: true + type: string + type: object + ModelsTriageExploitabilityAttackRequirementsEnvironmentState: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsEnvironmentStateLabel' + nullable: true + title: + nullable: true + type: string + type: object + ModelsTriageExploitabilityAttackRequirementsEnvironmentStateLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageExploitabilityAttackRequirementsLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageExploitabilityAttackRequirementsMitm: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsMitmLabel' + nullable: true + title: + nullable: true + type: string + type: object + ModelsTriageExploitabilityAttackRequirementsMitmLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageExploitabilityAttackRequirementsRaceCondition: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsRaceConditionLabel' + nullable: true + title: + nullable: true + type: string + type: object + ModelsTriageExploitabilityAttackRequirementsRaceConditionLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageExploitabilityAttackRequirementsTimeWindow: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackRequirementsTimeWindowLabel' + nullable: true + title: + nullable: true + type: string + type: object + ModelsTriageExploitabilityAttackRequirementsTimeWindowLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageExploitabilityAttackVector: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackVectorLabel' + subVectors: + items: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackVectorSubVectorsElem' + type: array + type: object + ModelsTriageExploitabilityAttackVectorLabel: + enum: + - ADJACENT + - LOCAL + - NETWORK + - PHYSICAL + type: string + ModelsTriageExploitabilityAttackVectorSubVectorsElem: + properties: + description: + nullable: true + type: string + otherVector: + nullable: true + type: string + vector: + $ref: '#/components/schemas/ModelsTriageExploitabilityAttackVectorSubVectorsElemVector' + nullable: true + type: object + ModelsTriageExploitabilityAttackVectorSubVectorsElemVector: + enum: + - ADJACENT_ARP_SPOOFING + - ADJACENT_BLE_ADVERTISING + - ADJACENT_BLUETOOTH_CLASSIC + - ADJACENT_BLUETOOTH_KNOB + - ADJACENT_IPV6_NEIGHBOR_DISCOVERY + - ADJACENT_MDNS + - ADJACENT_NETBIOS + - ADJACENT_NFC + - ADJACENT_OTHER + - ADJACENT_SMB + - ADJACENT_SSDP + - ADJACENT_THREAD + - ADJACENT_WIFI_DIRECT + - ADJACENT_ZIGBEE + - LOCAL_COMMAND_LINE_ARGUMENT + - LOCAL_CONFIGURATION_FILE + - LOCAL_CRON_JOB + - LOCAL_D-BUS_MESSAGE + - LOCAL_DOCKER_SOCKET + - LOCAL_ENVIRONMENT_VARIABLE + - LOCAL_FILE_CONTENT + - LOCAL_FILE_NAME + - LOCAL_FILE_PATH + - LOCAL_IPC_SOCKET + - LOCAL_OTHER + - LOCAL_SCRIPT_PLUGIN + - LOCAL_SHARED_LIBRARY_LOAD + - LOCAL_SHARED_MEMORY + - LOCAL_SHELL_COMMAND + - LOCAL_SUID_EXECUTABLE + - NETWORK_DNS + - NETWORK_FTP + - NETWORK_GRAPHQL_QUERY + - NETWORK_GRE + - NETWORK_HTTP_BODY + - NETWORK_HTTP_COOKIE + - NETWORK_HTTP_FILE_UPLOAD + - NETWORK_HTTP_HEADER + - NETWORK_HTTP_METHOD + - NETWORK_HTTP_PATH_PARAMETER + - NETWORK_HTTP_QUERY_PARAMETER + - NETWORK_ICMP + - NETWORK_IMAP + - NETWORK_IPSEC + - NETWORK_L2TP + - NETWORK_LDAP + - NETWORK_MQTT + - NETWORK_NTP + - NETWORK_OTHER + - NETWORK_POP3 + - NETWORK_RDP + - NETWORK_REST_ENDPOINTHYPERLINK_CLICK + - NETWORK_SCTP + - NETWORK_SIP + - NETWORK_SMB + - NETWORK_SMTP + - NETWORK_SNMP + - NETWORK_SOAP_REQUEST + - NETWORK_SSH + - NETWORK_TCP_PORT + - NETWORK_UDP_PORT + - NETWORK_WEBSOCKET_MESSAGE + - PHYSICAL_BIOS_JTAG + - PHYSICAL_BLUETOOTH + - PHYSICAL_EVIL_MAID + - PHYSICAL_FIREWIRE + - PHYSICAL_IR + - PHYSICAL_NFC + - PHYSICAL_OTHER + - PHYSICAL_RFID + - PHYSICAL_SD_CARD + - PHYSICAL_SDIO + - PHYSICAL_SIDE_CHANNEL + - PHYSICAL_TEMPEST + - PHYSICAL_THUNDERBOLT + - PHYSICAL_USB + type: string + ModelsTriageExploitabilityConfidence: + enum: + - HIGH + - LOW + - MEDIUM + type: string + ModelsTriageExploitabilityLabel: + enum: + - LIKELY + - NEUTRAL + - UNLIKELY + type: string + ModelsTriageExploitabilityPrivilegesRequired: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityPrivilegesRequiredLabel' + nullable: true + title: + nullable: true + type: string + types: + items: + $ref: '#/components/schemas/ModelsTriageExploitabilityPrivilegesRequiredTypesElem' + type: array + type: object + ModelsTriageExploitabilityPrivilegesRequiredLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageExploitabilityPrivilegesRequiredTypesElem: + enum: + - PRIVILEDGED_USER + - UNAUTHENTICATED + - UNVERIFIED_USER + - VERIFIED_USER + type: string + ModelsTriageExploitabilityUserInteraction: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageExploitabilityUserInteractionLabel' + nullable: true + otherTypes: + items: + type: string + type: array + title: + nullable: true + type: string + types: + items: + $ref: '#/components/schemas/ModelsTriageExploitabilityUserInteractionTypesElem' + type: array + type: object + ModelsTriageExploitabilityUserInteractionLabel: + enum: + - ACTIVE + - NONE + - PASSIVE + type: string + ModelsTriageExploitabilityUserInteractionTypesElem: + enum: + - BROWSING + - FILE_DOWNLOAD + - FILE_UPLOAD + - HYPERLINK_CLICK + - SOCIAL_ENGINEERING + type: string + ModelsTriageFixEffort: + properties: + confidence: + $ref: '#/components/schemas/ModelsTriageFixEffortConfidence' + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageFixEffortLabel' + title: + nullable: true + type: string + unknowns: + items: + type: string + type: array + type: object + ModelsTriageFixEffortConfidence: + enum: + - HIGH + - LOW + - MEDIUM + type: string + ModelsTriageFixEffortLabel: + enum: + - EASY + - HARD + - MEDIUM + type: string + ModelsTriageImpact: + properties: + availability: + $ref: '#/components/schemas/ModelsTriageImpactAvailability' + businessCriticality: + $ref: '#/components/schemas/ModelsTriageImpactBusinessCriticality' + confidence: + $ref: '#/components/schemas/ModelsTriageImpactConfidence' + confidentiality: + $ref: '#/components/schemas/ModelsTriageImpactConfidentiality' + description: + nullable: true + type: string + integrity: + $ref: '#/components/schemas/ModelsTriageImpactIntegrity' + label: + $ref: '#/components/schemas/ModelsTriageImpactLabel' + title: + nullable: true + type: string + unknowns: + items: + type: string + type: array + type: object + ModelsTriageImpactAvailability: + properties: + cause: + items: + $ref: '#/components/schemas/ModelsTriageImpactAvailabilityCauseElem' + type: array + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageImpactAvailabilityLabel' + title: + nullable: true + type: string + type: + items: + $ref: '#/components/schemas/ModelsTriageImpactAvailabilityTypeElem' + type: array + type: object + ModelsTriageImpactAvailabilityCauseElem: + enum: + - BUFFER_OVERFLOW + - BUSINESS_LOGIC + - INFINITE_LOOP + - MEMORY_LEAK + - RESOURCE_EXHAUSTION + type: string + ModelsTriageImpactAvailabilityLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageImpactAvailabilityTypeElem: + enum: + - COMPLETE_SERVICE_OUTAGE + - SERVICE_DEGRADATION + - USER_ACCESS_DISRUPTION + type: string + ModelsTriageImpactBusinessCriticality: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageImpactBusinessCriticalityLabel' + nullable: true + title: + nullable: true + type: string + type: object + ModelsTriageImpactBusinessCriticalityLabel: + enum: + - HIGH + - LOW + - MEDIUM + type: string + ModelsTriageImpactConfidence: + enum: + - HIGH + - LOW + - MEDIUM + type: string + ModelsTriageImpactConfidentiality: + properties: + dataLeaked: + items: + $ref: '#/components/schemas/ModelsTriageImpactConfidentialityDataLeakedElem' + type: array + label: + $ref: '#/components/schemas/ModelsTriageImpactConfidentialityLabel' + type: object + ModelsTriageImpactConfidentialityDataLeakedElem: + enum: + - ACCESS_TOKEN + - ADDRESS + - AGE + - API_KEY + - AUTHENTICATION_DATA + - BANK_ACCOUNT_INFORMATION + - BIOMETRIC_DATA + - CALL_LOGS + - CERTIFICATE + - CLIENT_AND_VENDOR_INFORMATION + - COMPLIANCE_RECORDS + - CREDIT_DEBIT_CARD_DETAILS + - DATABASE_CREDENTIALS + - DEVICE_IDENTIFIERS + - DRIVERS_LICENSE + - EDUCATION_RECORDS + - EMAIL_ADDRESS + - EMAILS_AND_MESSAGES + - EMPLOYMENT_HISTORY + - ENCRYPTION_KEY + - GENDER + - INCOME_AND_TAX_INFORMATION + - INTELLECTUAL_PROPERTY + - INVENTORY_DATA + - INVESTMENT_INFORMATION + - IP_ADDRESSES + - LEGAL_DOCUMENTS + - MEDICAL_DATA + - NAME + - OTHER_PRIVATE_NON_SENSITIVE_DATA + - OTHER_PRIVATE_SENSITIVE_DATA + - OTHER_PUBLIC_DATA + - PASSPORT + - PERFORMANCE_REVIEWS + - PHONE_NUMBER + - POLITICAL_OPINIONS + - RACIAL_OR_ETHNIC_ORIGIN + - RELIGIOUS_OR_PHILOSOPHICAL_BELIEFS + - SALARY_AND_BENEFITS_INFORMATION + - SECRET_KEY + - SEXUAL_ORIENTATION + - SOCIAL_MEDIA_INTERACTIONS + - SOCIAL_SECURITY_NUMBER + - STRATEGIC_PLANS_AND_FORECASTS + - SYSTEM_LOGS_AND_MONITORING_DATA + - TRADE_SECRETS + - TRANSACTION_HISTORY + type: string + ModelsTriageImpactConfidentialityLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageImpactIntegrity: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsTriageImpactIntegrityLabel' + title: + nullable: true + type: string + type: + items: + $ref: '#/components/schemas/ModelsTriageImpactIntegrityTypeElem' + nullable: true + type: array + type: object + ModelsTriageImpactIntegrityLabel: + enum: + - HIGH + - LOW + - NONE + type: string + ModelsTriageImpactIntegrityTypeElem: + enum: + - DATABASE_ALTERED + - MALICIOUS_CODE_EXECUTED + - PRIVILEDGE_ESCALATION + - SYSTEM_BEHAVIOUR_MANIPULATED + type: string + ModelsTriageImpactLabel: + enum: + - CRITICAL + - HIGH + - LOW + type: string + ModelsTriagePentest: + properties: + attemptedCVEs: + items: + type: string + type: array + confidence: + nullable: true + type: number + cost: + nullable: true + type: number + duration: + nullable: true + type: number + exploitedCVE: + nullable: true + type: string + logs: + $ref: '#/components/schemas/AgentsGroupedAgentLogs' + outcome: + $ref: '#/components/schemas/ModelsTriagePentestOutcome' + report: + type: string + reproductionScript: + nullable: true + type: string + testedEndpoints: + items: + $ref: '#/components/schemas/ModelsTriagePentestTestedEndpointsElem' + type: array + type: object + ModelsTriagePentestOutcome: + enum: + - CANNOT_DETERMINE + - CONFIRMED + - LIKELY + - NOT_EXPLOITABLE + - POTENTIAL + type: string + ModelsTriagePentestTestedEndpointsElem: + properties: + method: + nullable: true + type: string + path: + nullable: true + type: string + type: object + ModelsTriageRetriageMetadata: + properties: + memoryChanges: + items: + $ref: '#/components/schemas/ModelsTriageRetriageMetadataMemoryChangesElem' + type: array + triggeredAt: + format: date-time + nullable: true + type: string + type: object + ModelsTriageRetriageMetadataMemoryChangesElem: + properties: + memoryChangeType: + $ref: '#/components/schemas/ModelsTriageRetriageMetadataMemoryChangesElemMemoryChangeType' + nullable: true + memoryId: + nullable: true + type: string + type: object + ModelsTriageRetriageMetadataMemoryChangesElemMemoryChangeType: + enum: + - MEMORY_ADDED + - MEMORY_CORRECTED + - MEMORY_INVALIDATED + - MEMORY_REMOVED + type: string + ModelsTriageRetriageStatus: + enum: + - NOT_RETRIAGED + - RETRIAGE_COMPLETED + - RETRIAGE_FAILED + - RETRIAGE_IN_PROGRESS + - RETRIAGE_REQUESTED + type: string + ModelsTriageSeverity: + properties: + confidence: + $ref: '#/components/schemas/ModelsTriageSeverityConfidence' + label: + $ref: '#/components/schemas/ModelsSeverityEnum' + score: + type: integer + unknowns: + items: + type: string + type: array + type: object + ModelsTriageSeverityConfidence: + enum: + - HIGH + - LOW + - MEDIUM + type: string + ModelsValidationEvidence: + properties: + duration: + format: int64 + type: integer + error: + type: string + message: + type: string + responseHeaders: + additionalProperties: + type: string + type: object + status: + $ref: '#/components/schemas/ModelsValidationStatus' + statusCode: + type: integer + testUrl: + type: string + validatedBy: + type: string + required: + - status + - message + type: object + ModelsValidationStatus: + enum: + - unknown + - valid + - invalid + - expired + - error + type: string + ModelsVulnClass: + enum: + - '' + - open_port + - tls_weak + - unauthenticated_endpoint + - xss + - sqli + - subdomain_takeover + - malware_injection + - insecure_cookie + - missing_csp + - authz_bypass + - idor + - excessive_data_exposure + - verb_tampering + - secret_in_artifact + - dom_xss + - post_message_misuse + - implicit_oauth_flow + type: string + ModelsVulnClassRule: + properties: + class: + $ref: '#/components/schemas/ModelsVulnClass' + disabled: + type: boolean + floor: + $ref: '#/components/schemas/ModelsSeverityFloor' + type: object + ModelsWebFingerprintOverride: + properties: + cdnDetection: + type: boolean + followRedirects: + type: boolean + maxDepth: + type: integer + wafDetection: + type: boolean + type: object + ActionsPendingAction: + type: object + AuditToolCallAuditRecord: + type: object + EndpointsCampaignRunDetail: + properties: + agentCostCredits: + format: int64 + type: integer + agentInputTokens: + format: int64 + type: integer + agentOutputTokens: + format: int64 + type: integer + campaignId: + type: string + endedAt: + nullable: true + type: string + errorSummary: + type: string + id: + type: string + plan: {} + providerId: + type: string + startedAt: + type: string + state: + type: string + tenantId: + type: string + toolEventCount: + format: int32 + type: integer + required: + - id + - campaignId + - tenantId + - providerId + - state + - startedAt + type: object + EndpointsCampaignRunSummary: + properties: + agentCostCredits: + format: int64 + type: integer + agentInputTokens: + format: int64 + type: integer + agentOutputTokens: + format: int64 + type: integer + campaignId: + type: string + endedAt: + nullable: true + type: string + errorSummary: + type: string + id: + type: string + providerId: + type: string + startedAt: + type: string + state: + type: string + tenantId: + type: string + toolEventCount: + format: int32 + type: integer + required: + - id + - campaignId + - tenantId + - providerId + - state + - startedAt + type: object + EndpointsCustomerQuestionSetResponse: + properties: + createdAt: + type: string + customMessage: + nullable: true + type: string + generatedMemoryIds: + items: + type: string + type: array + id: + type: string + questions: + items: + $ref: '#/components/schemas/ModelsCustomerQuestion' + nullable: true + type: array + updatedAt: + type: string + type: object + EndpointsDeleteAllCustomerQuestionSetsOutput: + properties: + deletedCount: + format: int64 + type: integer + version: + type: string + required: + - deletedCount + type: object + EndpointsDeleteChatSessionOutput: + properties: + success: + type: boolean + type: object + EndpointsDeleteCustomerQuestionOutput: + properties: + success: + type: boolean + version: + type: string + required: + - success + type: object + EndpointsDeleteCustomerQuestionSetOutput: + properties: + success: + type: boolean + version: + type: string + required: + - success + type: object + EndpointsDeleteEventOutput: + properties: + version: + type: string + type: object + EndpointsGenerateDefaultCampaignsOutput: + properties: + message: + type: string + version: + type: string + required: + - version + - message + type: object + EndpointsGetAllCampaignsFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsFindingProgress' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - findings + - numItems + type: object + EndpointsGetCampaignEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsManagerEvent' + nullable: true + type: array + hasNextPage: + description: Whether there are more pages available + type: boolean + numItems: + type: integer + pullRequestTitles: + additionalProperties: + type: string + type: object + version: + type: string + required: + - events + - numItems + - hasNextPage + type: object + EndpointsGetCampaignFindingsOutput: + properties: + campaignId: + type: string + findingIDs: + items: + type: string + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - campaignId + - findingIDs + - numItems + type: object + EndpointsGetCampaignMetricsRefreshOutput: + properties: + response: + type: string + version: + type: string + required: + - response + type: object + EndpointsGetCampaignOutput: + properties: + campaign: + $ref: '#/components/schemas/ModelsCampaign' + mappedFindingIds: + items: + type: string + nullable: true + type: array + mappedFindings: + items: + $ref: '#/components/schemas/ModelsFindingProgress' + nullable: true + type: array + version: + type: string + required: + - version + - mappedFindingIds + - mappedFindings + type: object + EndpointsGetCampaignPreviewOutput: + properties: + campaign: + $ref: '#/components/schemas/ModelsCampaignPreview' + numItems: + type: integer + version: + type: string + required: + - version + - numItems + type: object + EndpointsGetCampaignPreviewsOutput: + properties: + campaigns: + items: + $ref: '#/components/schemas/ModelsCampaignPreview' + nullable: true + type: array + findings: + items: + $ref: '#/components/schemas/ModelsFindingProgress' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - campaigns + - findings + - numItems + type: object + EndpointsGetCampaignRunOutput: + properties: + run: + $ref: '#/components/schemas/EndpointsCampaignRunDetail' + required: + - run + type: object + EndpointsGetCampaignRunsOutput: + properties: + nextCursor: + type: string + runs: + items: + $ref: '#/components/schemas/EndpointsCampaignRunSummary' + nullable: true + type: array + required: + - runs + type: object + EndpointsGetCampaignSummariesOutput: + properties: + numItems: + type: integer + summaries: + items: + $ref: '#/components/schemas/ModelsPlanResponseSummary' + nullable: true + type: array + version: + type: string + required: + - version + - summaries + - numItems + type: object + EndpointsGetCampaignsOutput: + properties: + campaigns: + items: + $ref: '#/components/schemas/ModelsCampaign' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - campaigns + - numItems + type: object + EndpointsGetChatSessionActionsOutput: + properties: + actions: + items: + $ref: '#/components/schemas/ActionsPendingAction' + nullable: true + type: array + type: object + EndpointsGetChatSessionAuditOutput: + properties: + nextToken: + type: string + records: + items: + $ref: '#/components/schemas/AuditToolCallAuditRecord' + nullable: true + type: array + type: object + EndpointsGetChatSessionHistoryOutput: + properties: + messages: + items: + $ref: '#/components/schemas/ModelsComment' + nullable: true + type: array + type: object + EndpointsGetChatSessionOutput: + properties: + session: + $ref: '#/components/schemas/SessionsChatSession' + type: object + EndpointsGetCreditsOutput: + properties: + credits: + $ref: '#/components/schemas/ModelsCredits' + version: + type: string + required: + - version + - credits + type: object + EndpointsGetCustomerQuestionSetOutput: + properties: + questionSet: + $ref: '#/components/schemas/EndpointsCustomerQuestionSetResponse' + version: + type: string + required: + - questionSet + type: object + EndpointsGetCustomerQuestionSetsOutput: + properties: + numItems: + type: integer + questionSets: + items: + $ref: '#/components/schemas/EndpointsCustomerQuestionSetResponse' + nullable: true + type: array + version: + type: string + required: + - questionSets + - numItems + type: object + EndpointsGetDefaultCampaignsOutput: + properties: + campaigns: + items: + $ref: '#/components/schemas/ModelsCampaign' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - campaigns + - numItems + type: object + EndpointsGetEscalationsOutput: + properties: + escalations: + items: + $ref: '#/components/schemas/ModelsEscalation' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - escalations + - numItems + type: object + EndpointsGetEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsManagerEvent' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - version + - events + - numItems + type: object + EndpointsGetFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsManagerEvent' + nullable: true + type: array + nextCursor: + description: Cursor for next page, empty if no more results + type: string + numItems: + type: integer + version: + type: string + required: + - events + - numItems + type: object + EndpointsGetManagerConfigOutput: + properties: + config: + $ref: '#/components/schemas/ModelsManagerConfig' + version: + type: string + required: + - config + type: object + EndpointsGetManagerGroundRulesOutput: + properties: + groundRules: + $ref: '#/components/schemas/ModelsManagerGroundRules' + version: + type: string + type: object + EndpointsGetManagerMetricsOutput: + properties: + autofixDuration: + minimum: 0 + type: integer + backlogSearches: + minimum: 0 + type: integer + detectionDuration: + minimum: 0 + type: integer + escalatedFindings: + minimum: 0 + type: integer + escalations: + minimum: 0 + type: integer + findingsInBacklog: + type: integer + findingsInProgress: + type: integer + findingsResolved: + type: integer + internetSearchCount: + minimum: 0 + type: integer + mappedFindings: + items: + $ref: '#/components/schemas/ModelsFindingProgress' + nullable: true + type: array + meanTimeAutofixToInProgress: + minimum: 0 + type: integer + meanTimeInProgressToResolved: + minimum: 0 + type: integer + meanTimeToAutofix: + minimum: 0 + type: integer + meanTimeToDetectAndTriage: + minimum: 0 + type: integer + meanTimeToResolve: + minimum: 0 + type: integer + meanTimeToTriage: + minimum: 0 + type: integer + medianTimeAutofixToInProgress: + minimum: 0 + type: integer + medianTimeInProgressToResolved: + minimum: 0 + type: integer + medianTimeToAutofix: + minimum: 0 + type: integer + medianTimeToDetectAndTriage: + minimum: 0 + type: integer + medianTimeToTriage: + minimum: 0 + type: integer + messageCount: + minimum: 0 + type: integer + plansGenerated: + minimum: 0 + type: integer + prCloseCount: + minimum: 0 + type: integer + prCommentCount: + minimum: 0 + type: integer + prCreateCount: + minimum: 0 + type: integer + previewMessageCount: + minimum: 0 + type: integer + storyPointsConsumed: + minimum: 0 + type: integer + tasksAssigned: + minimum: 0 + type: integer + ticketCloseCount: + minimum: 0 + type: integer + ticketCommentCount: + minimum: 0 + type: integer + ticketCreateCount: + minimum: 0 + type: integer + timeSaved: + minimum: 0 + type: integer + timeSavedAssigning: + minimum: 0 + type: integer + totalRemediationDuration: + minimum: 0 + type: integer + triageDuration: + minimum: 0 + type: integer + version: + type: string + required: + - findingsInBacklog + - findingsInProgress + - findingsResolved + - meanTimeToResolve + - mappedFindings + - version + type: object + EndpointsGetManagerStateOutput: + properties: + currentState: + $ref: '#/components/schemas/ModelsManagerState' + version: + type: string + required: + - version + - currentState + type: object + EndpointsGetManagerStatesOutput: + properties: + stateHistory: + $ref: '#/components/schemas/ModelsManagerStates' + version: + type: string + required: + - version + - stateHistory + type: object + EndpointsGetPlansOutput: + properties: + numItems: + type: integer + plans: + items: + $ref: '#/components/schemas/ModelsPlan' + nullable: true + type: array + version: + type: string + required: + - version + - plans + - numItems + type: object + EndpointsGetStrategyOutput: + properties: + createdAt: + format: date-time + type: string + id: + type: string + quarters: + items: + $ref: '#/components/schemas/ModelsStrategyQuarterGoal' + nullable: true + type: array + updatedAt: + format: date-time + nullable: true + type: string + version: + type: integer + type: object + EndpointsGetThreatInvestigationOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsManagerEvent' + type: array + threatInvestigation: + $ref: '#/components/schemas/ModelsThreatInvestigation' + version: + type: string + required: + - threatInvestigation + type: object + EndpointsGetThreatInvestigationsOutput: + properties: + numItems: + type: integer + threatInvestigations: + items: + $ref: '#/components/schemas/ModelsThreatInvestigation' + nullable: true + type: array + version: + type: string + required: + - threatInvestigations + - numItems + type: object + EndpointsListChatSessionsOutput: + properties: + nextToken: + type: string + sessions: + items: + $ref: '#/components/schemas/SessionsChatSession' + nullable: true + type: array + type: object + EndpointsListStrategyVersionsOutput: + properties: + numItems: + type: integer + strategies: + items: + $ref: '#/components/schemas/ModelsStrategy' + nullable: true + type: array + type: object + EndpointsManagerConfigInput: + properties: + enableActions: + type: boolean + initialized: + type: boolean + required: + - initialized + type: object + EndpointsPatchCampaignInput: + properties: + createdAfter: + format: date-time + nullable: true + type: string + createdBefore: + format: date-time + nullable: true + type: string + description: + nullable: true + type: string + endDate: + format: date-time + nullable: true + type: string + findingIds: + items: + type: string + type: array + generatedReasoning: + nullable: true + type: string + isActive: + nullable: true + type: boolean + limitPerType: + nullable: true + type: integer + maxStoryPoints: + nullable: true + type: integer + minPriority: + nullable: true + type: number + noEndDate: + nullable: true + type: boolean + owner: + nullable: true + type: string + priorityLabels: + items: + type: string + type: array + repositoryNames: + items: + type: string + type: array + sortByColumns: + nullable: true + type: string + sortByDirection: + nullable: true + type: string + startDate: + format: date-time + nullable: true + type: string + summary: + nullable: true + type: string + teamIDs: + items: + type: string + type: array + teamNames: + items: + type: string + type: array + title: + nullable: true + type: string + types: + items: + type: string + type: array + userNames: + items: + type: string + type: array + vulnerabilityCVEIds: + items: + type: string + type: array + vulnerabilityCWEIds: + items: + type: string + type: array + type: object + EndpointsPatchCampaignOutput: + properties: + campaign: + $ref: '#/components/schemas/ModelsCampaign' + campaignId: + type: string + version: + type: string + required: + - version + - campaignId + type: object + EndpointsPatchChatSessionInput: + properties: + title: + type: string + type: object + EndpointsPatchChatSessionOutput: + properties: + success: + type: boolean + type: object + EndpointsPatchCustomerQuestionAnswerInput: + properties: + answer: {} + required: + - answer + type: object + EndpointsPatchCustomerQuestionAnswerOutput: + properties: + success: + type: boolean + version: + type: string + required: + - success + type: object + EndpointsPatchEscalationsInput: + properties: + reasoning: + nullable: true + type: string + status: + $ref: '#/components/schemas/ModelsEscalationStatus' + nullable: true + type: object + EndpointsPatchGroundRulesInput: + properties: + groundRules: + $ref: '#/components/schemas/ModelsManagerGroundRules' + type: object + EndpointsPatchGroundRulesOutput: + properties: + groundRules: + $ref: '#/components/schemas/ModelsManagerGroundRules' + version: + type: string + type: object + EndpointsPatchStrategyInput: + properties: + quarters: + items: + $ref: '#/components/schemas/ModelsStrategyQuarterGoal' + nullable: true + type: array + type: object + EndpointsPatchStrategyOutput: + properties: + createdAt: + format: date-time + type: string + id: + type: string + quarters: + items: + $ref: '#/components/schemas/ModelsStrategyQuarterGoal' + nullable: true + type: array + updatedAt: + format: date-time + nullable: true + type: string + version: + type: integer + type: object + EndpointsPatchThreatInvestigationInput: + properties: + action: + type: string + required: + - action + type: object + EndpointsPatchThreatInvestigationOutput: + properties: + threatInvestigation: + $ref: '#/components/schemas/ModelsThreatInvestigation' + version: + type: string + required: + - threatInvestigation + type: object + EndpointsPostCampaignInput: + properties: + createdAfter: + format: date-time + nullable: true + type: string + createdBefore: + format: date-time + nullable: true + type: string + description: + nullable: true + type: string + endDate: + format: date-time + nullable: true + type: string + findingIds: + items: + type: string + type: array + generatedReasoning: + nullable: true + type: string + isActive: + nullable: true + type: boolean + limitPerType: + nullable: true + type: integer + maxStoryPoints: + nullable: true + type: integer + minPriority: + nullable: true + type: number + noEndDate: + nullable: true + type: boolean + owner: + nullable: true + type: string + priorityLabels: + items: + type: string + type: array + repositoryNames: + items: + type: string + type: array + sortByColumns: + nullable: true + type: string + sortByDirection: + nullable: true + type: string + startDate: + format: date-time + nullable: true + type: string + summary: + nullable: true + type: string + teamIDs: + items: + type: string + type: array + teamNames: + items: + type: string + type: array + title: + nullable: true + type: string + types: + items: + type: string + type: array + userNames: + items: + type: string + type: array + vulnerabilityCVEIds: + items: + type: string + type: array + vulnerabilityCWEIds: + items: + type: string + type: array + type: object + EndpointsPostCampaignOutput: + properties: + campaign: + $ref: '#/components/schemas/ModelsCampaign' + campaignId: + type: string + version: + type: string + required: + - version + - campaignId + type: object + EndpointsPostCreditsInput: + properties: + credits: + $ref: '#/components/schemas/ModelsCreditsUpdate' + required: + - credits + type: object + EndpointsPostCreditsOutput: + properties: + credits: + $ref: '#/components/schemas/ModelsCredits' + version: + type: string + required: + - version + - credits + type: object + EndpointsPostDeduplicateEventsInput: + properties: + dryRun: + type: boolean + from: + format: date-time + nullable: true + type: string + keep: + type: string + statuses: + items: + type: string + type: array + timeoutSeconds: + nullable: true + type: integer + to: + format: date-time + nullable: true + type: string + type: object + EndpointsPostDeduplicateEventsOutput: + properties: + dryRun: + type: boolean + message: + type: string + pagesProcessed: + format: int64 + type: integer + totalDeleted: + format: int64 + type: integer + totalDupes: + format: int64 + type: integer + totalOmitted: + format: int64 + type: integer + totalScanned: + format: int64 + type: integer + totalUnique: + format: int64 + type: integer + version: + type: string + required: + - message + type: object + EndpointsPostManagerConfigInput: + properties: + config: + $ref: '#/components/schemas/EndpointsManagerConfigInput' + required: + - config + type: object + EndpointsPostManagerConfigOutput: + properties: + config: + $ref: '#/components/schemas/ModelsManagerConfig' + version: + type: string + required: + - config + type: object + EndpointsPostManagerGroundRulesInput: + properties: + groundRules: + $ref: '#/components/schemas/ModelsManagerGroundRules' + type: object + EndpointsPostManagerGroundRulesOutput: + properties: + groundRules: + $ref: '#/components/schemas/ModelsManagerGroundRules' + version: + type: string + type: object + EndpointsPostThreatInvestigationInput: + properties: + advice: + type: string + affectedPackages: + items: + $ref: '#/components/schemas/ModelsThreatInvestigationAffectedPackage' + type: array + articleLinks: + items: + type: string + type: array + cveIds: + items: + type: string + nullable: true + type: array + cvss: + format: double + type: number + description: + type: string + ecosystem: + type: string + keywords: + type: string + severity: + type: string + title: + type: string + required: + - title + type: object + EndpointsPostThreatInvestigationOutput: + properties: + existing: + type: boolean + threatInvestigation: + $ref: '#/components/schemas/ModelsThreatInvestigation' + version: + type: string + required: + - threatInvestigation + type: object + EndpointsTriggerCampaignsOrchestratorInput: + properties: + campaignId: + type: string + mode: + type: string + type: object + EndpointsTriggerCampaignsOrchestratorOutput: + properties: + message: + type: string + response: + type: string + version: + type: string + required: + - message + type: object + EndpointsTriggerStrategyOutput: + properties: + message: + type: string + version: + type: string + type: object + EndpointsTriggerTacitKnowledgeOutput: + properties: + message: + type: string + version: + type: string + type: object + ModelsAzureCommentProvider: + properties: + commentId: + description: The Azure comment ID + type: integer + threadId: + description: The Azure thread ID + type: integer + required: + - threadId + - commentId + type: object + ModelsBitbucketCommentProvider: + properties: + commentId: + description: The Bitbucket comment ID + format: int64 + type: integer + required: + - commentId + type: object + ModelsCampaign: + properties: + createdAt: + format: date-time + type: string + description: + type: string + endDate: + format: date-time + type: string + events: + items: + $ref: '#/components/schemas/ModelsManagerEvent' + nullable: true + type: array + generated: + type: boolean + generatedReasoning: + type: string + id: + type: string + immediateRemediation: + type: boolean + isActive: + type: boolean + metrics: + $ref: '#/components/schemas/ModelsMetrics' + noEndDate: + type: boolean + owner: + type: string + selectionCriteria: + $ref: '#/components/schemas/ModelsSelectionCriteria' + startDate: + format: date-time + type: string + status: + type: string + summary: + type: string + title: + type: string + updatedAt: + format: date-time + type: string + type: object + ModelsCampaignPreview: + properties: + autofixTimeTotal: + minimum: 0 + type: integer + backlogSearches: + minimum: 0 + type: integer + createdAt: + type: string + description: + type: string + detectionTimeTotal: + minimum: 0 + type: integer + endDate: + type: string + escalatedFindings: + minimum: 0 + type: integer + escalations: + minimum: 0 + type: integer + estimatedBacklogStoryPoints: + minimum: 0 + type: integer + findingTypes: + items: + type: string + nullable: true + type: array + findingsAllowlistedCount: + minimum: 0 + type: integer + findingsCount: + minimum: 0 + type: integer + findingsInBacklogCount: + minimum: 0 + type: integer + findingsResolvedCount: + minimum: 0 + type: integer + findingsWithAllowlistPRCount: + minimum: 0 + type: integer + findingsWithOpenAutoFixPRCount: + minimum: 0 + type: integer + findingsWithOpenTicketCount: + minimum: 0 + type: integer + generated: + type: boolean + generatedReasoning: + type: string + id: + type: string + internetSearchCount: + minimum: 0 + type: integer + isActive: + type: boolean + mappedFindingIds: + items: + type: string + nullable: true + type: array + maxStoryPoints: + type: integer + meanTimeToDetectAndTriage: + minimum: 0 + type: integer + meanTimeToMerge: + minimum: 0 + type: integer + meanTimeToPullRequestCreation: + minimum: 0 + type: integer + meanTimeToResolve: + minimum: 0 + type: integer + meanTimeToReview: + minimum: 0 + type: integer + medianTimeToDetectAndTriage: + minimum: 0 + type: integer + medianTimeToMerge: + minimum: 0 + type: integer + medianTimeToPullRequestCreation: + minimum: 0 + type: integer + medianTimeToResolve: + minimum: 0 + type: integer + medianTimeToReview: + minimum: 0 + type: integer + messageCount: + minimum: 0 + type: integer + noEndDate: + type: boolean + plansGenerated: + minimum: 0 + type: integer + prCloseCount: + minimum: 0 + type: integer + prCommentCount: + minimum: 0 + type: integer + prCreateCount: + minimum: 0 + type: integer + previewMessageCount: + minimum: 0 + type: integer + priorityLabels: + items: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + type: array + repositoryNames: + items: + type: string + nullable: true + type: array + startDate: + type: string + status: + type: string + storyPointsConsumed: + minimum: 0 + type: integer + tasksAssigned: + minimum: 0 + type: integer + ticketCloseCount: + minimum: 0 + type: integer + ticketCommentCount: + minimum: 0 + type: integer + ticketCreateCount: + minimum: 0 + type: integer + timeSaved: + minimum: 0 + type: integer + timeSavedAssigning: + minimum: 0 + type: integer + title: + type: string + triageTimeTotal: + minimum: 0 + type: integer + updatedAt: + type: string + users: + items: + type: string + nullable: true + type: array + required: + - title + - description + - status + - generatedReasoning + - isActive + - mappedFindingIds + type: object + ModelsComment: + properties: + body: + description: The comment body + type: string + commentProvider: + $ref: '#/components/schemas/ModelsCommentProvider' + createdAt: + description: The timestamp of the comment + format: date-time + type: string + id: + description: Unique ID for the comment + type: string + isNullify: + description: Whether this is a Nullify comment + type: boolean + updatedAt: + description: The timestamp of the comment + format: date-time + type: string + userId: + description: The ID of the comment author + type: string + userName: + description: The username of the comment author + type: string + required: + - isNullify + - userId + - userName + - body + - createdAt + - updatedAt + type: object + ModelsCommentProvider: + properties: + azure: + $ref: '#/components/schemas/ModelsAzureCommentProvider' + bitbucket: + $ref: '#/components/schemas/ModelsBitbucketCommentProvider' + github: + $ref: '#/components/schemas/ModelsGitHubCommentProvider' + gitlab: + $ref: '#/components/schemas/ModelsGitLabCommentProvider' + id: + $ref: '#/components/schemas/ModelsProviderID' + jira: + $ref: '#/components/schemas/ModelsJiraCommentProvider' + linear: + $ref: '#/components/schemas/ModelsLinearCommentProvider' + slack: + $ref: '#/components/schemas/ModelsSlackCommentProvider' + teams: + $ref: '#/components/schemas/ModelsTeamsCommentProvider' + type: object + ModelsCredits: + properties: + balance: + minimum: 0 + type: integer + updatedAt: + format: date-time + type: string + required: + - balance + type: object + ModelsCreditsUpdate: + properties: + increment: + format: int64 + type: integer + type: object + ModelsEscalation: + properties: + campaignIds: + items: + type: string + nullable: true + type: array + createdAt: + format: date-time + type: string + findingId: + type: string + id: + type: string + pullRequestIds: + items: + type: string + type: array + reasoning: + type: string + status: + $ref: '#/components/schemas/ModelsEscalationStatus' + ticketIds: + items: + type: string + type: array + updatedAt: + format: date-time + type: string + required: + - createdAt + - updatedAt + - campaignIds + - findingId + - reasoning + - status + type: object + ModelsEscalationStatus: + enum: + - OPEN + - RESOLVED + type: string + ModelsFindingProgress: + properties: + autofixDuration: + nullable: true + type: integer + autofixedAt: + format: date-time + nullable: true + type: string + createdAt: + format: date-time + type: string + detectionDuration: + nullable: true + type: integer + discoveredAt: + format: date-time + nullable: true + type: string + findingId: + type: string + findingType: + $ref: '#/components/schemas/ModelsFindingType' + inProgressAt: + format: date-time + nullable: true + type: string + resolvedAt: + format: date-time + nullable: true + type: string + status: + $ref: '#/components/schemas/ModelsFindingStatus' + timeSaved: + nullable: true + type: integer + totalRemediationDuration: + nullable: true + type: integer + triageDuration: + nullable: true + type: integer + triagedAt: + format: date-time + nullable: true + type: string + updatedAt: + format: date-time + type: string + required: + - createdAt + - updatedAt + - findingId + - findingType + - status + type: object + ModelsFindingStatus: + enum: + - BACKLOG + - IN_PROGRESS + - RESOLVED + type: string + ModelsGitHubCommentProvider: + properties: + commentId: + description: The GitHub comment ID + format: int64 + type: integer + commentNodeId: + description: The GitHub GraphQL node ID for the comment + type: string + required: + - commentId + - commentNodeId + type: object + ModelsGitLabCommentProvider: + properties: + commentId: + description: The GitLab comment ID + format: int64 + type: integer + threadId: + description: The GitLab thread ID + type: string + required: + - threadId + - commentId + type: object + ModelsJiraCommentProvider: + properties: + commentId: + description: The Jira comment ID + type: string + required: + - commentId + type: object + ModelsLinearCommentProvider: + properties: + commentId: + description: The Linear comment ID + type: string + required: + - commentId + type: object + ModelsManagerConfig: + properties: + createdAt: + format: date-time + type: string + enableActions: + type: boolean + id: + type: string + initialized: + type: boolean + updatedAt: + format: date-time + type: string + required: + - initialized + type: object + ModelsManagerEvent: + properties: + actionType: + type: string + campaignIds: + items: + type: string + type: array + createdAt: + type: string + description: + type: string + findingIds: + items: + type: string + type: array + id: + type: string + metaData: + additionalProperties: + type: string + type: object + pullRequestIds: + items: + type: string + type: array + reasoning: + type: string + repositoryIds: + items: + type: string + type: array + status: + type: string + threatInvestigationIds: + items: + type: string + type: array + ticketIds: + items: + type: string + type: array + userIds: + items: + type: string + type: array + required: + - id + - actionType + - createdAt + - description + - reasoning + - status + type: object + ModelsManagerGroundRules: + properties: + createdAt: + format: date-time + type: string + disableChannelMessages: + type: boolean + disableDirectMessages: + type: boolean + disablePRClosure: + type: boolean + disablePRComments: + type: boolean + disablePRCreation: + type: boolean + disableReviewerCandidateSelection: + type: boolean + disableTicketClosure: + type: boolean + disableTicketComments: + type: boolean + disableTicketCreation: + type: boolean + id: + type: string + updatedAt: + format: date-time + type: string + required: + - disablePRCreation + - disablePRClosure + - disablePRComments + - disableTicketCreation + - disableTicketClosure + - disableTicketComments + - disableChannelMessages + - disableDirectMessages + type: object + ModelsManagerState: + properties: + content: + type: string + createdAt: + type: string + required: + - createdAt + - content + type: object + ModelsManagerStates: + items: + $ref: '#/components/schemas/ModelsManagerState' + nullable: true + type: array + ModelsMetrics: + properties: + backlogSearches: + minimum: 0 + type: integer + escalatedFindings: + minimum: 0 + type: integer + escalations: + minimum: 0 + type: integer + findingsAnalysis: + $ref: '#/components/schemas/ModelsFindingsMetrics' + internetSearchCount: + minimum: 0 + type: integer + messageCount: + minimum: 0 + type: integer + plansGenerated: + minimum: 0 + type: integer + prCloseCount: + minimum: 0 + type: integer + prCommentCount: + minimum: 0 + type: integer + prCreateCount: + minimum: 0 + type: integer + previewMessageCount: + minimum: 0 + type: integer + storyPointsConsumed: + minimum: 0 + type: integer + tasksAssigned: + minimum: 0 + type: integer + ticketCloseCount: + minimum: 0 + type: integer + ticketCommentCount: + minimum: 0 + type: integer + ticketCreateCount: + minimum: 0 + type: integer + timeSavedAssigning: + minimum: 0 + type: integer + type: object + ModelsPlan: + properties: + createdAt: + format: date-time + type: string + events: + items: + $ref: '#/components/schemas/ModelsManagerEvent' + type: array + id: + type: string + response: + $ref: '#/components/schemas/ModelsPlanResponse' + required: + - createdAt + type: object + ModelsPlanResponse: + properties: + actionsExecuted: + $ref: '#/components/schemas/ModelsPlanResponseActionsExecuted' + preview: + $ref: '#/components/schemas/ModelsPlanResponsePreview' + summary: + $ref: '#/components/schemas/ModelsPlanResponseSummary' + thoughts: + items: + $ref: '#/components/schemas/ModelsPlanResponseThought' + type: array + threatReport: + $ref: '#/components/schemas/ModelsPlanResponseThreatReport' + required: + - summary + type: object + ModelsPlanResponseActionsExecuted: + properties: + channelMessagesSent: + type: integer + directMessagesSent: + type: integer + findingsAllowlisted: + type: integer + findingsEscalated: + type: integer + prCommentsCreated: + type: integer + prsClosed: + type: integer + prsCreated: + type: integer + prsReassigned: + type: integer + ticketCommentCreated: + type: integer + ticketsClosed: + type: integer + ticketsCreated: + type: integer + ticketsReassigned: + type: integer + required: + - prsCreated + - prsClosed + - prCommentsCreated + - prsReassigned + - ticketsCreated + - ticketsClosed + - ticketCommentCreated + - ticketsReassigned + - directMessagesSent + - channelMessagesSent + - findingsAllowlisted + - findingsEscalated + type: object + ModelsPlanResponseCampaignSummary: + properties: + campaignId: + type: string + content: + type: string + status: + type: string + required: + - campaignId + - content + - status + type: object + ModelsPlanResponsePreview: + properties: + projectedActions: + $ref: '#/components/schemas/ModelsPlanResponsePreviewProjectedActions' + thoughts: + type: string + required: + - thoughts + - projectedActions + type: object + ModelsPlanResponsePreviewProjectedActions: + properties: + allowlistFindings: + items: + $ref: '#/components/schemas/ModelsProjectedAllowlistFinding' + type: array + closeFixPullRequests: + items: + $ref: '#/components/schemas/ModelsProjectedCloseFixPullRequest' + type: array + closeTickets: + items: + $ref: '#/components/schemas/ModelsProjectedCloseTicket' + type: array + commentOnFixPullRequests: + items: + $ref: '#/components/schemas/ModelsProjectedCommentOnFixPullRequest' + type: array + commentOnTickets: + items: + $ref: '#/components/schemas/ModelsProjectedCommentOnTicket' + type: array + createFixPullRequests: + items: + $ref: '#/components/schemas/ModelsProjectedCreateFixPullRequest' + type: array + createTickets: + items: + $ref: '#/components/schemas/ModelsProjectedCreateTicket' + type: array + escalateFindings: + items: + $ref: '#/components/schemas/ModelsProjectedEscalateFinding' + type: array + messageChannels: + items: + $ref: '#/components/schemas/ModelsProjectedMessageChannel' + type: array + reassignFixPullRequests: + items: + $ref: '#/components/schemas/ModelsProjectedReassignFixPullRequest' + type: array + reassignTickets: + items: + $ref: '#/components/schemas/ModelsProjectedReassignTicket' + type: array + sendDirectMessages: + items: + $ref: '#/components/schemas/ModelsProjectedSendDirectMessage' + type: array + type: object + ModelsPlanResponseSummary: + properties: + campaigns: + items: + $ref: '#/components/schemas/ModelsPlanResponseCampaignSummary' + nullable: true + type: array + content: + type: string + createdAt: + nullable: true + type: string + required: + - content + - campaigns + type: object + ModelsPlanResponseThought: + properties: + content: + type: string + createdAt: + type: string + findingId: + nullable: true + type: string + required: + - content + - createdAt + type: object + ModelsPlanResponseThreatReport: + properties: + createdAt: + type: string + summary: + type: string + required: + - createdAt + - summary + type: object + ModelsProjectedAllowlistFinding: + properties: + estimatedDate: + type: string + findingId: + type: string + reason: + type: string + required: + - estimatedDate + - findingId + - reason + type: object + ModelsProjectedCloseFixPullRequest: + properties: + estimatedDate: + type: string + pullRequestId: + type: string + reason: + type: string + required: + - estimatedDate + - pullRequestId + - reason + type: object + ModelsProjectedCloseTicket: + properties: + estimatedDate: + type: string + reason: + type: string + ticketId: + type: string + required: + - estimatedDate + - ticketId + - reason + type: object + ModelsProjectedCommentOnFixPullRequest: + properties: + estimatedDate: + type: string + pullRequestId: + type: string + reason: + type: string + required: + - estimatedDate + - pullRequestId + - reason + type: object + ModelsProjectedCommentOnTicket: + properties: + estimatedDate: + type: string + reason: + type: string + ticketId: + type: string + required: + - estimatedDate + - ticketId + - reason + type: object + ModelsProjectedCreateFixPullRequest: + properties: + estimatedDate: + type: string + findingId: + type: string + reason: + type: string + required: + - estimatedDate + - findingId + - reason + type: object + ModelsProjectedCreateTicket: + properties: + estimatedDate: + type: string + findingId: + type: string + reason: + type: string + required: + - estimatedDate + - findingId + - reason + type: object + ModelsProjectedEscalateFinding: + properties: + estimatedDate: + type: string + findingId: + type: string + reason: + type: string + required: + - estimatedDate + - findingId + - reason + type: object + ModelsProjectedMessageChannel: + properties: + channelId: + type: string + estimatedDate: + type: string + reason: + type: string + topic: + type: string + required: + - estimatedDate + - channelId + - topic + - reason + type: object + ModelsProjectedReassignFixPullRequest: + properties: + estimatedDate: + type: string + pullRequestId: + type: string + reason: + type: string + required: + - estimatedDate + - pullRequestId + - reason + type: object + ModelsProjectedReassignTicket: + properties: + estimatedDate: + type: string + reason: + type: string + ticketId: + type: string + required: + - estimatedDate + - ticketId + - reason + type: object + ModelsProjectedSendDirectMessage: + properties: + estimatedDate: + type: string + findingId: + type: string + reason: + type: string + userId: + type: string + required: + - estimatedDate + - findingId + - userId + - reason + type: object + ModelsSelectionCriteria: + properties: + createdAfter: + format: date-time + nullable: true + type: string + createdBefore: + format: date-time + nullable: true + type: string + findingIds: + items: + type: string + nullable: true + type: array + limitPerType: + nullable: true + type: integer + maxStoryPoints: + nullable: true + type: integer + minPriority: + nullable: true + type: number + priorityLabels: + items: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + type: array + repositoryNames: + items: + type: string + nullable: true + type: array + sortByColumns: + nullable: true + type: string + sortByDirection: + nullable: true + type: string + teamIDs: + items: + type: string + nullable: true + type: array + teamNames: + items: + type: string + type: array + types: + items: + $ref: '#/components/schemas/ModelsFindingType' + nullable: true + type: array + userNames: + items: + type: string + nullable: true + type: array + vulnerabilityCVEIds: + items: + type: string + nullable: true + type: array + vulnerabilityCWEIds: + items: + type: string + nullable: true + type: array + type: object + ModelsSlackCommentProvider: + properties: + channelId: + description: The Slack channel ID + type: string + eventTs: + description: The Slack event timestamp + type: string + required: + - channelId + - eventTs + type: object + ModelsStrategy: + properties: + createdAt: + format: date-time + type: string + id: + type: string + quarters: + items: + $ref: '#/components/schemas/ModelsStrategyQuarterGoal' + nullable: true + type: array + updatedAt: + format: date-time + nullable: true + type: string + version: + type: integer + type: object + ModelsStrategyQuarterGoal: + properties: + goals: + type: string + label: + type: string + type: object + ModelsTeamsCommentProvider: + properties: + channelId: + description: The Teams channel ID + type: string + chatId: + description: The Teams chat ID + type: string + messageId: + description: The Teams message ID + type: string + required: + - channelId + - messageId + - chatId + type: object + ModelsThreatInvestigation: + properties: + advice: + type: string + clientImpact: + $ref: '#/components/schemas/ModelsThreatInvestigationClientImpact' + createdAt: + type: string + generalInfo: + $ref: '#/components/schemas/ModelsThreatInvestigationGeneralInfo' + id: + type: string + keywords: + type: string + remediation: + $ref: '#/components/schemas/ModelsThreatInvestigationRemediation' + report: + $ref: '#/components/schemas/ModelsThreatInvestigationReport' + status: + type: string + timeline: + $ref: '#/components/schemas/ModelsThreatInvestigationTimeline' + type: + type: string + updatedAt: + type: string + required: + - status + - type + type: object + ModelsThreatInvestigationAffectedPackage: + properties: + affectedRange: + type: string + attributionType: + type: string + ecosystem: + type: string + name: + type: string + source: + type: string + sourceQuote: + type: string + sourceUrl: + type: string + type: object + ModelsThreatInvestigationAffectedRepo: + properties: + ciActivity: + $ref: '#/components/schemas/ModelsThreatInvestigationCIActivity' + findingId: + type: string + firstSeen: + format: date-time + nullable: true + type: string + introducedCommit: + type: string + isAutoFixable: + type: boolean + isDirect: + type: boolean + isRemediated: + type: boolean + lastSeen: + format: date-time + nullable: true + type: string + manifestFile: + type: string + manifestPath: + type: string + packageName: + type: string + removedCommit: + nullable: true + type: string + repositoryId: + type: string + repositoryName: + type: string + repositoryOwner: + type: string + version: + type: string + type: object + ModelsThreatInvestigationCIActivity: + properties: + buildCount: + type: integer + introducedCommitBuilt: + type: boolean + successfulBuildCount: + type: integer + wasBuilt: + type: boolean + type: object + ModelsThreatInvestigationClientImpact: + properties: + affectedRepoCount: + type: integer + affectedRepos: + items: + $ref: '#/components/schemas/ModelsThreatInvestigationAffectedRepo' + nullable: true + type: array + findingIds: + items: + type: string + type: array + totalRepoCount: + type: integer + unaffectedRepoCount: + type: integer + type: object + ModelsThreatInvestigationGeneralInfo: + properties: + affectedPackages: + items: + $ref: '#/components/schemas/ModelsThreatInvestigationAffectedPackage' + nullable: true + type: array + articleLinks: + items: + type: string + type: array + cveIds: + items: + type: string + nullable: true + type: array + cvss: + format: double + type: number + description: + type: string + discoveredAt: + type: string + ecosystem: + type: string + exploitability: + type: string + history: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + title: + type: string + type: object + ModelsThreatInvestigationRemediation: + properties: + autoFixableCount: + type: integer + autofixPrIds: + items: + type: string + type: array + campaignId: + type: string + campaignStatus: + type: string + campaignTitle: + type: string + findingCount: + type: integer + prCreateCount: + type: integer + prFailedCount: + type: integer + scanCompleted: + type: boolean + scanTimestamp: + type: string + type: object + ModelsThreatInvestigationReport: + properties: + executiveSummary: + type: string + referenceLinks: + items: + type: string + type: array + remediationPlan: + type: string + vulnerabilityDetail: + type: string + type: object + ModelsThreatInvestigationTimeline: + properties: + impactAssessedAt: + type: string + investigationCompletedAt: + type: string + investigationCreatedAt: + type: string + remediationStartedAt: + type: string + reportWrittenAt: + type: string + researchCompletedAt: + type: string + researchStartedAt: + type: string + resolvedAt: + type: string + threatDiscoveredAt: + type: string + type: object + SessionsChatSession: + type: object + EndpointsBatchAutofixFailure: + properties: + errorCode: + type: string + findingID: + type: string + findingType: + $ref: '#/components/schemas/ModelsFindingType' + reason: + type: string + type: object + EndpointsBatchAutofixPR: + properties: + findingID: + type: string + findingType: + $ref: '#/components/schemas/ModelsFindingType' + prID: + type: string + prNumber: + type: integer + prURL: + type: string + type: object + EndpointsBatchAutofixResults: + properties: + failedAutofixes: + items: + $ref: '#/components/schemas/EndpointsBatchAutofixFailure' + type: array + pullRequestIDs: + items: + $ref: '#/components/schemas/EndpointsBatchAutofixPR' + type: array + stats: + $ref: '#/components/schemas/EndpointsBatchAutofixStats' + type: object + EndpointsBatchAutofixStats: + properties: + totalAttempted: + type: integer + totalFailed: + type: integer + totalSucceeded: + type: integer + type: object + EndpointsCodeReviewsResponse: + properties: + branch: + type: string + commitSha: + type: string + id: + type: string + isDefaultBranch: + type: boolean + pullRequest: + $ref: '#/components/schemas/ModelsGitPullRequestProvider' + repository: + $ref: '#/components/schemas/ModelsGitRepositoryProvider' + required: + - id + - branch + - isDefaultBranch + - commitSha + type: object + EndpointsCompleteOnboardingInput: + properties: + tenantId: + type: string + required: + - tenantId + type: object + EndpointsCompleteOnboardingOutput: + properties: + message: + type: string + status: + type: string + success: + type: boolean + tenantId: + type: string + timestamp: + format: date-time + type: string + required: + - success + - tenantId + - status + - message + - timestamp + type: object + EndpointsFindingTypeQuery: + enum: + - sast + - sca_dependencies + - sca_containers + - secrets_credentials + - secrets_sensitive_data + - scpm + - cspm + - dast_bughunt + - dast_pentest + type: string + EndpointsGetBatchAutofixStatusOutput: + properties: + completedAt: + type: string + dastBugHuntFindingIDs: + items: + type: string + type: array + dastPentestFindingIDs: + items: + type: string + type: array + errorMessage: + type: string + executionId: + type: string + results: + $ref: '#/components/schemas/EndpointsBatchAutofixResults' + sastFindingIDs: + items: + type: string + type: array + scaContainerFindingIDs: + items: + type: string + type: array + scaDependencyFindingIDs: + items: + type: string + type: array + startedAt: + type: string + status: + type: string + version: + type: string + required: + - executionId + - status + type: object + EndpointsGetCodeReviewOutput: + properties: + id: + type: string + review: + $ref: '#/components/schemas/EndpointsCodeReviewsResponse' + required: + - id + - review + type: object + EndpointsGetCodeReviewsOutput: + properties: + nextToken: + type: string + reviews: + $ref: '#/components/schemas/EndpointsCodeReviewsResponse' + required: + - reviews + type: object + EndpointsGetFindingAutofixIterationsOutput: + properties: + iterations: + items: + $ref: '#/components/schemas/ModelsAutofixIteration' + nullable: true + type: array + version: + type: string + required: + - iterations + type: object + EndpointsGetOnboardingStatusOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsOnboardingStatusResponse' + version: + type: string + required: + - status + type: object + EndpointsOnboardingStatusResponse: + properties: + completedAt: + format: date-time + nullable: true + type: string + completedSteps: + items: + type: string + type: array + currentPhase: + type: string + currentStep: + type: integer + errorMessage: + type: string + executionArn: + type: string + failedStep: + type: string + progressPct: + type: integer + repositoriesProcessed: + type: integer + startedAt: + format: date-time + type: string + status: + type: string + statusMessage: + type: string + tenantId: + type: string + totalRepositories: + type: integer + totalSteps: + type: integer + updatedAt: + format: date-time + type: string + required: + - tenantId + - startedAt + - updatedAt + type: object + EndpointsPostBatchAutofixInput: + properties: + dastBugHuntFindingIDs: + items: + type: string + type: array + dastPentestFindingIDs: + items: + type: string + type: array + ownerProvider: + $ref: '#/components/schemas/ModelsOwnerProvider' + sastFindingIDs: + items: + type: string + type: array + scaContainerFindingIDs: + items: + type: string + type: array + scaDependencyFindingIDs: + items: + type: string + type: array + required: + - ownerProvider + type: object + EndpointsPostBatchAutofixOutput: + properties: + executionArn: + type: string + executionId: + type: string + message: + type: string + version: + type: string + required: + - executionId + - executionArn + - message + type: object + EndpointsPostRetriageFindingsAggregation: + properties: + comments: + items: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsComment' + type: array + requestCount: + type: integer + type: object + EndpointsPostRetriageFindingsAuthor: + properties: + id: + type: string + type: object + EndpointsPostRetriageFindingsComment: + properties: + content: + type: string + findingId: + type: string + id: + type: string + memoryId: + nullable: true + type: string + nodeId: + nullable: true + type: string + timestamp: + type: string + user: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsUser' + type: object + EndpointsPostRetriageFindingsInput: + properties: + continueOnError: + type: boolean + debounceBypass: + type: boolean + filters: + $ref: '#/components/schemas/ModelsRetriageFilters' + findingType: + type: string + message: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsMessage' + platformProvider: + type: string + triggerSource: + $ref: '#/components/schemas/ModelsRetriageTriggerSource' + required: + - findingType + type: object + EndpointsPostRetriageFindingsMessage: + properties: + aggregation: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsAggregation' + author: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsAuthor' + comment: + $ref: '#/components/schemas/EndpointsPostRetriageFindingsComment' + gitOwnerProvider: + $ref: '#/components/schemas/ModelsOwnerProvider' + type: object + EndpointsPostRetriageFindingsOutput: + properties: + message: + type: string + messageId: + type: string + version: + type: string + required: + - messageId + - message + type: object + EndpointsPostRetriageFindingsUser: + properties: + id: + type: string + name: + type: string + type: object + EndpointsStartOnboardingInput: + properties: + gitOwnerProvider: + $ref: '#/components/schemas/ModelsOwnerProvider' + repositoryIds: + items: + type: string + type: array + required: + - gitOwnerProvider + type: object + EndpointsStartOnboardingOutput: + properties: + executionArn: + type: string + message: + type: string + version: + type: string + required: + - message + type: object + ModelsAutofixIteration: + properties: + agentVersion: + nullable: true + type: string + autofixID: + type: string + cacheHitTokenCount: + nullable: true + type: integer + completedAt: + format: date-time + nullable: true + type: string + createdAt: + format: date-time + type: string + durationSeconds: + nullable: true + type: integer + id: + type: string + inputTokenCount: + nullable: true + type: integer + iterationNumber: + type: integer + langfuseSessionID: + nullable: true + type: string + langfuseTraceID: + nullable: true + type: string + llmCostUSD: + nullable: true + type: number + modelName: + nullable: true + type: string + otelTraceID: + nullable: true + type: string + outputTokenCount: + nullable: true + type: integer + startedAt: + format: date-time + type: string + status: + $ref: '#/components/schemas/ModelsAutofixIterationStatus' + tenantID: + type: string + triggerEventID: + nullable: true + type: string + triggerType: + $ref: '#/components/schemas/ModelsAutofixIterationTriggerType' + required: + - id + - autofixID + - tenantID + - iterationNumber + - triggerType + - status + - startedAt + - createdAt + type: object + ModelsAutofixIterationStatus: + enum: + - running + - succeeded + - no_op + - surrendered + - timeout + - failed + type: string + ModelsAutofixIterationTriggerType: + enum: + - create_pr + - ci_failure + - code_review + - user_comment + - rerun + type: string + ModelsRetriageFilters: + properties: + branch: + nullable: true + type: string + findingIds: + items: + type: string + nullable: true + type: array + findingType: + $ref: '#/components/schemas/ModelsFindingType' + forceRetriage: + nullable: true + type: boolean + ownerId: + type: string + priorityMinimum: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + repositoryIds: + items: + type: string + type: array + reprocessFailedTriages: + nullable: true + type: boolean + reprocessFalsePositives: + nullable: true + type: boolean + silent: + nullable: true + type: boolean + required: + - findingIds + type: object + ModelsRetriageTriggerSource: + enum: + - api + - chat_comment + - scheduled + - webhook + - node_memory + - qa_answer + - mixed + - other + type: string + EndpointsFindingSortBy: + enum: + - '' + - time + - priority + type: string + EndpointsGetSASTEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSASTEventInterface' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - events + - numItems + - nextToken + type: object + EndpointsGetSASTFindingAutofixStateOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSASTFindingAutofixStatusOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSASTFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSASTEventInterface' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - events + - numItems + type: object + EndpointsGetSASTFindingFixOutput: + properties: + commit: + type: string + diffs: + items: + $ref: '#/components/schemas/ModelsDiffFile' + nullable: true + type: array + explanation: + type: string + pullRequestBody: + type: string + pullRequestTitle: + type: string + version: + type: string + required: + - diffs + - pullRequestTitle + - pullRequestBody + - explanation + - commit + type: object + EndpointsGetSASTFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSASTFinding' + presignedUrl: + type: string + version: + type: string + required: + - finding + - presignedUrl + type: object + EndpointsGetSASTFindingTriageOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsTriagedSASTFinding' + presignedUrl: + type: string + version: + type: string + required: + - presignedUrl + type: object + EndpointsGetSASTFindingUsersOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsCandidate' + nullable: true + type: array + version: + type: string + required: + - users + type: object + EndpointsGetSASTFindingsDetailedOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSASTFinding' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSASTFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSASTFindingPreview' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSASTRepositoriesOutput: + properties: + nextToken: + type: string + numItems: + type: integer + repositories: + additionalProperties: + $ref: '#/components/schemas/ModelsRepositoryPublic' + nullable: true + type: object + version: + type: string + required: + - version + - repositories + - numItems + - nextToken + type: object + EndpointsGetSASTRepositoryOutput: + properties: + repository: + $ref: '#/components/schemas/ModelsRepositoryPublic' + version: + type: string + required: + - repository + type: object + EndpointsGetScanRunsOutput: + properties: + scanRuns: + items: + $ref: '#/components/schemas/EndpointsScanRunSummary' + nullable: true + type: array + totalCount: + type: integer + type: object + EndpointsPatchSASTFindingInput: + properties: + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + nullable: true + type: object + EndpointsPatchSASTFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSASTFinding' + version: + type: string + required: + - finding + type: object + EndpointsPostAllowListSASTFindingBatchInput: + properties: + allowlistReason: + description: The reason for allowing the finding + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + findingIds: + description: The ID of the finding to allowlist + items: + type: string + nullable: true + type: array + required: + - findingIds + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowlistSASTFindingInput: + properties: + allowlistReason: + description: The reason for allowlisting the finding + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowlistSASTFindingOutput: + properties: + link: + description: A link to the pull request + type: string + title: + description: The title of the pull request + type: string + version: + type: string + type: object + EndpointsPostAutofixSASTFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + force: + nullable: true + type: boolean + message: + type: string + originCampaignId: + type: string + type: object + EndpointsPostAutofixSASTFindingOutput: + properties: + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + error: + type: string + version: + type: string + required: + - autoFixState + type: object + EndpointsPostCreateTicketSASTFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + campaignId: + type: string + campaignTitle: + type: string + message: + type: string + project: + type: string + type: object + EndpointsPostCreateTicketSASTFindingOutput: + properties: + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + version: + type: string + required: + - ticket + type: object + EndpointsPostUnallowlistSASTFindingInput: + properties: + unallowlistReason: + description: The reason for unallowlisting the finding + type: string + required: + - unallowlistReason + type: object + EndpointsScanRunSort: + enum: + - newest + - oldest + type: string + EndpointsScanRunSummary: + properties: + allowlistedFindingsCount: + type: integer + branch: + type: string + commitHash: + type: string + completedAt: + nullable: true + type: string + errorMessage: + nullable: true + type: string + fixedFindingsCount: + type: integer + isDefaultBranch: + type: boolean + liveFindingsCount: + type: integer + newFindingsCount: + type: integer + reintroducedFindingsCount: + type: integer + scanCompletedAt: + nullable: true + type: string + scanRunId: + type: string + severityCritical: + type: integer + severityHigh: + type: integer + severityLow: + type: integer + severityMedium: + type: integer + startedAt: + nullable: true + type: string + status: + type: string + triggerType: + type: string + type: object + ModelsAssessmentFactor: + properties: + description: + type: string + title: + type: string + type: object + ModelsCandidate: + properties: + reason: + type: string + user: + $ref: '#/components/schemas/ModelsUser' + required: + - user + - reason + type: object + ModelsCodeBlock: + properties: + codeText: + nullable: true + type: string + endLine: + type: integer + filePath: + type: string + startLine: + type: integer + type: object + ModelsCodeContext: + properties: + codeBlocks: + items: + $ref: '#/components/schemas/ModelsCodeBlock' + nullable: true + type: array + dataFlow: + type: string + error: + nullable: true + type: string + exitReason: + type: string + summary: + type: string + thoughts: + nullable: true + type: string + type: object + ModelsFixSource: + enum: + - nullify_autofix + - manual_pr + - ai_code_review + - auto_resolved + type: string + ModelsInvestigationStep: + properties: + details: + items: + type: string + nullable: true + type: array + title: + type: string + type: object + ModelsSASTEventInterface: + properties: + data: {} + id: + type: string + time: + type: string + timestampUnix: + format: int64 + type: integer + type: + $ref: '#/components/schemas/EventsEventType' + required: + - id + - time + - timestampUnix + - type + - data + type: object + ModelsSASTFinding: + properties: + aiConfidence: + nullable: true + type: number + aiDevTitle: + type: string + aiGenerated: + type: boolean + aiSignalCategory: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistState: + $ref: '#/components/schemas/ModelsAllowlistState' + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + autoFixCurrentActivity: + type: string + autoFixDurationMs: + nullable: true + type: integer + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixLLMCostUSD: + nullable: true + type: number + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + autoFixTokenCount: + nullable: true + type: integer + autoFixTotalDurationSecs: + type: integer + autoFixTotalInputTokens: + type: integer + autoFixTotalIterations: + type: integer + autoFixTotalOutputTokens: + type: integer + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictExplanation: + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + branch: + type: string + budgetExhausted: + type: boolean + budgetLimit: + format: double + type: number + budgetUsed: + format: double + type: number + category: + type: string + commitHash: + type: string + concurrencyLimit: + type: integer + createdAt: + type: string + cwe: + type: integer + deletedAt: + format: date-time + type: string + description: + type: string + devDescription: + type: string + endLine: + type: integer + entrypoint: + type: string + exploitabilityConfidence: + type: string + exploitabilityLabel: + type: string + failedTriage: + type: boolean + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + type: array + filePath: + type: string + firstSeenCommit: + type: string + fixCommit: + type: string + fixSource: + $ref: '#/components/schemas/ModelsFixSource' + fixedAt: + format: date-time + type: string + graphExists: + type: boolean + id: + type: string + impactConfidence: + type: string + impactLabel: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isCloudTriaged: + type: boolean + isFalsePositive: + type: boolean + isFixed: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + language: + $ref: '#/components/schemas/LanguageCodeLanguage' + message: + type: string + owner: + type: string + platform: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + pullRequestsAllowlist: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + type: array + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + type: array + repository: + type: string + repositoryId: + type: string + resolvedAt: + format: date-time + type: string + ruleId: + type: string + ruleUrl: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + severityConfidence: + type: string + severityLabel: + $ref: '#/components/schemas/ModelsSeverity' + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + severityScore: + type: integer + startLine: + type: integer + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + ticketState: + type: string + title: + type: string + triageAgentVersion: + type: string + triageDurationSeconds: + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageLangfuseSessionId: + nullable: true + type: string + triageLangfuseTraceId: + nullable: true + type: string + triageLlmCostUsd: + nullable: true + type: number + triageMaxInputTokens: + nullable: true + type: integer + triageStart: + format: date-time + nullable: true + type: string + triageTokenCount: + nullable: true + type: integer + triageTraceId: + nullable: true + type: string + updatedAt: + type: string + userNotes: + type: string + workflow: + type: string + required: + - triageDurationSeconds + - isResolved + type: object + ModelsSASTFindingPreview: + properties: + aiDevTitle: + type: string + aiGenerated: + type: boolean + aiTitle: + type: string + allowlistReason: + type: string + allowlistState: + $ref: '#/components/schemas/ModelsAllowlistState' + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + branch: + type: string + category: + type: string + commitHash: + type: string + createdAt: + type: string + cwe: + type: integer + endLine: + type: integer + entrypoint: + type: string + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + firstSeenCommit: + type: string + graphExists: + type: boolean + id: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isCloudTriaged: + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + language: + $ref: '#/components/schemas/LanguageCodeLanguage' + message: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + pullRequestsAllowlist: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + repository: + type: string + repositoryId: + type: string + ruleId: + type: string + ruleUrl: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + startLine: + type: integer + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + title: + type: string + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + updatedAt: + type: string + workflow: + type: string + required: + - createdAt + - updatedAt + - tenantId + - repositoryId + - projectId + - projectName + - repository + - branch + - commitHash + - firstSeenCommit + - id + - title + - aiTitle + - aiDevTitle + - category + - severity + - language + - message + - filePath + - cwe + - ruleId + - ruleUrl + - entrypoint + - startLine + - endLine + - isAllowlisted + - isArchived + - isResolved + - autoFixState + - allowlistState + - allowlistReason + - isLatest + - aiGenerated + - priorityOverride + - priorityScore + - priorityLabel + - isFalsePositive + - pullRequestsAllowlist + - pullRequestsAutofix + - fileOwners + - workflow + - graphExists + - isCloudTriaged + type: object + ModelsTriagedSASTFinding: + properties: + agentVersion: + type: string + assessmentFactors: + items: + $ref: '#/components/schemas/ModelsAssessmentFactor' + nullable: true + type: array + codeContext: + $ref: '#/components/schemas/ModelsCodeContext' + falsePositiveReason: + nullable: true + type: string + finding: + $ref: '#/components/schemas/ModelsSASTFinding' + fixStoryPointEstimate: + type: integer + investigationSteps: + items: + $ref: '#/components/schemas/ModelsInvestigationStep' + nullable: true + type: array + isFalsePositive: + type: boolean + orgContextVersion: + type: string + priority: + $ref: '#/components/schemas/ModelsCodeFindingPriority' + repoContextVersion: + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + triagedCommitSha: + type: string + required: + - isFalsePositive + - investigationSteps + - assessmentFactors + - agentVersion + - triagedCommitSha + - orgContextVersion + - repoContextVersion + type: object + EndpointsGetSCAContainerFindingAutofixStateOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSCAContainerFindingAutofixStatusOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSCAContainerFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSCAEventInterface' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - events + - numItems + type: object + EndpointsGetSCAContainerFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSCAContainerfileFinding' + version: + type: string + required: + - finding + type: object + EndpointsGetSCAContainerFindingTriageOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsTriagedContainerFinding' + presignedUrl: + type: string + version: + type: string + required: + - presignedUrl + type: object + EndpointsGetSCAContainerFindingUsersOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsCandidate' + nullable: true + type: array + version: + type: string + required: + - users + type: object + EndpointsGetSCAContainerFindingsDetailedOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSCAContainerfileFinding' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSCAContainerFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSCAContainerfileFindingPreview' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSCADependencyFindingAutofixStateOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSCADependencyFindingAutofixStatusOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSCADependencyFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSCAEventInterface' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - events + - numItems + type: object + EndpointsGetSCADependencyFindingFixOutput: + properties: + diffs: + items: + $ref: '#/components/schemas/ModelsDiffFile' + nullable: true + type: array + explanation: + type: string + pullRequestBody: + type: string + pullRequestTitle: + type: string + version: + type: string + required: + - diffs + type: object + EndpointsGetSCADependencyFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSCADependencyFinding' + version: + type: string + required: + - finding + type: object + EndpointsGetSCADependencyFindingTriageOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsTriagedDependencyFinding' + presignedUrl: + type: string + version: + type: string + required: + - presignedUrl + type: object + EndpointsGetSCADependencyFindingUsersOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsCandidate' + nullable: true + type: array + version: + type: string + required: + - users + type: object + EndpointsGetSCADependencyFindingsDetailedOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSCADependencyFinding' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSCADependencyFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSCADependencyFindingPreview' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSCAEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSCAEventInterface' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - events + - numItems + - nextToken + type: object + EndpointsGetSCARepositoriesOutput: + properties: + nextToken: + type: string + numItems: + type: integer + repositories: + additionalProperties: + $ref: '#/components/schemas/ModelsSCARepositoryPublic' + nullable: true + type: object + version: + type: string + required: + - repositories + - numItems + - nextToken + type: object + EndpointsGetSCARepositoryOutput: + properties: + repository: + $ref: '#/components/schemas/ModelsSCARepositoryPublic' + version: + type: string + required: + - repository + type: object + EndpointsGetSCARepositorySBOMOutput: + properties: + sbom: + $ref: '#/components/schemas/ModelsCDXGen' + version: + type: string + required: + - sbom + type: object + EndpointsPatchSCAContainerFindingInput: + properties: + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + nullable: true + type: object + EndpointsPatchSCAContainerFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSCAContainerfileFinding' + version: + type: string + required: + - finding + type: object + EndpointsPatchSCADependencyFindingInput: + properties: + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + nullable: true + type: object + EndpointsPatchSCADependencyFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSCADependencyFinding' + version: + type: string + required: + - finding + type: object + EndpointsPostAllowlistSCAContainerFindingInput: + properties: + allowlistReason: + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowlistSCADependencyFindingInput: + properties: + allowlistReason: + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - allowlistReason + - allowlistType + type: object + EndpointsPostCreateTicketDependencyFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + campaignId: + type: string + campaignTitle: + type: string + message: + type: string + project: + type: string + type: object + EndpointsPostCreateTicketDependencyFindingOutput: + properties: + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + version: + type: string + required: + - ticket + type: object + EndpointsPostSCAContainerFindingFixInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + force: + nullable: true + type: boolean + message: + type: string + originCampaignId: + type: string + type: object + EndpointsPostSCAContainerFindingFixOutput: + properties: + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + error: + type: string + version: + type: string + required: + - autoFixState + type: object + EndpointsPostSCADependencyFindingFixInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + force: + nullable: true + type: boolean + message: + type: string + originCampaignId: + type: string + type: object + EndpointsPostSCADependencyFindingFixOutput: + properties: + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + error: + type: string + version: + type: string + required: + - autoFixState + type: object + EndpointsPostUnallowlistSCAContainerFindingInput: + properties: + unallowlistReason: + type: string + required: + - unallowlistReason + type: object + EndpointsPostUnallowlistSCADependencyFindingInput: + properties: + unallowlistReason: + type: string + required: + - unallowlistReason + type: object + ModelsCVE: + properties: + cisaKev: + type: boolean + cvss: + format: double + type: number + epss: + format: double + type: number + epssPercentile: + format: double + type: number + exploitabilityScore: + format: double + type: number + id: + type: string + impactScore: + format: double + type: number + osvReachability: + $ref: '#/components/schemas/ModelsOSVReachability' + priority: + $ref: '#/components/schemas/ModelsPriorityLabel' + reachabilityConfidence: + $ref: '#/components/schemas/ModelsCVEReachConfidence' + reachabilityEvidence: + type: string + reachabilityMethod: + $ref: '#/components/schemas/ModelsCVEReachMethod' + reachable: + type: boolean + severity: + $ref: '#/components/schemas/ModelsSeverity' + vectorString: + type: string + version: + type: string + required: + - id + - epss + - epssPercentile + - cisaKev + - cvss + - version + - priority + - severity + - exploitabilityScore + - impactScore + - osvReachability + - vectorString + type: object + ModelsCVEDigest: + properties: + cvss: + format: float + type: number + epss_pct: + format: float + type: number + fix_versions: + items: + type: string + type: array + has_fix: + type: boolean + id: + type: string + kev: + type: boolean + published_at: + format: date-time + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + title: + type: string + type: object + ModelsCVEReachConfidence: + enum: + - high + - medium + - low + type: string + ModelsCVEReachMethod: + enum: + - symbol_lsp + - symbol_grep + - package_only + - ai_judgment + type: string + ModelsCallSite: + properties: + file_path: + type: string + line: + type: integer + symbol: + type: string + type: object + ModelsDepScope: + enum: + - PROD + - DEV + - TEST + - OPTIONAL + - UNKNOWN + type: string + ModelsDepTreeFacts: + properties: + depth: + nullable: true + type: integer + direct: + type: boolean + import_path: + items: + type: string + type: array + scope: + $ref: '#/components/schemas/ModelsDepScope' + type: object + ModelsDisplayCVE: + properties: + cisaKev: + type: boolean + cvss: + format: double + type: number + exploitabilityScore: + format: double + type: number + id: + type: string + impactScore: + format: double + type: number + severity: + $ref: '#/components/schemas/ModelsSeverity' + vectorString: + type: string + version: + type: string + required: + - id + - cvss + - severity + - cisaKev + - exploitabilityScore + - impactScore + - vectorString + - version + type: object + ModelsDistro: + properties: + name: + type: string + version: + type: string + type: object + ModelsDossier: + properties: + cves: + items: + $ref: '#/components/schemas/ModelsCVEDigest' + nullable: true + type: array + deptree: + $ref: '#/components/schemas/ModelsDepTreeFacts' + emitted_at: + format: date-time + type: string + input_hash: + type: string + package: + type: string + package_group_id: + type: string + path: + $ref: '#/components/schemas/ModelsPathFacts' + per_cve_reach: + additionalProperties: + $ref: '#/components/schemas/ModelsPackageReach' + type: object + prior: + $ref: '#/components/schemas/ModelsPriorDecision' + reachability: + $ref: '#/components/schemas/ModelsPackageReach' + scanner_version: + type: string + v: + type: integer + version: + type: string + type: object + ModelsDossierConfidence: + enum: + - HIGH + - MEDIUM + - LOW + - AMBIGUOUS + type: string + ModelsDossierTier: + enum: + - L0_POLICY + - L2_QUICK + - L3_CODE + - L4_FULL + - MANUAL + type: string + ModelsImageMetadata: + properties: + digest: + type: string + distro: + $ref: '#/components/schemas/ModelsDistro' + fullReference: + type: string + registryDomain: + type: string + registryPath: + type: string + shortName: + type: string + tag: + type: string + required: + - shortName + - tag + - digest + - registryDomain + - registryPath + - fullReference + - distro + type: object + ModelsOSVReachability: + properties: + called: + type: boolean + required: + - called + type: object + ModelsPackageReach: + properties: + call_sites: + items: + $ref: '#/components/schemas/ModelsCallSite' + type: array + called: + type: boolean + confidence: + $ref: '#/components/schemas/ModelsDossierConfidence' + limits: + items: + type: string + type: array + method: + $ref: '#/components/schemas/ModelsReachMethod' + type: object + ModelsPathCategory: + enum: + - SOURCE + - VENDORED + - TEST + - GENERATED + - LOCKFILE_ONLY + - UNKNOWN + type: string + ModelsPathFacts: + properties: + category: + $ref: '#/components/schemas/ModelsPathCategory' + confidence: + $ref: '#/components/schemas/ModelsDossierConfidence' + reason: + type: string + type: object + ModelsPriorDecision: + properties: + decided_at: + format: date-time + type: string + prior_hash: + type: string + source: + type: string + tier: + $ref: '#/components/schemas/ModelsDossierTier' + verdict: + type: string + type: object + ModelsReachMethod: + enum: + - OSV + - TREESITTER + - COMBINED + - UNSUPPORTED + - TIMEOUT + type: string + ModelsSCAContainerfileArtifact: + properties: + name: + type: string + purl: + type: string + type: + type: string + version: + type: string + required: + - name + - version + - type + - purl + type: object + ModelsSCAContainerfileFinding: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + autoFixCurrentActivity: + type: string + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictExplanation: + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + branch: + type: string + budgetExhausted: + type: boolean + budgetLimit: + format: double + type: number + budgetUsed: + format: double + type: number + commitHash: + type: string + concurrencyLimit: + type: integer + createdAt: + type: string + description: + type: string + devDescription: + type: string + dossier: + $ref: '#/components/schemas/ModelsDossier' + exploitabilityConfidence: + type: string + exploitabilityLabel: + type: string + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + firstSeenCommit: + type: string + id: + type: string + imageMetadata: + $ref: '#/components/schemas/ModelsImageMetadata' + impactConfidence: + type: string + impactLabel: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + line: + type: integer + numCritical: + type: integer + numHigh: + type: integer + numLow: + type: integer + numMedium: + type: integer + numUnknown: + type: integer + owner: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + repository: + type: string + repositoryId: + type: string + resolvedAt: + format: date-time + type: string + severityConfidence: + type: string + severityLabel: + $ref: '#/components/schemas/ModelsSeverity' + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + severityScore: + type: integer + suggestedImages: + items: + $ref: '#/components/schemas/ModelsImageMetadata' + nullable: true + type: array + suggestions: + items: + $ref: '#/components/schemas/ModelsSCAContainerfileSuggestion' + nullable: true + type: array + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + ticketState: + nullable: true + type: string + triageAgentVersion: + type: string + triageDurationSeconds: + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageLLMCostUSD: + format: double + type: number + triageLangfuseSessionIds: + items: + type: string + nullable: true + type: array + triageLangfuseTraceIds: + items: + type: string + nullable: true + type: array + triageStart: + format: date-time + nullable: true + type: string + triageTraceIds: + items: + type: string + nullable: true + type: array + updatedAt: + type: string + userNotes: + type: string + vulnerabilities: + items: + $ref: '#/components/schemas/ModelsSCAContainerfileVulnerability' + nullable: true + type: array + vulnerabilitiesCVEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesMaxSeverity: + $ref: '#/components/schemas/ModelsSeverity' + vulnerablePackages: + items: + $ref: '#/components/schemas/ModelsSCAVulnerableContainerPackage' + nullable: true + type: array + workflow: + type: string + required: + - id + - createdAt + - updatedAt + - imageMetadata + - filePath + - line + - numCritical + - numHigh + - numMedium + - numLow + - numUnknown + - suggestions + - tenantId + - installationId + - isLatest + - isArchived + - pullRequestsAutofix + - severityOverride + - priorityOverride + - userNotes + - isAllowlisted + - allowlistReason + - aiTitle + - aiDevTitle + - description + - devDescription + - isFalsePositive + - priorityScore + - priorityLabel + - priorityLabelReason + - severityLabel + - severityScore + - severityConfidence + - exploitabilityLabel + - exploitabilityConfidence + - impactLabel + - impactConfidence + - triageAgentVersion + - triageDurationSeconds + - triageLLMCostUSD + - triageLangfuseTraceIds + - triageLangfuseSessionIds + - triageTraceIds + - vulnerabilities + - owner + - repositoryId + - repository + - branch + - commitHash + - projectId + - projectName + - fileOwners + - vulnerabilitiesCVEIds + - vulnerabilitiesMaxSeverity + - vulnerablePackages + - suggestedImages + - isResolved + type: object + ModelsSCAContainerfileFindingPreview: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + branch: + type: string + commitHash: + type: string + createdAt: + type: string + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + id: + type: string + imageMetadata: + $ref: '#/components/schemas/ModelsImageMetadata' + isAllowlisted: + type: boolean + isArchived: + type: boolean + isAutoFixable: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + line: + type: integer + numCritical: + type: integer + numHigh: + type: integer + numLow: + type: integer + numMedium: + type: integer + numUnknown: + type: integer + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + repository: + type: string + repositoryId: + type: string + suggestedImages: + items: + $ref: '#/components/schemas/ModelsImageMetadata' + nullable: true + type: array + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + ticketState: + type: string + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + updatedAt: + type: string + vulnerabilitiesCVEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesMaxSeverity: + $ref: '#/components/schemas/ModelsSeverity' + workflow: + type: string + required: + - id + - createdAt + - updatedAt + - imageMetadata + - aiTitle + - aiDevTitle + - filePath + - line + - numCritical + - numHigh + - numMedium + - numLow + - numUnknown + - isLatest + - isAllowlisted + - allowlistReason + - isArchived + - isAutoFixable + - isResolved + - pullRequestsAutofix + - ticketState + - priorityOverride + - priorityScore + - priorityLabel + - isFalsePositive + - repositoryId + - repository + - branch + - commitHash + - projectId + - projectName + - tenantId + - fileOwners + - vulnerabilitiesCVEIds + - vulnerabilitiesMaxSeverity + - suggestedImages + - workflow + type: object + ModelsSCAContainerfileSuggestion: + properties: + imageMetadata: + $ref: '#/components/schemas/ModelsImageMetadata' + numCritical: + type: integer + numHigh: + type: integer + numLow: + type: integer + numMedium: + type: integer + numUnknown: + type: integer + vulnerabilities: + items: + $ref: '#/components/schemas/ModelsSCAContainerfileVulnerability' + nullable: true + type: array + vulnerablePackages: + items: + $ref: '#/components/schemas/ModelsSCAVulnerableContainerPackage' + nullable: true + type: array + required: + - imageMetadata + - numCritical + - numHigh + - numMedium + - numLow + - numUnknown + - vulnerabilities + - vulnerablePackages + type: object + ModelsSCAContainerfileVulnerability: + properties: + artifact: + $ref: '#/components/schemas/ModelsSCAContainerfileArtifact' + cves: + $ref: '#/components/schemas/ModelsCVE' + fixed: + type: string + hasFix: + type: boolean + severity: + $ref: '#/components/schemas/ModelsSeverity' + required: + - severity + - cves + - hasFix + - fixed + - artifact + type: object + ModelsSCADependencyFinding: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + autoFixCurrentActivity: + type: string + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictExplanation: + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + branch: + type: string + budgetExhausted: + type: boolean + budgetLimit: + format: double + type: number + budgetUsed: + format: double + type: number + commitHash: + type: string + concurrencyLimit: + type: integer + createdAt: + type: string + description: + type: string + devDescription: + type: string + dossier: + $ref: '#/components/schemas/ModelsDossier' + exploitabilityConfidence: + type: string + exploitabilityLabel: + type: string + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + firstSeenCommit: + type: string + graphExists: + type: boolean + hasReachableCVEs: + type: boolean + id: + type: string + impactConfidence: + type: string + impactLabel: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isCloudTriaged: + type: boolean + isDirect: + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isReachabilitySupported: + type: boolean + isResolved: + type: boolean + line: + type: integer + nonAIPriorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + numCritical: + type: integer + numHigh: + type: integer + numLow: + type: integer + numMedium: + type: integer + numUnknown: + type: integer + owner: + type: string + package: + type: string + packageFilePath: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + repository: + type: string + repositoryId: + type: string + resolvedAt: + format: date-time + type: string + resolvedWithoutLockfile: + type: boolean + severityConfidence: + type: string + severityLabel: + $ref: '#/components/schemas/ModelsSeverity' + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + severityScore: + type: integer + suggestedVersion: + type: string + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + ticketState: + nullable: true + type: string + triageAgentVersion: + type: string + triageDurationSeconds: + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageLLMCostUSD: + format: double + type: number + triageLangfuseSessionIds: + items: + type: string + nullable: true + type: array + triageLangfuseTraceIds: + items: + type: string + nullable: true + type: array + triageStart: + format: date-time + nullable: true + type: string + triageTraceIds: + items: + type: string + nullable: true + type: array + updatedAt: + type: string + userNotes: + type: string + version: + type: string + vulnerabilities: + items: + $ref: '#/components/schemas/ModelsSCADependencyVulnerability' + nullable: true + type: array + vulnerabilitiesCVEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesCWEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesMaxPriority: + $ref: '#/components/schemas/ModelsPriorityLabel' + vulnerabilitiesMaxSeverity: + $ref: '#/components/schemas/ModelsSeverity' + workflow: + type: string + required: + - id + - createdAt + - updatedAt + - isDirect + - package + - packageFilePath + - nonAIPriorityLabel + - version + - filePath + - line + - numCritical + - numHigh + - numMedium + - numLow + - numUnknown + - installationId + - repository + - repositoryId + - projectId + - projectName + - tenantId + - owner + - branch + - commitHash + - vulnerabilities + - hasReachableCVEs + - isLatest + - isReachabilitySupported + - isArchived + - workflow + - pullRequestsAutofix + - severityOverride + - priorityOverride + - userNotes + - isAllowlisted + - allowlistReason + - aiTitle + - aiDevTitle + - description + - devDescription + - isFalsePositive + - priorityScore + - priorityLabel + - priorityLabelReason + - severityLabel + - severityScore + - severityConfidence + - exploitabilityLabel + - exploitabilityConfidence + - impactLabel + - impactConfidence + - triageAgentVersion + - triageDurationSeconds + - triageLLMCostUSD + - triageLangfuseTraceIds + - triageLangfuseSessionIds + - triageTraceIds + - fileOwners + - vulnerabilitiesMaxSeverity + - vulnerabilitiesMaxPriority + - vulnerabilitiesCWEIds + - vulnerabilitiesCVEIds + - suggestedVersion + - isResolved + type: object + ModelsSCADependencyFindingPreview: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + branch: + type: string + commitHash: + type: string + createdAt: + type: string + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + firstSeenCommit: + type: string + graphExists: + type: boolean + hasReachableCVEs: + type: boolean + id: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isAutoFixable: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isCloudTriaged: + type: boolean + isDirect: + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + isStaticReachabilitySupported: + type: boolean + line: + type: integer + numCritical: + type: integer + numHigh: + type: integer + numLow: + type: integer + numMedium: + type: integer + numUnknown: + type: integer + owner: + type: string + package: + type: string + packageFilePath: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + nullable: true + type: array + repository: + type: string + repositoryId: + type: string + suggestedVersion: + type: string + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + ticketState: + type: string + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + updatedAt: + type: string + version: + type: string + vulnerabilitiesCVEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesCWEIds: + items: + type: string + nullable: true + type: array + vulnerabilitiesMaxPriority: + $ref: '#/components/schemas/ModelsPriorityLabel' + vulnerabilitiesMaxSeverity: + $ref: '#/components/schemas/ModelsSeverity' + required: + - id + - createdAt + - updatedAt + - isDirect + - package + - packageFilePath + - aiTitle + - aiDevTitle + - version + - filePath + - line + - numCritical + - numHigh + - numMedium + - numLow + - numUnknown + - installationId + - repository + - repositoryId + - projectId + - projectName + - tenantId + - owner + - branch + - commitHash + - pullRequestsAutofix + - ticketState + - isLatest + - isArchived + - isAllowlisted + - allowlistReason + - isAutoFixable + - isStaticReachabilitySupported + - isResolved + - priorityOverride + - priorityScore + - priorityLabel + - isFalsePositive + - hasReachableCVEs + - vulnerabilitiesMaxSeverity + - vulnerabilitiesMaxPriority + - vulnerabilitiesCWEIds + - vulnerabilitiesCVEIds + - suggestedVersion + - fileOwners + - autoFixState + - graphExists + - isCloudTriaged + type: object + ModelsSCADependencyVulnerability: + properties: + cves: + items: + $ref: '#/components/schemas/ModelsCVE' + nullable: true + type: array + cwes: + items: + type: string + nullable: true + type: array + details: + type: string + fixed: + type: string + hasFix: + type: boolean + id: + type: string + introduced: + type: string + references: + items: + type: string + nullable: true + type: array + severity: + $ref: '#/components/schemas/ModelsSeverity' + title: + type: string + version: + type: string + required: + - id + - hasFix + - title + - details + - severity + - cves + - cwes + - introduced + - fixed + - version + - references + type: object + ModelsSCAEventInterface: + properties: + branch: + type: string + data: {} + id: + type: string + repository: + type: string + time: + type: string + timestampUnix: + format: int64 + type: integer + type: + $ref: '#/components/schemas/EventsEventType' + required: + - id + - time + - timestampUnix + - type + - repository + - branch + - data + type: object + ModelsSCARepositoryPublic: + type: object + ModelsSCAVulnerableContainerPackage: + properties: + cves: + items: + $ref: '#/components/schemas/ModelsDisplayCVE' + nullable: true + type: array + name: + type: string + namespace: + type: string + purl: + type: string + type: + type: string + version: + type: string + required: + - namespace + - name + - version + - type + - purl + - cves + type: object + ModelsTriagedContainerFinding: + properties: + agentVersion: + type: string + codeContext: + $ref: '#/components/schemas/ModelsCodeContext' + finding: + $ref: '#/components/schemas/ModelsSCAContainerfileFinding' + fixStoryPointEstimate: + type: integer + investigationSteps: + items: + $ref: '#/components/schemas/ModelsInvestigationStep' + nullable: true + type: array + orgContextVersion: + type: string + repoContextVersion: + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + triagedCommitSha: + type: string + required: + - investigationSteps + - agentVersion + - triagedCommitSha + - orgContextVersion + - repoContextVersion + type: object + ModelsTriagedDependencyFinding: + properties: + agentVersion: + type: string + codeContext: + $ref: '#/components/schemas/ModelsCodeContext' + finding: + $ref: '#/components/schemas/ModelsSCADependencyFinding' + fixStoryPointEstimate: + type: integer + investigationSteps: + items: + $ref: '#/components/schemas/ModelsInvestigationStep' + nullable: true + type: array + orgContextVersion: + type: string + repoContextVersion: + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + triagedCommitSha: + type: string + required: + - investigationSteps + - agentVersion + - triagedCommitSha + - orgContextVersion + - repoContextVersion + type: object + DependenciesDependencyUsage: + properties: + isPinned: + type: boolean + name: + type: string + platform: + type: string + repositoryId: + type: string + stepName: + type: string + tenantId: + type: string + versionRef: + type: string + workflowFile: + type: string + type: object + EndpointsAnalyzeContainerInput: + properties: + idempotencyKey: + description: Stable key from the caller — retries within 24h coalesce onto the same job + type: string + previousReference: + description: Optional prior tag/digest used as the diff baseline + type: string + reference: + description: Tag OR sha256 digest, e.g. '1.25.4' or 'sha256:...' + type: string + registry: + description: Image registry hostname, e.g. index.docker.io or public.ecr.aws + type: string + repository: + description: Repository path within the registry, e.g. library/nginx + type: string + required: + - registry + - repository + - reference + type: object + EndpointsAnalyzeContainerOutput: + properties: + cacheHit: + type: boolean + jobId: + type: string + status: + type: string + verdict: + type: string + version: + type: string + type: object + EndpointsAnalyzeDependencyInput: + properties: + ecosystem: + description: Package ecosystem (npm, pypi, go, maven, rubygems, crates.io, ...) + type: string + idempotencyKey: + description: Stable key from the caller — retries within 24h coalesce onto the same job + type: string + name: + description: Package name + type: string + previousVersion: + description: Optional prior version used as the diff baseline + type: string + version: + description: Package version to analyse + type: string + required: + - ecosystem + - name + - version + type: object + EndpointsAnalyzeDependencyOutput: + properties: + cacheHit: + type: boolean + jobId: + type: string + status: + type: string + verdict: + type: string + version: + type: string + type: object + EndpointsBatchQueryDependenciesInput: + properties: + packages: + items: + $ref: '#/components/schemas/EndpointsBatchQueryDependencyPackage' + nullable: true + type: array + required: + - packages + type: object + EndpointsBatchQueryDependenciesOutput: + properties: + results: + items: + $ref: '#/components/schemas/EndpointsBatchQueryDependencyResult' + nullable: true + type: array + version: + type: string + type: object + EndpointsBatchQueryDependencyPackage: + properties: + ecosystem: + type: string + name: + type: string + version: + type: string + required: + - ecosystem + - name + - version + type: object + EndpointsBatchQueryDependencyResult: + properties: + ecosystem: + type: string + isMalicious: + type: boolean + malwareVerdict: + type: string + name: + type: string + version: + type: string + vulnerabilities: + items: + $ref: '#/components/schemas/EndpointsBatchQueryVulnInfo' + nullable: true + type: array + type: object + EndpointsBatchQueryVulnInfo: + properties: + advisoryId: + type: string + aliases: + items: + type: string + type: array + cvssScore: + nullable: true + type: number + fixedVersion: + type: string + isKev: + type: boolean + isMalware: + type: boolean + severity: + $ref: '#/components/schemas/ModelsSeverity' + summary: + type: string + type: object + EndpointsGetDependenciesOutput: + properties: + dependencies: + items: + $ref: '#/components/schemas/DependenciesDependencyUsage' + nullable: true + type: array + numItems: + type: integer + version: + type: string + type: object + EndpointsGetSCPMEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSCPMEventInterface' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - events + - numItems + type: object + EndpointsGetSCPMFindingAutofixStateOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSCPMFindingAutofixStatusOutput: + properties: + status: + $ref: '#/components/schemas/EndpointsAutofixStatusOutput' + version: + type: string + required: + - status + type: object + EndpointsGetSCPMFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSCPMEventInterface' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - events + - numItems + type: object + EndpointsGetSCPMFindingFixOutput: + properties: + commit: + type: string + diffs: + items: + $ref: '#/components/schemas/ModelsDiffFile' + nullable: true + type: array + explanation: + type: string + pullRequestBody: + type: string + pullRequestTitle: + type: string + version: + type: string + required: + - diffs + - pullRequestTitle + - pullRequestBody + - explanation + - commit + type: object + EndpointsGetSCPMFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSCPMFinding' + presignedUrl: + type: string + version: + type: string + required: + - finding + - presignedUrl + type: object + EndpointsGetSCPMFindingTriageOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsTriagedSCPMFinding' + presignedUrl: + type: string + version: + type: string + required: + - presignedUrl + type: object + EndpointsGetSCPMFindingsDetailedOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSCPMFinding' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSCPMFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSCPMFindingPreview' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsPatchSCPMFindingInput: + properties: + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + nullable: true + type: object + EndpointsPatchSCPMFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSCPMFinding' + version: + type: string + required: + - finding + type: object + EndpointsPostAllowListSCPMFindingBatchInput: + properties: + allowlistReason: + description: The reason for allowing the finding + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + findingIds: + description: The ID of the finding to allowlist + items: + type: string + nullable: true + type: array + required: + - findingIds + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowlistSCPMFindingInput: + properties: + allowlistReason: + description: The reason for allowlisting the finding + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowlistSCPMFindingOutput: + properties: + link: + description: A link to the pull request + type: string + title: + description: The title of the pull request + type: string + version: + type: string + type: object + EndpointsPostAutofixSCPMFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + force: + nullable: true + type: boolean + message: + type: string + originCampaignId: + type: string + type: object + EndpointsPostAutofixSCPMFindingOutput: + properties: + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + error: + type: string + version: + type: string + required: + - autoFixState + type: object + EndpointsPostCacheAutofixSCPMFindingInput: + properties: + force: + nullable: true + type: boolean + type: object + EndpointsPostCreatePullRequestSCPMFindingInput: + properties: + message: + description: Appended to the PR description body + type: string + type: object + EndpointsPostCreatePullRequestSCPMFindingOutput: + properties: + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + error: + type: string + version: + type: string + required: + - autoFixState + type: object + EndpointsPostGetUploadSCPMFindingsURLInput: + properties: + scanId: + type: string + required: + - scanId + type: object + EndpointsPostGetUploadSCPMFindingsURLOutput: + properties: + s3UploadURL: + type: string + version: + type: string + required: + - s3UploadURL + type: object + EndpointsPostRetriageSCPMFindingsInput: + properties: + branch: + nullable: true + type: string + continueOnError: + nullable: true + type: boolean + findingIds: + items: + type: string + nullable: true + type: array + forceRetriage: + nullable: true + type: boolean + priorityMinimum: + nullable: true + type: string + repositoryIds: + items: + type: string + nullable: true + type: array + reprocessFailedTriages: + nullable: true + type: boolean + reprocessFalsePositives: + nullable: true + type: boolean + required: + - findingIds + - repositoryIds + type: object + EndpointsPostRetriageSCPMFindingsOutput: + properties: + message: + type: string + version: + type: string + required: + - message + - version + type: object + EndpointsPostUnallowlistSCPMFindingInput: + properties: + unallowlistReason: + description: The reason for unallowlisting the finding + type: string + required: + - unallowlistReason + type: object + ModelsSCPMEventInterface: + properties: + data: {} + id: + type: string + time: + type: string + timestampUnix: + format: int64 + type: integer + type: + $ref: '#/components/schemas/EventsEventType' + required: + - id + - time + - timestampUnix + - type + - data + type: object + ModelsSCPMFinding: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistType: + type: string + autoFixCurrentActivity: + type: string + autoFixEndTime: + format: date-time + nullable: true + type: string + autoFixStartTime: + format: date-time + nullable: true + type: string + autoFixState: + $ref: '#/components/schemas/ModelsAutoFixState' + autofixVerdictAt: + format: date-time + nullable: true + type: string + autofixVerdictExplanation: + nullable: true + type: string + autofixVerdictReason: + $ref: '#/components/schemas/ModelsAutofixFailureReason' + nullable: true + branch: + type: string + budgetExhausted: + type: boolean + budgetLimit: + format: double + type: number + budgetUsed: + format: double + type: number + commitAuthor: + type: string + commitHash: + type: string + commitMessage: + type: string + commitUrl: + type: string + concurrencyLimit: + type: integer + createdAt: + type: string + deletedAt: + format: date-time + type: string + description: + type: string + filePath: + type: string + firstSeenCommit: + type: string + id: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isAutoFixableAgentVerdict: + nullable: true + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + language: + type: string + message: + type: string + owner: + type: string + platform: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityScore: + format: double + type: number + projectId: + type: string + projectName: + type: string + pullRequestId: + type: string + pullRequestUrl: + type: string + pullRequestsAutofix: + items: + $ref: '#/components/schemas/ModelsPullRequestInfo' + type: array + repository: + type: string + repositoryId: + type: string + ruleId: + type: string + ruleUrl: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + tenantId: + type: string + ticket: + type: string + ticketState: + type: string + title: + type: string + updatedAt: + type: string + workflow: + type: string + required: + - platform + - installationId + - isLatest + - isArchived + - isAllowlisted + - isFalsePositive + - isResolved + type: object + ModelsSCPMFindingPreview: + properties: + branch: + type: string + category: + type: string + commitAuthor: + type: string + commitHash: + type: string + commitMessage: + type: string + commitUrl: + type: string + confidence: + type: string + createdAt: + type: string + description: + type: string + filePath: + type: string + id: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isFalsePositive: + type: boolean + isLatest: + type: boolean + isResolved: + type: boolean + language: + type: string + message: + type: string + owasp: + items: + type: string + nullable: true + type: array + owner: + type: string + platform: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityScore: + format: double + type: number + projectId: + type: string + projectName: + type: string + pullRequestId: + type: string + pullRequestUrl: + type: string + references: + items: + type: string + nullable: true + type: array + repository: + type: string + repositoryId: + type: string + ruleId: + type: string + ruleName: + type: string + severity: + $ref: '#/components/schemas/ModelsSeverity' + tags: + items: + type: string + nullable: true + type: array + tenantId: + type: string + title: + type: string + updatedAt: + type: string + required: + - createdAt + - updatedAt + - tenantId + - repositoryId + - projectId + - projectName + - platform + - installationId + - repository + - owner + - branch + - commitHash + - commitMessage + - commitAuthor + - commitUrl + - pullRequestId + - pullRequestUrl + - isLatest + - isArchived + - isAllowlisted + - isFalsePositive + - isResolved + - id + - title + - category + - severity + - confidence + - ruleId + - ruleName + - language + - filePath + - message + - description + - references + - tags + - owasp + - priorityLabel + - priorityScore + - priorityLabelReason + type: object + ModelsTriagedSCPMFinding: + properties: + falsePositiveReason: + nullable: true + type: string + finding: + $ref: '#/components/schemas/ModelsSCPMFinding' + fixStoryPointEstimate: + type: integer + isFalsePositive: + type: boolean + priority: + $ref: '#/components/schemas/ModelsCodeFindingPriority' + repoContextVersion: + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + required: + - isFalsePositive + - fixStoryPointEstimate + - repoContextVersion + type: object + EndpointsGetSecretsEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSecretsEventInterface' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - events + - numItems + - nextToken + type: object + EndpointsGetSecretsFindingEventsOutput: + properties: + events: + items: + $ref: '#/components/schemas/ModelsSecretsEventInterface' + nullable: true + type: array + numItems: + type: integer + version: + type: string + required: + - events + - numItems + type: object + EndpointsGetSecretsFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSecretsCredentialsFinding' + presignedUrl: + type: string + version: + type: string + required: + - finding + type: object + EndpointsGetSecretsFindingTriageOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsTriagedSecretsCredentialsFinding' + version: + type: string + type: object + EndpointsGetSecretsFindingUsersOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsCandidate' + nullable: true + type: array + version: + type: string + required: + - users + type: object + EndpointsGetSecretsFindingsDetailedOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSecretsCredentialsFinding' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSecretsFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSecretsCredentialsFindingPreview' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsGetSecretsSensitiveDataFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSecretsSensitiveDataFinding' + presignedUrl: + type: string + version: + type: string + required: + - finding + type: object + EndpointsGetSecretsSensitiveDataFindingTriageOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsTriagedSecretsSensitiveDataFinding' + version: + type: string + type: object + EndpointsGetSecretsSensitiveDataFindingUsersOutput: + properties: + users: + items: + $ref: '#/components/schemas/ModelsCandidate' + nullable: true + type: array + version: + type: string + required: + - users + type: object + EndpointsGetSecretsSensitiveDataFindingsOutput: + properties: + findings: + items: + $ref: '#/components/schemas/ModelsSecretsSensitiveDataFindingPreview' + nullable: true + type: array + nextToken: + type: string + numItems: + type: integer + version: + type: string + required: + - findings + - numItems + - nextToken + type: object + EndpointsPatchSecretsFindingInput: + properties: + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + nullable: true + userNotes: + nullable: true + type: string + type: object + EndpointsPatchSecretsFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSecretsCredentialsFinding' + version: + type: string + required: + - finding + type: object + EndpointsPatchSecretsSensitiveDataFindingInput: + properties: + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + nullable: true + userNotes: + nullable: true + type: string + type: object + EndpointsPatchSecretsSensitiveDataFindingOutput: + properties: + finding: + $ref: '#/components/schemas/ModelsSecretsSensitiveDataFinding' + version: + type: string + required: + - finding + type: object + EndpointsPostAllowListSecretsCredentialFindingInput: + properties: + allowlistReason: + description: The reason for allowlisting the finding + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowListSecretsFindingBatchInput: + properties: + allowlistReason: + description: The reason for allowing the finding + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + findingIds: + description: The ID of the finding to allowlist + items: + type: string + nullable: true + type: array + required: + - findingIds + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowlistSecretsSensitiveDataFindingBatchInput: + properties: + allowlistReason: + description: The reason for allowlisting the findings + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + findingIds: + description: The IDs of the findings to allowlist + items: + type: string + nullable: true + type: array + required: + - findingIds + - allowlistReason + - allowlistType + type: object + EndpointsPostAllowlistSecretsSensitiveDataFindingInput: + properties: + allowlistReason: + description: The reason for allowlisting the finding + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - allowlistReason + - allowlistType + type: object + EndpointsPostCreateTicketSecretsFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + campaignId: + type: string + campaignTitle: + type: string + message: + type: string + project: + type: string + type: object + EndpointsPostCreateTicketSecretsFindingOutput: + properties: + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + version: + type: string + required: + - ticket + type: object + EndpointsPostCreateTicketSecretsSensitiveDataFindingInput: + properties: + assignees: + items: + $ref: '#/components/schemas/ModelsUser' + type: array + campaignId: + type: string + campaignTitle: + type: string + message: + type: string + project: + type: string + type: object + EndpointsPostCreateTicketSecretsSensitiveDataFindingOutput: + properties: + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + version: + type: string + required: + - ticket + type: object + EndpointsPostUnallowListSecretsFindingInput: + properties: + unallowlistReason: + description: The reason for unallowlisting the finding + type: string + unallowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - unallowlistReason + - unallowlistType + type: object + EndpointsPostUnallowlistSecretsSensitiveDataFindingInput: + properties: + unallowlistReason: + description: The reason for unallowlisting the finding + type: string + unallowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + required: + - unallowlistReason + - unallowlistType + type: object + ModelsSecretsCredentialsFinding: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + archivedAt: + format: date-time + nullable: true + type: string + archivedTraceId: + type: string + author: + type: string + branch: + type: string + commit: + type: string + createdAt: + type: string + deletedAt: + format: date-time + nullable: true + type: string + deletedTraceId: + type: string + description: + type: string + devDescription: + type: string + endColumn: + type: integer + endLine: + type: integer + entropy: + format: double + type: number + exploitabilityConfidence: + type: string + exploitabilityLabel: + type: string + failedTriage: + type: boolean + falsePositiveReason: + type: string + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + id: + type: string + impactConfidence: + type: string + impactLabel: + $ref: '#/components/schemas/ModelsSeverity' + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isDefaultBranch: + type: boolean + isDeleted: + type: boolean + isDuplicate: + type: boolean + isFalsePositive: + type: boolean + isResolved: + type: boolean + match: + type: string + owner: + type: string + ownerType: + type: string + platform: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + redactedSecret: + type: string + repository: + type: string + repositoryId: + type: string + repositoryName: + type: string + resolvedAt: + format: date-time + type: string + ruleId: + type: string + scanner: + type: string + scopes: + items: + type: string + nullable: true + type: array + secretHash: + type: string + secretType: + type: string + secretValue: + type: string + severityConfidence: + type: string + severityLabel: + $ref: '#/components/schemas/ModelsSeverity' + severityOverride: + $ref: '#/components/schemas/ModelsSeverity' + severityScore: + type: integer + startColumn: + type: integer + startLine: + type: integer + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + timeStamp: + type: string + timestampUnix: + format: int64 + type: integer + triageAgentVersion: + type: string + triageDurationSeconds: + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageLangfuseSessionId: + nullable: true + type: string + triageLangfuseTraceId: + nullable: true + type: string + triageLlmCostUsd: + nullable: true + type: number + triageMaxInputTokens: + nullable: true + type: integer + triageStart: + format: date-time + nullable: true + type: string + triageTokenCount: + nullable: true + type: integer + triageTraceId: + nullable: true + type: string + updatedAt: + type: string + userId: + type: string + userNotes: + type: string + verified: + type: boolean + verifiedAt: + type: string + required: + - id + - createdAt + - updatedAt + - secretType + - scanner + - filePath + - author + - commit + - timeStamp + - ruleId + - entropy + - startLine + - endLine + - startColumn + - endColumn + - secretHash + - verified + - verifiedAt + - scopes + - severityOverride + - priorityOverride + - userNotes + - match + - repository + - branch + - projectId + - projectName + - isAllowlisted + - isArchived + - isDeleted + - redactedSecret + - falsePositiveReason + - timestampUnix + - installationId + - owner + - ownerType + - tenantId + - repositoryId + - repositoryName + - isDefaultBranch + - userId + - platform + - fileOwners + - isResolved + type: object + ModelsSecretsCredentialsFindingPreview: + properties: + aiDevTitle: + type: string + aiTitle: + type: string + allowlistReason: + type: string + allowlistType: + $ref: '#/components/schemas/ModelsAllowlistType' + author: + type: string + branch: + type: string + commit: + type: string + createdAt: + type: string + endLine: + type: integer + entropy: + format: double + type: number + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + id: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isDefaultBranch: + type: boolean + isFalsePositive: + type: boolean + match: + type: string + owner: + type: string + ownerType: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + redactedSecret: + type: string + repository: + type: string + repositoryId: + type: string + repositoryName: + type: string + ruleId: + type: string + scopes: + items: + type: string + nullable: true + type: array + secretHash: + type: string + secretType: + type: string + startLine: + type: integer + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + timeStamp: + type: string + timestampUnix: + format: int64 + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + updatedAt: + type: string + required: + - id + - createdAt + - updatedAt + - secretType + - filePath + - author + - commit + - timeStamp + - ruleId + - entropy + - secretHash + - redactedSecret + - scopes + - priorityOverride + - match + - repository + - branch + - startLine + - endLine + - projectId + - projectName + - isAllowlisted + - isArchived + - priorityScore + - priorityLabel + - isFalsePositive + - timestampUnix + - installationId + - owner + - ownerType + - tenantId + - repositoryId + - repositoryName + - isDefaultBranch + - fileOwners + - aiTitle + - aiDevTitle + type: object + ModelsSecretsEventInterface: + properties: + data: {} + id: + type: string + time: + type: string + timestampUnix: + format: int64 + type: integer + type: + $ref: '#/components/schemas/EventsEventType' + required: + - id + - time + - timestampUnix + - type + - data + type: object + ModelsSecretsFindingPriority: + properties: + description: + nullable: true + type: string + exploitability: + $ref: '#/components/schemas/ModelsSecretsFindingPriorityExploitability' + impact: + $ref: '#/components/schemas/ModelsSecretsFindingPriorityImpact' + label: + $ref: '#/components/schemas/ModelsSecretsFindingPriorityLabel' + score: + type: integer + type: object + ModelsSecretsFindingPriorityExploitability: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsSecretsFindingPriorityExploitabilityLabel' + type: object + ModelsSecretsFindingPriorityExploitabilityLabel: + enum: + - HIGH + - LOW + type: string + ModelsSecretsFindingPriorityImpact: + properties: + description: + nullable: true + type: string + label: + $ref: '#/components/schemas/ModelsSecretsFindingPriorityImpactLabel' + type: object + ModelsSecretsFindingPriorityImpactLabel: + enum: + - HIGH + - LOW + type: string + ModelsSecretsFindingPriorityLabel: + enum: + - IMPORTANT + - INFORMATIONAL + - URGENT + type: string + ModelsSecretsSensitiveDataField: + properties: + dataType: + type: string + endColumn: + type: integer + endLine: + type: integer + ruleId: + type: string + scanner: + type: string + startColumn: + type: integer + startLine: + type: integer + required: + - dataType + - scanner + - ruleId + - startLine + - endLine + - startColumn + - endColumn + type: object + ModelsSecretsSensitiveDataFinding: + properties: + aiTitle: + type: string + archivedAt: + format: date-time + nullable: true + type: string + archivedTraceId: + type: string + author: + type: string + branch: + type: string + budgetExhausted: + type: boolean + commit: + type: string + createdAt: + type: string + deletedAt: + format: date-time + nullable: true + type: string + deletedTraceId: + type: string + failedTriage: + type: boolean + falsePositiveReason: + type: string + fields: + items: + $ref: '#/components/schemas/ModelsSecretsSensitiveDataField' + nullable: true + type: array + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + id: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isDefaultBranch: + type: boolean + isDeleted: + type: boolean + isDuplicate: + type: boolean + isFalsePositive: + type: boolean + isResolved: + type: boolean + owner: + type: string + ownerType: + type: string + platform: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityLabelReason: + type: string + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + repositoryId: + type: string + repositoryName: + type: string + resolvedAt: + format: date-time + type: string + secretValue: + type: string + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + timestampUnix: + format: int64 + type: integer + triageAgentVersion: + type: string + triageDurationSeconds: + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + updatedAt: + type: string + userId: + type: string + userNotes: + type: string + required: + - id + - createdAt + - updatedAt + - filePath + - author + - commit + - fields + - priorityOverride + - userNotes + - failedTriage + - aiTitle + - isFalsePositive + - falsePositiveReason + - isDuplicate + - priorityScore + - priorityLabel + - priorityLabelReason + - triageAgentVersion + - triageDurationSeconds + - branch + - projectId + - projectName + - isAllowlisted + - isArchived + - isDeleted + - timestampUnix + - installationId + - owner + - ownerType + - tenantId + - repositoryId + - repositoryName + - isDefaultBranch + - userId + - platform + - fileOwners + - isResolved + type: object + ModelsSecretsSensitiveDataFindingPreview: + properties: + author: + type: string + branch: + type: string + commit: + type: string + createdAt: + type: string + endLine: + type: integer + fileOwners: + items: + $ref: '#/components/schemas/ModelsFileOwner' + nullable: true + type: array + filePath: + type: string + id: + type: string + installationId: + type: string + isAllowlisted: + type: boolean + isArchived: + type: boolean + isDefaultBranch: + type: boolean + isFalsePositive: + type: boolean + isResolved: + type: boolean + match: + type: string + owner: + type: string + ownerType: + type: string + priorityLabel: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityOverride: + $ref: '#/components/schemas/ModelsPriorityLabel' + priorityScore: + type: integer + projectId: + type: string + projectName: + type: string + repository: + type: string + repositoryId: + type: string + repositoryName: + type: string + startLine: + type: integer + tenantId: + type: string + ticket: + $ref: '#/components/schemas/ModelsTicketProvider' + timestampUnix: + format: int64 + type: integer + triageEnd: + format: date-time + nullable: true + type: string + triageStart: + format: date-time + nullable: true + type: string + updatedAt: + type: string + required: + - id + - createdAt + - updatedAt + - filePath + - author + - commit + - priorityOverride + - match + - repository + - branch + - startLine + - endLine + - projectId + - projectName + - isAllowlisted + - isArchived + - isResolved + - priorityScore + - priorityLabel + - isFalsePositive + - timestampUnix + - installationId + - owner + - ownerType + - tenantId + - repositoryId + - repositoryName + - isDefaultBranch + - fileOwners + type: object + ModelsSecretsValidation: + properties: + evidence: + type: string + permissions: + type: string + result: + $ref: '#/components/schemas/ModelsSecretsValidationResult' + type: object + ModelsSecretsValidationResult: + enum: + - INVALID + - UNKNOWN + - VALID + type: string + ModelsTriagedSecretsCredentialsFinding: + properties: + agentVersion: + type: string + assessmentFactors: + items: + $ref: '#/components/schemas/ModelsAssessmentFactor' + nullable: true + type: array + codeContext: + $ref: '#/components/schemas/ModelsCodeContext' + falsePositiveReason: + type: string + finding: + $ref: '#/components/schemas/ModelsSecretsCredentialsFinding' + fixStoryPointEstimate: + type: integer + investigationSteps: + items: + $ref: '#/components/schemas/ModelsInvestigationStep' + nullable: true + type: array + isFalsePositive: + type: boolean + orgContextVersion: + type: string + priority: + $ref: '#/components/schemas/ModelsSecretsFindingPriority' + repoContextVersion: + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + triagedCommitSha: + type: string + validationResult: + $ref: '#/components/schemas/ModelsSecretsValidation' + required: + - isFalsePositive + - falsePositiveReason + - investigationSteps + - assessmentFactors + - agentVersion + - triagedCommitSha + - orgContextVersion + - repoContextVersion + type: object + ModelsTriagedSecretsSensitiveDataFinding: + properties: + agentVersion: + type: string + assessmentFactors: + items: + $ref: '#/components/schemas/ModelsAssessmentFactor' + nullable: true + type: array + codeContext: + $ref: '#/components/schemas/ModelsCodeContext' + falsePositiveReason: + type: string + finding: + $ref: '#/components/schemas/ModelsSecretsSensitiveDataFinding' + fixStoryPointEstimate: + type: integer + investigationSteps: + items: + $ref: '#/components/schemas/ModelsInvestigationStep' + nullable: true + type: array + isFalsePositive: + type: boolean + orgContextVersion: + type: string + priority: + $ref: '#/components/schemas/ModelsSecretsFindingPriority' + repoContextVersion: + type: string + triage: + $ref: '#/components/schemas/ModelsTriage' + triagedCommitSha: + type: string + required: + - isFalsePositive + - falsePositiveReason + - investigationSteps + - assessmentFactors + - agentVersion + - triagedCommitSha + - orgContextVersion + - repoContextVersion + type: object + EndpointsGetJiraConnectDescriptorOutput: + properties: + apiVersion: + type: integer + authentication: + $ref: '#/components/schemas/ModelsAuthentication' + baseUrl: + type: string + contexts: + items: + type: string + type: array + definitions: + additionalProperties: {} + type: object + description: + type: string + enableLicensing: + type: boolean + key: + type: string + lifecycle: + $ref: '#/components/schemas/ModelsLifecycle' + links: + $ref: '#/components/schemas/ModelsLinks' + modules: + $ref: '#/components/schemas/ModelsModules' + name: + type: string + scopes: + items: + type: string + type: array + vendor: + $ref: '#/components/schemas/ModelsVendor' + version: + type: string + required: + - name + - key + - description + - vendor + - links + - baseUrl + - lifecycle + - modules + - authentication + type: object + EndpointsPostBitbucketConnectDescriptorOutput: + properties: + apiVersion: + type: integer + authentication: + $ref: '#/components/schemas/ModelsAuthentication' + baseUrl: + type: string + contexts: + items: + type: string + type: array + definitions: + additionalProperties: {} + type: object + description: + type: string + enableLicensing: + type: boolean + key: + type: string + lifecycle: + $ref: '#/components/schemas/ModelsLifecycle' + links: + $ref: '#/components/schemas/ModelsLinks' + modules: + $ref: '#/components/schemas/ModelsModules' + name: + type: string + scopes: + items: + type: string + type: array + vendor: + $ref: '#/components/schemas/ModelsVendor' + version: + type: string + required: + - name + - key + - description + - vendor + - links + - baseUrl + - lifecycle + - modules + - authentication + type: object + EndpointsPostBitbucketDisabledInput: + properties: + actor: + $ref: '#/components/schemas/ModelsActor' + baseApiUrl: + type: string + baseUrl: + type: string + clientKey: + type: string + eventType: + type: string + key: + type: string + principal: + $ref: '#/components/schemas/ModelsPrincipal' + productType: + type: string + publicKey: + type: string + user: + $ref: '#/components/schemas/ModelsAtlassianUser' + required: + - key + - publicKey + - clientKey + - productType + - eventType + - baseUrl + - baseApiUrl + - actor + - principal + - user + type: object + EndpointsPostBitbucketEnabledInput: + properties: + actor: + $ref: '#/components/schemas/ModelsActor' + baseApiUrl: + type: string + baseUrl: + type: string + clientKey: + type: string + eventType: + type: string + key: + type: string + principal: + $ref: '#/components/schemas/ModelsPrincipal' + productType: + type: string + publicKey: + type: string + user: + $ref: '#/components/schemas/ModelsAtlassianUser' + required: + - key + - publicKey + - clientKey + - productType + - eventType + - baseUrl + - baseApiUrl + - actor + - principal + - user + type: object + EndpointsPostBitbucketInstalledInput: + properties: + actor: + $ref: '#/components/schemas/ModelsActor' + baseApiUrl: + type: string + baseUrl: + type: string + clientKey: + type: string + eventType: + type: string + key: + type: string + principal: + $ref: '#/components/schemas/ModelsPrincipal' + productType: + type: string + publicKey: + type: string + sharedSecret: + type: string + user: + $ref: '#/components/schemas/ModelsAtlassianUser' + required: + - key + - publicKey + - clientKey + - productType + - eventType + - sharedSecret + - baseUrl + - baseApiUrl + - actor + - principal + - user + type: object + EndpointsPostBitbucketUninstalledInput: + properties: + actor: + $ref: '#/components/schemas/ModelsActor' + baseApiUrl: + type: string + baseUrl: + type: string + clientKey: + type: string + eventType: + type: string + key: + type: string + principal: + $ref: '#/components/schemas/ModelsPrincipal' + productType: + type: string + publicKey: + type: string + sharedSecret: + type: string + user: + $ref: '#/components/schemas/ModelsAtlassianUser' + required: + - key + - publicKey + - clientKey + - productType + - eventType + - sharedSecret + - baseUrl + - baseApiUrl + - actor + - principal + - user + type: object + EndpointsPostJiraInstalledInput: + properties: + baseUrl: + type: string + clientKey: + type: string + description: + type: string + displayUrl: + type: string + eventType: + type: string + key: + type: string + productType: + type: string + publicKey: + type: string + sharedSecret: + type: string + required: + - key + - clientKey + - productType + - eventType + - sharedSecret + - baseUrl + - displayUrl + - description + type: object + EndpointsPostJiraUninstalledInput: + properties: + accountId: + type: string + baseUrl: + type: string + clientKey: + type: string + description: + type: string + displayUrl: + type: string + eventType: + type: string + key: + type: string + productType: + type: string + publicKey: + type: string + sharedSecret: + type: string + required: + - key + - clientKey + - productType + - eventType + - sharedSecret + - baseUrl + - displayUrl + - description + - accountId + type: object + ModelsActor: + properties: + account_id: + type: string + type: + type: string + uuid: + type: string + required: + - type + - uuid + - account_id + type: object + ModelsAdminPages: + properties: + conditions: + items: + type: string + type: array + icon: + $ref: '#/components/schemas/ModelsIcon' + key: + type: string + location: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + tooltip: + $ref: '#/components/schemas/ModelsTooltip' + url: + type: string + weight: + type: integer + required: + - url + - name + - key + - location + - params + - icon + - weight + - tooltip + type: object + ModelsAtlassianHTML: + properties: + href: + type: string + required: + - href + type: object + ModelsAtlassianUser: + properties: + created_on: + format: date-time + type: string + display_name: + type: string + has_2fa_enabled: + nullable: true + type: boolean + is_active: + type: boolean + links: + $ref: '#/components/schemas/ModelsUserLinks' + properties: + additionalProperties: + type: string + nullable: true + type: object + type: + type: string + username: + type: string + uuid: + type: string + required: + - display_name + - links + - created_on + - is_active + - type + - uuid + - has_2fa_enabled + - properties + - username + type: object + ModelsAuthentication: + properties: + type: + type: string + required: + - type + type: object + ModelsAvatar: + properties: + href: + type: string + required: + - href + type: object + ModelsFileEditors: + properties: + conditions: + items: + type: string + type: array + file_matches: + $ref: '#/components/schemas/ModelsFileMatches' + key: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + url: + type: string + required: + - file_matches + - url + - name + - key + - params + type: object + ModelsFileMatches: + properties: + extensions: + items: + type: string + type: array + names: + items: + type: string + type: array + type: object + ModelsFileViews: + properties: + conditions: + items: + format: double + type: number + type: array + file_matches: + $ref: '#/components/schemas/ModelsFileMatches' + key: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + url: + type: string + required: + - file_matches + - url + - name + - key + - params + type: object + ModelsGeneralPages: + properties: + conditions: + items: + type: string + type: array + icon: + $ref: '#/components/schemas/ModelsIcon' + key: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + url: + type: string + weight: + type: integer + required: + - url + - name + - key + - params + - icon + - weight + type: object + ModelsIcon: + properties: + height: + type: integer + url: + type: string + width: + type: integer + required: + - url + - height + - width + type: object + ModelsLifecycle: + properties: + disabled: + type: string + enabled: + type: string + installed: + type: string + uninstalled: + type: string + required: + - installed + - uninstalled + - enabled + - disabled + type: object + ModelsLinkers: + properties: + conditions: + items: + type: string + type: array + context: + type: string + key: + type: string + params: + $ref: '#/components/schemas/ModelsParams' + regex: + type: string + target: + $ref: '#/components/schemas/ModelsTarget' + type: + type: string + url: + type: string + required: + - regex + - url + - key + - params + - type + - target + - context + type: object + ModelsLinks: + properties: + documentation: + type: string + homepage: + type: string + self: + type: string + source: + type: string + support: + type: string + type: object + ModelsModules: + properties: + adminPages: + items: + $ref: '#/components/schemas/ModelsAdminPages' + type: array + configurePage: + nullable: true + type: number + fileEditors: + items: + $ref: '#/components/schemas/ModelsFileEditors' + type: array + fileViews: + items: + $ref: '#/components/schemas/ModelsFileViews' + type: array + generalPages: + items: + $ref: '#/components/schemas/ModelsGeneralPages' + type: array + linkers: + items: + $ref: '#/components/schemas/ModelsLinkers' + type: array + oauthCallback: + $ref: '#/components/schemas/ModelsOauthCallback' + oauthConsumer: + $ref: '#/components/schemas/ModelsOauthConsumer' + postInstallRedirect: + $ref: '#/components/schemas/ModelsPostInstallRedirect' + profileTabs: + items: + $ref: '#/components/schemas/ModelsProfileTabs' + type: array + proxy: + $ref: '#/components/schemas/ModelsProxy' + repoPages: + items: + $ref: '#/components/schemas/ModelsRepoPages' + type: array + webCards: + items: + $ref: '#/components/schemas/ModelsWebCards' + type: array + webItems: + items: + type: boolean + type: array + webPanels: + items: + $ref: '#/components/schemas/ModelsWebPanels' + type: array + webhooks: + items: + $ref: '#/components/schemas/ModelsWebhooks' + type: array + type: object + ModelsName: + properties: + i18n: + type: string + value: + type: string + required: + - value + - i18n + type: object + ModelsOauthCallback: + properties: + key: + type: string + url: + type: string + required: + - url + - key + type: object + ModelsOauthConsumer: + properties: + clientId: + type: string + scopes: + items: + type: string + type: array + required: + - clientId + type: object + ModelsParams: + type: object + ModelsPostInstallRedirect: + properties: + key: + type: string + url: + type: string + required: + - url + - key + type: object + ModelsPrincipal: + properties: + created_on: + format: date-time + type: string + display_name: + type: string + has_2fa_enabled: + nullable: true + type: boolean + is_active: + type: boolean + links: + $ref: '#/components/schemas/ModelsUserLinks' + properties: + additionalProperties: + type: string + nullable: true + type: object + type: + type: string + username: + type: string + uuid: + type: string + required: + - display_name + - links + - created_on + - is_active + - type + - uuid + - has_2fa_enabled + - properties + - username + type: object + ModelsProfileTabs: + properties: + conditions: + items: + type: string + type: array + icon: + $ref: '#/components/schemas/ModelsIcon' + key: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + url: + type: string + weight: + type: integer + required: + - url + - name + - key + - params + - icon + - weight + type: object + ModelsProxy: + properties: + definitions: + additionalProperties: {} + type: object + links: + additionalProperties: + type: string + type: object + type: object + ModelsRepoPages: + properties: + conditions: + items: + type: boolean + type: array + icon: + $ref: '#/components/schemas/ModelsIcon' + key: + type: string + location: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + tooltip: + $ref: '#/components/schemas/ModelsTooltip' + url: + type: string + weight: + type: integer + required: + - url + - name + - key + - location + - params + - icon + - weight + - tooltip + type: object + ModelsSelf: + properties: + href: + type: string + required: + - href + type: object + ModelsTarget: + type: object + ModelsTooltip: + properties: + i18n: + type: string + value: + type: string + required: + - value + - i18n + type: object + ModelsUserLinks: + properties: + avatar: + $ref: '#/components/schemas/ModelsAvatar' + html: + $ref: '#/components/schemas/ModelsAtlassianHTML' + self: + $ref: '#/components/schemas/ModelsSelf' + required: + - self + - avatar + - html + type: object + ModelsVendor: + properties: + name: + type: string + url: + type: string + required: + - name + - url + type: object + ModelsWebCards: + properties: + conditions: + items: + type: string + type: array + icon: + $ref: '#/components/schemas/ModelsIcon' + key: + type: string + location: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + tooltip: + $ref: '#/components/schemas/ModelsTooltip' + url: + type: string + weight: + type: integer + required: + - url + - name + - key + - location + - params + - icon + - weight + - tooltip + type: object + ModelsWebPanels: + properties: + conditions: + items: + type: string + type: array + icon: + $ref: '#/components/schemas/ModelsIcon' + key: + type: string + location: + type: string + name: + $ref: '#/components/schemas/ModelsName' + params: + $ref: '#/components/schemas/ModelsParams' + tooltip: + $ref: '#/components/schemas/ModelsTooltip' + url: + type: string + weight: + type: integer + required: + - url + - name + - key + - location + - params + - icon + - weight + - tooltip + type: object + ModelsWebhooks: + properties: + event: + type: string + params: + $ref: '#/components/schemas/ModelsParams' + url: + type: string + required: + - url + - event + - params + type: object