Reference ↗
Reference for the Qwiet AI by Harness REST API, including authentication, every endpoint, its parameters and its request and response samples.
Download the OpenAPI specification.
The Qwiet API allows you to programmatically interact with Qwiet. You can manage users and their roles and get scan-related information, such as which applications were scanned and what vulnerabilities were identified by Qwiet as being present. You can also compare scans to see changes to your applications over time.
Authentication
Use of the Qwiet API requires an access token, which is available via the Qwiet UI.
Alerting
Notification and alerting related endpoints (such as webhooks)
Set up a webhook
Set up a webhook for the given organization
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/alerting/webhook
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
version
integer Default: 2 Enum: 1 2 Example: version=2Webhook configuration version to use (1 = legacy flow, 2 = normal flow). Defaults to 2 (normal flow) if not specified.
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Example request body for webhook registration using Bearer token authentication
Response samples
Delete a webhook
Delete the webhook for the given organization
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/alerting/webhook
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
version
integer Default: 2 Enum: 1 2 Example: version=2Webhook configuration version to use (1 = legacy flow, 2 = normal flow). Defaults to 2 (normal flow) if not specified.
Responses
200
Success
default
Error
Response samples
Get a webhook
Get the webhook url and token ID for the given organization
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/alerting/webhook
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
version
integer Default: 2 Enum: 1 2 Example: version=2Webhook configuration version to use (1 = legacy flow, 2 = normal flow). Defaults to 2 (normal flow) if not specified.
Responses
200
Success
default
Error
Response samples
Get alerting events
Get the list of events that can be subscribed to receive webhook notifications.
GET https://app.shiftleft.io/api/v4/alerting/events
Authorizations
BearerToken
Responses
200
Success
default
Error
Response samples
App groups
The user-created groups of applications.
Read organization app groups
Return a list of all the organization groups.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/app_groups
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Read app group
Return information about an app group.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/app_groups/{appGroupName}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appGroupName (required)
string The group name
Responses
200
Success
default
Error
Response samples
Create or update app group
Create or update an application group.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/app_groups/{appGroupName}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appGroupName (required)
string The group name
Request body schema: application/json
rename
string A new name for the group (optional)
add_app_ids
Array of strings The application IDs to add to the group
remove_app_ids
Array of strings The application IDs to remove from the group
Responses
200
Success
default
Error
Request samples
Response samples
Delete app group
Deletes an application group.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/app_groups/{appGroupName}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appGroupName (required)
string The group name
Responses
200
Success
default
Error
Response samples
App labels
The user-created application labels.
Update application labels
Update the application's labels.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/labels
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
add
Array of strings
remove
Array of strings
clear
boolean A boolean flag that is true when all labels should be removed from the application
Responses
200
Success
default
Error
Request samples
Response samples
Applications
The applications submitted for analysis by Qwiet AI by Harness.
Create Apps
Create one or more apps owned by an organization and potentially assigned to a team.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json (array)
id (required)
string[a-zA-Z0-9]([a-zA-Z0-9_:.-]*[a-zA-Z0-9])? the id of the app
name
string the user friendly name of the app
team_id
string the id of the team the app belongs to
base_branch
string the name of the principal branch of the app.
Responses
200
Success
default
Error
Request samples
Response samples
List apps
Return a list of the apps owned by the org.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Delete app
Delete an app owned by an organization.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
default
Error
Response samples
Read app
Return an app owned by an organization.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
default
Error
Response samples
List app branches
Return a list of the branches of a specific app scanned for an org.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/branches
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
app
string App name
from
integer The earliest scan time for a branch to be included. Value should be a Unix timestamp (in seconds). Defaults to 1 week ago
until
integer The latest scan time for a branch to be included. Value should be a Unix timestamp (in seconds). Defaults to now
Responses
200
Success
default
Error
Response samples
Read app config
Return the configuration of an application.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
default
Error
Response samples
Update app config
Update the app's configuration.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Patch app config
Partially update the app's configuration. Only fields present in the request body will be updated; all other fields are preserved. This is safer than PUT when you only need to change a subset of the configuration.
PATCH https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Update Application Default Branch
Update the application's default branch.
PATCH https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/configuration/default_branch
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
default_branch (required)
string The repository's default branch
Responses
200
Success
default
Error
Request samples
Response samples
Read merged app config
Return the effective configuration of an application by combining the organization configuration and the configuration of a potentially assigned team as defaults first, before merging in the actual app configuration on top, overriding those defaults.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/configuration/merged
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
default
Error
Response samples
AutoFix
The AutoFix suggestions for findings in applications. Harness SAST and SCA AutoFix uses large language models (LLMs) to generate potential code fix suggestions for findings produced by Qwiet AI by Harness analyses.
Get the number of fixes available per compound
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/stats/num_fixes_per_compound
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Read Recommended Fix if it exists
Retrieve the recommended fix for a specific finding if it exists
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}/recommended_fix
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Responses
200
Success
default
Error
Response samples
Read finding's fix if it exists
Retrieve the fix for a specific finding if it exists. This feature is disabled by default. Contact Qwiet AI Customer Success if you need assistance.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}/fixes
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Responses
200
Success
default
Error
Response samples
Azure Boards
The endpoints to manage the Azure Boards integration.
Get azureboard authorization status
Get azureboard authorization status for organization
GET https://app.shiftleft.io/api/v4/azureboard/authorization/orgs/{orgID}/status
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success (Authorized)
default
Error
Response samples
azureboard authorization at the org level
azureboard authorization at the org level
GET https://app.shiftleft.io/api/v4/azureboard/authorization/orgs/{orgID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
302
Redirect
default
Error
Response samples
AzureCallback is authorized redirect_url in oAuth2 app
AzureCallback is authorized redirect_url in oAuth2 app
GET https://app.shiftleft.io/api/v4/azureboard/callback
Responses
302
redirect
default
Error redirect
Get AzureBoard Association
Get AzureBoard Association
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/integrations/azureboard/association
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
404
No azure project is associated with the application
default
Error
Response samples
Update AzureBoard Association
Update AzureBoard Association
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/integrations/azureboard/association
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
azure_org_name (required)
string The name of the Azure DevOps organization.
azure_project_name (required)
string The name of the Azure DevOps project.
finding_work_item_type
string Work item type that will be used to create work items
Responses
200
Success
400
Bad Request
403
UnAuthorized
404
Not Found
default
Error
Request samples
Response samples
Get AzureBoard Association
Get AzureBoard Association
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/integrations/azureboard/association
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
404
No azure project is associated with the application
default
Error
Response samples
Get Azure organizations
Get Azure organizations
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/integrations/azureboard/organizations
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Get azureboard association by finding id
Get azureboard association by finding id
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/integrations/azureboard/findings/{findingID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Responses
200
Success
default
Error
Response samples
Puts azureboard association by finding ids
Puts azureboard association by finding ids
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/integrations/azureboard/findings
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
Responses
200
Success
Request samples
Response samples
Branches
The branch information for Qwiet AI by Harness scans of applications.
List application scans branches
Return the list of branches of an application that have been scanned, not to be confused with the soon to be deprecated /branches endpoint.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scanbranches
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
default
Error
Response samples
Comments
The text threads (with individual comments ordered by time) attached to findings.
Create app finding comment
Create a comment on a finding.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}/comments
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Request body schema: application/json
comment
string The text of the comment
Responses
200
Success
default
Error
Request samples
Response samples
List app finding comments
Return a list of the finding's comments thread.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}/comments
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Responses
200
Success
default
Error
Response samples
Read specific comment for a finding
Read a comment for a specific finding for an app.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}/comments/{commentID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
commentID (required)
string The comment ID
Responses
200
Success
default
Error
Response samples
Multi-Language Apps
Multi-Language Apps are groups of applications that are scanned together as a single application. This is useful for applications that are a compound of various programming languages and configurations of frameworks.
Un/Archive Compound
Toggle the archived status of a compound
PATCH https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Request body schema: application/json (required)
is_archived (required)
boolean Whether to archive the compound (true) or unarchive it (false)
Responses
200
Success
default
Error
Request samples
Response samples
List scans in a compound, returning a subset of the scan summary information
The full information we can return about a scan is a lot of data, which slows down a UI that only wants to present a subset of it to the user. This endpoint returns only the subset actually needed for rendering that UI. As such it's meant for internal use only, but is documented because other API users may find it useful for similar reasons.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/scans/streamlined
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
limit
integer [ 1 .. 100 ] Default: 10 The number of scans to return.
branch
string Only consider scans on this branch.
upto
integer Only list scans created before this time (given in nanoseconds since the UNIX Epoch).
Responses
200
Success
default
Error
Response samples
Read compound scan
Retrieve details for a specific scan of a compound
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/scans/{scanID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
scanID (required)
string The ID of the scan to retrieve
Query parameters
archived
boolean If present, includes archived compounds
Responses
200
Success
default
Error
Response samples
Read branches for compound
List all the branches for a specific compound
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/branches
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
archived
boolean If present, includes archived compounds
Responses
200
Success
default
Error
Response samples
List Scans of Compound
List all scans for a specific compound
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/scans
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
archived
boolean If present, includes archived compounds
status
string Enum: "completed" "running" "failed" Filter scans by status
branch
string Filter scans by branch
limit
integer The number of scans to return (must be between 1 and 50, inclusive). The default is 10 scans
Responses
200
Success
default
Error
Response samples
List Compounds
List all compounds for an organization
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
archived
boolean If present, returns archived compounds (true) or non-archived compounds (false)
page
integer >= 1 Default: 1 Page number
per_page
integer [ 1 .. 100 ] Default: 20 Number of items per page
Responses
200
Success
default
Error
Response samples
Read shallow compound
Returns a shallow compound object, which includes the compound's ID, name, and description.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/shallow/{compoundID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundID (required)
string <uuid> A compound's ID
Responses
200
Success
default
Error
Response samples
Read shallow compound by ID
Returns a shallow compound object by its ID, which includes the compound's ID, name, and the IDs of the apps that are part of the compound.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/byid/{compoundID}/shallow
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundID (required)
string <uuid> A compound's ID
Responses
200
Success
default
Error
Response samples
Read shallow compound by name
Returns a shallow compound object by its name. If no compound is found with the given name, falls back to looking up a project with that name.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/byname/{compoundName}/shallow
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Responses
200
Success
default
Error
Response samples
Delete compound
Deletes a compound and all of its associated apps.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/{compoundID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundID (required)
string <uuid> A compound's ID
Responses
200
Success
default
Error
Response samples
Read full compound
Returns a full compound object, which includes the compound's ID, name, description, and the IDs of the apps that are part of the compound.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/full/{compoundID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundID (required)
string <uuid> A compound's ID
Responses
200
Success
default
Error
Response samples
Findings
The results of a Qwiet AI by Harness scan (which can include vulnerabilities, secrets, or insights).
List app findings
List findings for the specified app. Results are filtered to a single scan (by default, this is the latest scan).
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Query parameters
type
string The type of findings. Accepted values are oss_vuln, vuln, and secret
severity
string (Severity) Enum: "low" "medium" "high" "critical" The severity filter
tags
Array of strings The scan tags to filter by (e.g., branch=main)
finding_tags
Array of strings Example: finding_tags=category=XSSThe findings' filtering tag
assignee
string The email addresses of users assigned to this finding
assignment
string (Assignment) Enum: "unassigned" "assigned" The assignment status filter. By default, all findings, both unassigned and assigned, are returned.
category
string The category filter
details_tags
Array of strings The filter for the finding's details tags
status
string (Status) Enum: "unset" "fixed" "ignored" "3rdparty" "any" The status filter. By default, only unset findings are included.
sort
string How to sort results; defaults to ID
order
string Enum: "desc" "asc" Direction of the sort; defaults to descending
only_counts
boolean Whether to include only finding counts; excludes the list of findings
page
integer The page of results to fetch. Results are not guaranteed to be deterministic using this approach; we recommended using the next_page URL in a paginated response
per_page
integer Number of results per page; defaults to 50
version
string Version to filter findings for; defaults to the latest scan
scan
string ID of the scan to filter to; defaults to the latest scan
source
string^scan\\d+|tag\\w=\w$ Example: source=scan.128|tag.branch=samplebranchThe source scan for a comparision
diff
string (Diff) Enum: "new" "regression" "common" "fixed" Return a diff of findings (as compared to the source)
fields
Array of stringsItems Enum: "-description" "-details" "-related_findings" Specifies the fields included or excluded in the response.
Responses
200
Success
default
Error
Response samples
List compound findings Deprecated
DEPRECATED - use /orgs/{orgID}/compounds/byname/{compoundName}/findings instead. List findings for the specified compound. Results are filtered to a single scan (by default, this is the latest scan).
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/findings
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
type
string The type of findings. Accepted values are oss_vuln, vuln, and secret
severity
string (Severity) Enum: "low" "medium" "high" "critical" The severity filter
tags
Array of strings The scan tags to filter by (e.g., branch=main)
finding_tags
Array of strings Example: finding_tags=category=XSSThe findings' filtering tag
assignee
string The email addresses of users assigned to this finding
assignment
string (Assignment) Enum: "unassigned" "assigned" The assignment status filter. By default, all findings, both unassigned and assigned, are returned.
category
string The category filter
details_tags
Array of strings The filter for the finding's details tags
status
string (Status) Enum: "unset" "fixed" "ignored" "3rdparty" "any" The status filter. By default, only unset findings are included.
sort
string How to sort results; defaults to ID
order
string Enum: "desc" "asc" Direction of the sort; defaults to descending
only_counts
boolean Whether to include only finding counts; excludes the list of findings
page
integer The page of results to fetch. Results are not guaranteed to be deterministic using this approach; we recommended using the next_page URL in a paginated response
per_page
integer Number of results per page; defaults to 50
version
string Version to filter findings for; defaults to the latest scan
scan
string Polyglot scan ID to filter to; defaults to the latest scan
source
string^scan\\d+|tag\\w=\w$ Example: source=scan.128|tag.branch=samplebranchThe source scan for a comparision
diff
string (Diff) Enum: "new" "regression" "common" "fixed" Return a diff of findings (as compared to the source)
fields
Array of stringsItems Enum: "-description" "-details" "-related_findings" Specifies the fields included or excluded in the response.
Responses
200
Success
default
Error
Response samples
List compound findings
List findings for the specified compound. Results are for a single polyglot scan (by default, this is the latest scan).
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/byname/{compoundName}/findings
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
Responses
200
Success
default
Error
Response samples
Read app finding detail
Read the details for a single finding
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Responses
200
Success
default
Error
Response samples
Set finding status
Set the current status for a finding
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}/status
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Request body schema: application/json
status
string Enum: "fixed" "ignore" "codeviolationfixed" "codeviolationignore" "codeviolationremovestatus" The status to be set; leaving it blank will remove status
optional_comment
string Optional text to be used as the comment that is created along with every status.
Responses
200
Success
default
Error
Request samples
Response samples
Set finding assignee
Set the current assignee for a finding
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings/{findingID}/assignment
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
findingID (required)
string The finding ID
Request body schema: application/json
assignee
string The email of the person to be assigned to the finding
Responses
200
Success
default
Error
Request samples
Response samples
Set multiple findings status
Set the current status for multiple findings
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings_status
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
findings
Array of integers
status
string Enum: "fixed" "ignore" "codeviolationfixed" "codeviolationignore" "codeviolationremovestatus" The status to be set; leaving it blank will remove status
Responses
200
Success
default
Error
Request samples
Response samples
Set multiple findings assignee
Set the current assignee for a finding
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/findings_assignment
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Request body schema: application/json
findings
Array of integers
assignee
string The email of the person to be assigned to the findings
Responses
200
Success
default
Error
Request samples
Response samples
Read the SCA packages of a compound scan
Return information about the packages found in a scan of an app
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/sca/packages
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
polyglot_scan
integer Example: polyglot_scan=42Polyglot scan ID of the scan to filter to; defaults to the latest scan.
scan_version
string Example: scan_version=9b7e138e1b16dc5261803cceffb86c36800c2c7fThe version of which to get the latest scan. This is usually a SHA1. Ignored if polyglot_scan is given.
scan_branch
string Example: scan_branch=feature/1234The branch of which to get the latest scan. Ignored if polygot_scan or scan_version are given.
scan_tag
string^(?<key>.*?)__eq__(?<value>.*)$ Tags passed to the analyzer at scan time. Ignored if polygot_scan, scan_version, or scan_branch are given.
scan_platform
string (ScanPlatform) Enum: "java" "go" "csharp" "javascript" "c" "python" "terraform_hcl" "ruby" "php" "fuzzytestlang" "kotlin" "javasrc" "pythonsrc" "jssrc" "secrets" "swiftsrc" "plsql" "apex" "groovy" The analysis platform. Cannot be specified together with scan_language.
scan_language
string (ScanLanguage) Enum: "java" "go" "csharp" "javascript" "c" "python" "terraform_hcl" "ruby" "php" "fuzzytestlang" "kotlin" "swift" "plsql" "apex" "groovy" The analysis language. Cannot be specified together with scan_platform.
type
string Enum: "package" "container_package" Example: type=packageThe package finding types to include.
tag
string Example: tag=package_type__eq__alpinea tag query used to filter the findings
per_page
integer [ 1 .. 10000 ] Default: 100 The number of results per page.
page
integer >= 1 Default: 1 The specific page of the results to fetch.
sort
string Enum: "package" "url" "name" "namespace" "type" "version" "license" "created_at" "num_vulns" "num_reachable" "num_exploitable" How to sort results; defaults to ID
order
string Enum: "desc" "asc" Direction of the sort; defaults to descending
Responses
200
Success
default
Error
Response samples
Read the count of multiple tags of an app.
Return information about the packages found in a scan of an app
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/sca/packages
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Query parameters
scan
integer Example: scan=42The ID of the scan to filter to. Defaults to the latest scan.
branch
string Example: branch=feature/1234The branch of which to get the latest scan.
type
string Enum: "package" "container_package" Example: type=packageThe package finding types to include.
tag
string Example: tag=package_type__eq__alpinea tag query used to filter the findings
per_page
integer Number of results per page; defaults to 50
page
integer The page of results to fetch. Results are not guaranteed to be deterministic using this approach; we recommended using the next_page URL in a paginated response
sort
string Enum: "package" "url" "name" "namespace" "type" "version" "license" "created_at" "num_vulns" "num_reachable" "num_exploitable" How to sort results; defaults to ID
order
string Enum: "desc" "asc" Direction of the sort; defaults to descending
Responses
200
Success
default
Error
Response samples
List org findings
Return all findings for the org.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/findings
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
tags
Array of strings The scan tags to filter by (e.g., branch=main)
finding_tags
Array of strings Example: finding_tags=category=XSSThe findings' filtering tag
type
string The type of findings. Accepted values are oss_vuln, vuln, and secret
severity
string (Severity) Enum: "low" "medium" "high" "critical" The severity filter
assignee
string The email addresses of users assigned to this finding
assignment
string (Assignment) Enum: "unassigned" "assigned" The assignment status filter. By default, all findings, both unassigned and assigned, are returned.
category
string The category filter
details_tags
Array of strings The filter for the finding's details tags
status
string (Status) Enum: "unset" "fixed" "ignored" "3rdparty" "any" The status filter. By default, only unset findings are included.
sort
string How to sort results; defaults to ID
order
string Enum: "desc" "asc" Direction of the sort; defaults to descending
only_counts
boolean Whether to include only finding counts; excludes the list of findings
page
integer The page of results to fetch. Results are not guaranteed to be deterministic using this approach; we recommended using the next_page URL in a paginated response
per_page
integer Number of results per page; defaults to 50
Responses
200
Success
default
Error
Response samples
Read org findings summary
Return a summary of findings for the org.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/findings/summary
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
tags
Array of strings The scan tags to filter by (e.g., branch=main)
type
string The type of findings. Accepted values are oss_vuln, vuln, and secret
default_branch
boolean Return findings from scans of the app's configured default branch
Responses
200
Success
default
Error
Response samples
Organization Backup
The endpoints for downloading backups of an organization's data.
Download Organization Backup
Downloads the backup for the specified organization.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/backup/download
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
backup_id
string Backup ID to filter to; defaults to the latest backup.
Responses
200
Organization backup file streamed as a .tar.gz download
default
Error
Response samples
List Organization Backups
Lists the existing backups for the specified organization.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/backup
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Organizations
The logical grouping (e.g., tenant/account) within Qwiet that defines a set of users, teams, and applications.
Download audit log CSV
Download the CSV formatted audit log for an organization for a specific month. This feature is disabled by default. Contact Qwiet AI Customer Success to enable it.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/audit/csv/{auditYear}/{auditMonth}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
auditYear (required)
number The year for a requested report
auditMonth (required)
number The month for a requested report
Responses
200
Success
Upsert check-analysis Configuration
Upload configuration file for the check-analysis server-side configuration and returns the hash of the uploaded file when successful. The reference here takes no tag, just a name.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/checkanalysis/policies/{reference}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
reference (required)
string the reference
Query parameters
tag
string the tags
useDefaults
boolean whether to apply the default versioning mechanism
Request body schema: application/yaml
string <binary>
Responses
200
Success
default
Error
Response samples
Resolve check-analysis Configuration
Resolve the given reference (name plus a tag, which is usually a version number) and return the raw file back to the caller.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/checkanalysis/policies/{reference}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
reference (required)
string the reference
Responses
200
Success
default
Error
Response samples
List check-analysis Configurations
List all check-analysis configurations for the given
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/checkanalysis/policies
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
name
string Any names to filter for, only those policies tagged with these names will be returned
Responses
200
Success
default
Error
Response samples
Returns the audit log report for the org's SCM secrets
Returns the audit log report for the org's SCM secrets, showing the number of times secrets were attempted to be committed to a repository. The report can be grouped by project or user. One of the 'by-project' or 'by-user' query parameters must be specified.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/scm-secrets-audit-log
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
days
integer Default: 31 Specifies the number of days for which the audit log should be calculated; defaults to 31.
by-project
boolean If present, the report will be grouped by project.
by-user
boolean If present, the report will be grouped by user.
Responses
200
Success
default
Error
Response samples
Update org configuration
Update configuration options for the organization. Note that this endpoint will overwrite all configuration existing configuration options. We recommend using the GET endpoint to obtain the current configuration for your records before proceeding. Alternatively, if you intend to change only analysis configuration, then you can use UpdateOrgAnalysisConfig endpoint
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Patch org configuration
Partially update configuration options for the organization. Only fields present in the request body will be updated; all other fields are preserved. This is safer than PUT when you only need to change a subset of the configuration.
PATCH https://app.shiftleft.io/api/v4/orgs/{orgID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Read org configuration
Return the configuration options for the organization
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Read AutoFix configuration for the organization
Return the AutoFix configuration options for the organization
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/autofix_configuration
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Update org analysis configuration
Create analysis analysis configuration options for the organization. Doesn't touch other parts of configuration (like e.g. default_saml_config)
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/configuration/analysis
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Update org analysis configuration
Update analysis analysis configuration options for the organization. Doesn't touch other parts of configuration (like e.g. default_saml_config)
PATCH https://app.shiftleft.io/api/v4/orgs/{orgID}/configuration/analysis
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
RBAC (users and teams)
Roles-based access control (RBAC) allows you to control the permissions users in an organization are granted.
The permissions granted to a user are additive. The base level of a user's permission is determined by their role in the organization.
A team represents a group of users and the applications that group of users can access. Users are granted additional permissions based on their team role.
Users can belong to multiple teams, but an application can only belong to one team.
You can use the TEAM_DEFINED organization role to limit user access to only the apps assigned to their team.
List roles
Return a list of roles an org has available to use (includes only the roles that are managed by Qwiet). Note that the ID and role ID for a CI token are also used for access tokens. The ID and role ID for an integration token are also used for a Jira integration token.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/roles
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Create custom RBAC role
Creates a custom RBAC role for the provided organization
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/roles
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
name (required)
string The name of the role
description
string The description of the role
scopes (required)
Array of strings (Scope) [^\w+:\w+$|^\w+:\$] The array of scopes that are granted by the role
role_type
string (RoleType) Enum: "team" "organization" "qwiet" The type of role. This is used to categorize roles and determine in what context they can be used. Team roles can only be used in teams, organization roles can be used across the organization, and qwiet roles are predefined roles. Note that 'qwiet' type is reserved for system-defined roles and cannot be used when creating or updating custom roles.
Responses
201
Created
409
Conflict
default
Error
Request samples
Response samples
Update RBAC role
Update the scopes of an existing RBAC role.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/roles/{rbacRoleID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacRoleID (required)
string <uuid> The role ID
Request body schema: application/json
name
string The name of the role
description
string The description of the role
scopes (required)
Array of strings (Scope) [^\w+:\w+$|^\w+:\$] The array of scopes that are granted by the role
Responses
200
Success
404
Not found
default
Error
Request samples
Response samples
Delete a custom RBAC role
Deletes a custom RBAC role for the provided organization. This operation only applies to custom roles and will not delete built-in system roles.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/roles/{rbacRoleID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacRoleID (required)
string <uuid> The role ID
Responses
200
Successfully deleted the role
404
Role not found
default
Error
Response samples
List available RBAC scopes
Returns a list of RBAC scopes available for an organization to use when creating custom roles. These will match directly with the Super Admin role scopes.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/scopes
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
List users
Returns a list users in the organization, along with their team membership and roles, it allows filter by email.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/users
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
email (required)
string <email> The user's email
Responses
200
Success
default
Error
Response samples
Update user
Update a user
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/users/{userIDv2}
Authorizations
BearerToken
Path parameters
userIDv2 (required)
string <uuid> The user's ID
orgID (required)
string <uuid> The org ID
Request body schema: application/json
org_role (required)
string Enum: "SUPER_ADMIN" "POWER_USER" "MEMBER" "GUEST" "TEAM_DEFINED" The role that should be assigned to the user.
Responses
200
Success
default
Error
Request samples
Response samples
Delete user
Delete a user
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/users/{userIDv2}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
userIDv2 (required)
string <uuid> The user's ID
Responses
200
Success
409
Conflict
default
Error
Response samples
List human groups
Return a list of human groups in the organization.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/groups
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
name
string The human group name, case sensitive
iname
string The human group name, case insensitive
Responses
200
Success
default
Error
Response samples
Create team
Create a new team for an organization.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
List teams
Return a list of all teams within an organization.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
teamName
string The team name
no_members
boolean Value: true Indicates whether or not to include the team members in the response
Responses
200
Success
default
Error
Response samples
Update the members of a team
Update the members of a team.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/membership
Authorizations
BearerToken
Path parameters
rbacTeamID (required)
string <uuid> The team ID
orgID (required)
string <uuid> The org ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Update a team's applications
Update the apps assigned to a team.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/apps
Authorizations
BearerToken
Path parameters
rbacTeamID (required)
string <uuid> The team ID
orgID (required)
string <uuid> The org ID
Request body schema: application/json
version (required)
integer The team configuration version
add_applications
Array of strings A list of the applications to add to the team
force_app_inclusion
boolean Whether the app should be added if it belongs to another team. The app will be removed from the conflicting team if added
remove_applications
Array of strings A list of the application IDs to remove from the team
Responses
200
Success
default
Error
Request samples
Response samples
Update the metadata of a team
Update the metadata of a team.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/metadata
Authorizations
BearerToken
Path parameters
rbacTeamID (required)
string <uuid> The team ID
orgID (required)
string <uuid> The org ID
Request body schema: application/json
version (required)
integer The team configuration version
change_name
string The team's new name
Responses
200
Success
default
Error
Request samples
Response samples
Read team
Return information about a team.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Responses
200
Success
default
Error
Response samples
Update a team
Update a team within an organization.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}
Authorizations
BearerToken
Path parameters
rbacTeamID (required)
string <uuid> The team ID
orgID (required)
string <uuid> The org ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Delete team
Delete a team within an organization.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}
Authorizations
BearerToken
Path parameters
rbacTeamID (required)
string <uuid> The team ID
orgID (required)
string <uuid> The org ID
Request body schema: application/json
version (required)
integer The team's configuration version
Responses
200
Success
default
Error
Request samples
Response samples
List groups
Return a list of all groups within a team.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/groups
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Responses
200
Success
Response samples
Create or update group
Create or update a group within a team.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/groups
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Read group
Return information about a group.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/groups/{groupID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
groupID (required)
string <uuid> A human group's ID
Responses
200
Success
default
Error
Response samples
Update group
Update a group's role within a team.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/groups/{groupID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
groupID (required)
string <uuid> A human group's ID
Request body schema: application/json
team_role
string
Responses
200
Success
default
Error
Request samples
Response samples
Remove group from team
Remove a group's membership to a team.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/groups/{groupID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
groupID (required)
string <uuid> A human group's ID
Responses
200
Success
default
Error
Response samples
Read Team group
Return information about a group.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/groups/{groupID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
groupID (required)
string <uuid> A human group's ID
Responses
200
Success
default
Error
Response samples
Reports
The summaries of applications and their findings for a specific organization.
Read HTML PCI DSS report for a scan
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans/{scanID}/reports/pci_dss/html
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
scanID (required)
string ID of the scan
Query parameters
ignore_info_findings
boolean Whether findings marked as informational should be included in the report or not
Responses
200
Success
default
Error
Response samples
Read Detailed OWASP report for a scan
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans/{scanID}/reports/owasp-{year}.{ext}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
scanID (required)
string ID of the scan
ext (required)
string Enum: "html" "pdf" Example: pdfthe extension wanted
year (required)
string Enum: "2017" "2021" Example: 2021the year wanted
Query parameters
comments
boolean Whether to include comments
status
string (Status) Enum: "unset" "fixed" "ignored" "3rdparty" "any" The status filter. By default, only unset findings are included.
tz
string Example: tz=America/New_YorkThe timezone for any times shown in the report. By default, times are shown in UTC.
Responses
200
Success
default
Error
Response samples
Read CWE report for a scan
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans/{scanID}/reports/cwe.{ext}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
scanID (required)
string ID of the scan
ext (required)
string Enum: "html" "pdf" Example: pdfthe extension wanted
Query parameters
comments
boolean Whether to include comments
status
string (Status) Enum: "unset" "fixed" "ignored" "3rdparty" "any" The status filter. By default, only unset findings are included.
tz
string Example: tz=America/New_YorkThe timezone for any times shown in the report. By default, times are shown in UTC.
Responses
200
Success
default
Error
Response samples
SAML
The integration endpoints allowing orgs to configure Qwiet to act as a SAML service provider (SP) that uses the customer's identity provider (IdP) to log users in.
Create a SAML configuration for an org
Create a SAML configuration that can be used to authenticate users for an organization
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/saml_configs
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
idp_metadata_url
string <uri> The URL of the SAML Identity Provider's (IdP) metadata endpoint
idp_metadata
string The raw XML metadata that can be provided instead of idp_metadata_url
allow_implicit_invites
boolean Sets whether any successful SAML-identified user should be allowed to join your org (true) or not (false)
default_org_role
string The default role that new users in the org are given when joining via SAML. If not specified, this defaults to "TEAM_DEFINED"
sign_auth_requests
boolean Whether to sign SAML requests sent from Qwiet to the SAML IdP
allow_idp_initiated_logins
boolean Whether SAML-initiated logins should be allowed or not. By default they are disabled, as service provider (SP) initiated logins are generally considered safer. When enabled, the saml_config endpoint will have another field, "idp_default_relay_state", which contains an opaque blob that needs to be set as the default relay state in the IdP configuration. This state will be sent on every request where no relay state was provided and contains some additional information to help the SP (Qwiet) properly route the request.
name (required)
string (SAMLConfigName) ^[a-zA-Z0-9-_]{1, 255}$ The name and ID of the specified SAML configuration
Responses
200
Success
default
Error
Request samples
Response samples
List SAML configurations for an org
List the SAML Configurations that can be used to authenticate users in an organization
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/saml_configs
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Update SAML configuration for an org
Update a SAML Configuration used to authenticate users for an organization
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/saml_configs/{SAMLConfigName}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
SAMLConfigName (required)
string (SAMLConfigName) ^[a-zA-Z0-9-_]{1, 255}$ The name and ID of the specified SAML configuration
Request body schema: application/json
idp_metadata_url
string <uri> The URL of the SAML Identity Provider's (IdP) metadata endpoint
idp_metadata
string The raw XML metadata that can be provided instead of idp_metadata_url
allow_implicit_invites
boolean Sets whether any successful SAML-identified user should be allowed to join your org (true) or not (false)
default_org_role
string The default role that new users in the org are given when joining via SAML. If not specified, this defaults to "TEAM_DEFINED"
sign_auth_requests
boolean Whether to sign SAML requests sent from Qwiet to the SAML IdP
allow_idp_initiated_logins
boolean Whether SAML-initiated logins should be allowed or not. By default they are disabled, as service provider (SP) initiated logins are generally considered safer. When enabled, the saml_config endpoint will have another field, "idp_default_relay_state", which contains an opaque blob that needs to be set as the default relay state in the IdP configuration. This state will be sent on every request where no relay state was provided and contains some additional information to help the SP (Qwiet) properly route the request.
Responses
200
Success
Request samples
Response samples
Delete an org's SAML configuration
Delete a SAML Configuration that is used to authenticate users in an organization
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/saml_configs/{SAMLConfigName}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
SAMLConfigName (required)
string (SAMLConfigName) ^[a-zA-Z0-9-_]{1, 255}$ The name and ID of the specified SAML configuration
Responses
200
Success
default
Error
Response samples
Provision or update SAML users for an organization.
Create or update SAML users and their org or team roles. Users cannot be deleted.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/saml/provision
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json (array)
Responses
200
Success
default
Error
Request samples
Response samples
Reset a SAML user's access token.
Blanks the access token of a specific SAML user in the organization. The organization must have SAML enabled and the target user must be a SAML user.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/saml/users/{userIDv2}/access_token/reset
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
userIDv2 (required)
string <uuid> The user's ID
Responses
204
Access token successfully reset.
default
Error
Response samples
Bulk reset SAML user access tokens.
Blanks the access tokens of multiple SAML users in the organization. The organization must have SAML enabled. Users that are not found or are not SAML users are reported separately in the response.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/saml/access_token/reset
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
user_ids (required)
Array of strings <uuid> non-empty [ items <uuid > ] list of user IDs (v2) whose access tokens should be reset.
Responses
200
Success
default
Error
Request samples
Response samples
SARIF
The integration endpoints for generating and downloading SARIF reports for applications.
Download Compound SARIF Report
Downloads the SARIF report for the specified compound.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/reports/sarif
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
polyglot_scan
string Polyglot scan ID to filter to; defaults to the latest scan.
scan_version
string The version of the code at scan time. Ignored if polyglot_scan is given.
scan_branch
string The code branch at scan time. Ignored if polygot_scan or scan_version are given.
scan_tag
string^(?<key>.*?)__eq__(?<value>.*)$ Tags passed to the analyzer at scan time. Ignored if polygot_scan, scan_version, or scan_branch are given.
scan_platform
string (ScanPlatform) Enum: "java" "go" "csharp" "javascript" "c" "python" "terraform_hcl" "ruby" "php" "fuzzytestlang" "kotlin" "javasrc" "pythonsrc" "jssrc" "secrets" "swiftsrc" "plsql" "apex" "groovy" The analysis platform. Cannot be specified together with scan_language.
scan_language
string (ScanLanguage) Enum: "java" "go" "csharp" "javascript" "c" "python" "terraform_hcl" "ruby" "php" "fuzzytestlang" "kotlin" "swift" "plsql" "apex" "groovy" The analysis language. Cannot be specified together with scan_platform.
Responses
200
SARIF report file streamed as download
default
Error
Response samples
Saved Searches
The saved searches endpoints allow users to save specific search queries for organization and app findings
Get all saved searches for an user
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/saved_searches
Path parameters
orgID (required)
string
Responses
200
A list of saved searches
Response samples
Create a new saved search for a user
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/saved_searches
Path parameters
orgID (required)
string
Request body schema: application/json (required)
search_name
string
path_name
string
search_query
string
Responses
201
Saved search created
Request samples
Update a saved search for a user
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/saved_searches/{searchID}
Path parameters
orgID (required)
string
searchID (required)
string
Request body schema: application/json (required)
search_name
string
path_name
string
search_query
string
Responses
200
Saved search updated
Request samples
Delete a saved search for a user
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/saved_searches/{searchID}
Path parameters
orgID (required)
string
searchID (required)
string
Responses
204
Saved search deleted
SCA
The summaries of software composition analysis (SCA) results for apps in an organization.
Read the SCA packages of a compound scan
Return information about the packages found in a scan of an app
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/sca/packages
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
polyglot_scan
integer Example: polyglot_scan=42Polyglot scan ID of the scan to filter to; defaults to the latest scan.
scan_version
string Example: scan_version=9b7e138e1b16dc5261803cceffb86c36800c2c7fThe version of which to get the latest scan. This is usually a SHA1. Ignored if polyglot_scan is given.
scan_branch
string Example: scan_branch=feature/1234The branch of which to get the latest scan. Ignored if polygot_scan or scan_version are given.
scan_tag
string^(?<key>.*?)__eq__(?<value>.*)$ Tags passed to the analyzer at scan time. Ignored if polygot_scan, scan_version, or scan_branch are given.
scan_platform
string (ScanPlatform) Enum: "java" "go" "csharp" "javascript" "c" "python" "terraform_hcl" "ruby" "php" "fuzzytestlang" "kotlin" "javasrc" "pythonsrc" "jssrc" "secrets" "swiftsrc" "plsql" "apex" "groovy" The analysis platform. Cannot be specified together with scan_language.
scan_language
string (ScanLanguage) Enum: "java" "go" "csharp" "javascript" "c" "python" "terraform_hcl" "ruby" "php" "fuzzytestlang" "kotlin" "swift" "plsql" "apex" "groovy" The analysis language. Cannot be specified together with scan_platform.
type
string Enum: "package" "container_package" Example: type=packageThe package finding types to include.
tag
string Example: tag=package_type__eq__alpinea tag query used to filter the findings
per_page
integer [ 1 .. 10000 ] Default: 100 The number of results per page.
page
integer >= 1 Default: 1 The specific page of the results to fetch.
sort
string Enum: "package" "url" "name" "namespace" "type" "version" "license" "created_at" "num_vulns" "num_reachable" "num_exploitable" How to sort results; defaults to ID
order
string Enum: "desc" "asc" Direction of the sort; defaults to descending
Responses
200
Success
default
Error
Response samples
Read the count of multiple tags of an app.
Return information about the packages found in a scan of an app
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/sca/packages
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Query parameters
scan
integer Example: scan=42The ID of the scan to filter to. Defaults to the latest scan.
branch
string Example: branch=feature/1234The branch of which to get the latest scan.
type
string Enum: "package" "container_package" Example: type=packageThe package finding types to include.
tag
string Example: tag=package_type__eq__alpinea tag query used to filter the findings
per_page
integer Number of results per page; defaults to 50
page
integer The page of results to fetch. Results are not guaranteed to be deterministic using this approach; we recommended using the next_page URL in a paginated response
sort
string Enum: "package" "url" "name" "namespace" "type" "version" "license" "created_at" "num_vulns" "num_reachable" "num_exploitable" How to sort results; defaults to ID
order
string Enum: "desc" "asc" Direction of the sort; defaults to descending
Responses
200
Success
default
Error
Response samples
List dependencies that match the search
Return all dependencies for the org apps if they match the search criteria.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/dependencies
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
search
string Search filter that looks for matches in finding titles and tags
page
integer [ 1 .. 20 ] Default: 1 Example: page=1The page of results to fetch. Currently asking for pages beyond 20 will fail.
per_page
integer [ 0 .. 1000 ] Default: 250 Number of results per page.
from
integer Packages found during scans created as of this time are included in the search. Value should be a Unix timestamp (in seconds). Defaults to 4 months before until. Increasing the time window increases the chance that the search will timeout.
until
integer Packages found during scans created up to this time are included in the search. Value should be a Unix timestamp (in seconds). Defaults to the creation timestamp of the most recent successful scan.
Responses
200
Success
default
Error
Response samples
Retrieve package information (CVEs, licenses, and more) for a list of PURLs
POST https://app.shiftleft.io/api/v4/package_info
Request body schema: application/json
purls
Array of strings
Responses
200
Success
default
Error
Request samples
Response samples
Scans
The instances where Qwiet AI by Harness is invoked to identify findings in an application.
List scans
Return the most recent scans for the indicated app.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Query parameters
tags
Array of strings The scan tags to filter by (e.g., branch=main)
limit
integer The number of scans to return (must be between 1 and 50, inclusive). The default is 10 scans
Responses
200
Success
default
Error
Response samples
Compare scans
Compare two scans and return a list of the findings in each, along with regression information.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans/compare
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Query parameters
source (required)
string^scan\\d+|tag\\w=\w$ Example: source=scan.128|tag.branch=samplebranchThe source scan for a comparison
target (required)
string^scan\\d+|tag\\w=\w$ Example: target=scan.128|tag.branch=samplebranchThe target scan for a comparison
Responses
200
Success
default
Error
Response samples
Check a scan against a set of rules
Check a scan against a set of rules, using another scan as a reference.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{compoundName}/scans/check
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Read scan details
Return details for the specified scan.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans/{scanID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
scanID (required)
string ID of the scan
Responses
200
Success
default
Error
Response samples
Read check scans report
Read Check Scans Report.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans/{scanID}/report
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
scanID (required)
string ID of the scan
Responses
200
Success
default
Error
Response samples
List scans in a compound, returning a subset of the scan summary information
The full information we can return about a scan is a lot of data, which slows down a UI that only wants to present a subset of it to the user. This endpoint returns only the subset actually needed for rendering that UI. As such it's meant for internal use only, but is documented because other API users may find it useful for similar reasons.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/scans/streamlined
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
limit
integer [ 1 .. 100 ] Default: 10 The number of scans to return.
branch
string Only consider scans on this branch.
upto
integer Only list scans created before this time (given in nanoseconds since the UNIX Epoch).
Responses
200
Success
default
Error
Response samples
Read compound scan
Retrieve details for a specific scan of a compound
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/scans/{scanID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
scanID (required)
string The ID of the scan to retrieve
Query parameters
archived
boolean If present, includes archived compounds
Responses
200
Success
default
Error
Response samples
List Scans of Compound
List all scans for a specific compound
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/scans
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Query parameters
archived
boolean If present, includes archived compounds
status
string Enum: "completed" "running" "failed" Filter scans by status
branch
string Filter scans by branch
limit
integer The number of scans to return (must be between 1 and 50, inclusive). The default is 10 scans
Responses
200
Success
default
Error
Response samples
Read scan's finding counts (grouped by OWASP category)
Returns a detailed list of OWASP categories and sub-categories and their counts (where available).
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/scans/{scanID}/owasp_counts
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
scanID (required)
string ID of the scan
Responses
200
Success
default
Error
Response samples
Scopes
Scopes define the type of resource and the operation that you can perform with the access token you bear. For example, scans:create means that the bearer of the token with this scope can create scans via the API.
For each endpoint, we indicate the scope required to perform an operation under Authorizations.
We also offer helper endpoints that allow you to determine what the allowed scopes for your access token are in the context of a specific API resource.
List user's org scopes
Return a list of the scopes the user's bearer token is allowed to perform in the context of an org.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/my_scopes
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
List user's app scopes
Return a list of scopes the user is allowed to perform in the context of an app.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/my_scopes
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Responses
200
Success
default
Error
Response samples
List user's team scopes
Return a list of scopes the user is allowed to perform in the context of their team.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/my_scopes
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Responses
200
Success
default
Error
Response samples
Slack
The integration endpoints enabling users to set up a Slack integration.
Authorize Slack
Authorize Slack for the given organization and redirect to Slack authorization prompt
GET https://app.shiftleft.io/api/v4/slack/authorize/orgs/{orgID}
Path parameters
orgID (required)
string <uuid> The org ID
Responses
302
Redirect
default
Error
Response samples
Receive Slack OAuth 2.0 data
Receive Slack OAuth 2.0 data and set up organization configuration with API token
GET https://app.shiftleft.io/api/v4/slack/orgs/{orgID}
Path parameters
orgID (required)
string <uuid> The org ID
Responses
302
Redirect
default
Error
Response samples
Delete Slack OAuth 2.0 data
Delete the Slack configuration for the given organization and revoke stored API token
DELETE https://app.shiftleft.io/api/v4/slack/orgs/{orgID}
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
Team configuration
The endpoints to manage team-level configuration.
Read team config
Return the configuration of a team.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Responses
200
Success
default
Error
Response samples
Update team config
Update the team's configuration.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Patch team config
Partially update the team's configuration. Only fields present in the request body will be updated; all other fields are preserved.
PATCH https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/configuration
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Request body schema: application/json
Responses
200
Success
default
Error
Request samples
Response samples
Read merged team config
Return the effective configuration of a team by taking the organization configuration before merging in the actual team configuration on top, overriding those defaults.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/rbac/teams/{rbacTeamID}/configuration/merged
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
rbacTeamID (required)
string <uuid> The team ID
Responses
200
Success
default
Error
Response samples
Access tokens
Used to authenticate with the API.
Can be issued by org admins. Each access token is owned by the org that issued it.
List access token roles
Return a list of roles an that are assigned to an access token and are available for use (includes only the roles that are managed by Qwiet).
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/roles
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
default
Error
Response samples
List tokens
Return a list of tokens issued by the org.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/tokens
The token data returned includes metadata that identifies a token, included permissions, and an ID you can use to delete/revoke the token. The token data does NOT return the token value, which is exposed only when Qwiet issues the token.
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Query parameters
show_expired
boolean Whether expired tokens should be returned or not
token_type
string (TokenType) Enum: "access" "integration" Filter the response by the type of token
Responses
200
Success
default
Error
Response samples
Create token
Create a new token for use with the API. The token can be assigned a role using the role_id parameter in the request body.
POST https://app.shiftleft.io/api/v4/orgs/{orgID}/tokens
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
label (required)
string A user-defined label to identify the token
description
string A user-defined description that describes why this token was created and how it should be used
role_id (required)
string The ID of the role attached to this token. For integration tokens, this can be either a predefined role ID from the List access token roles endpoint or a custom organization role ID from the List custom RBAC roles endpoint.
token_type
string (TokenType) Enum: "access" "integration"
valid_for_seconds
integer The duration (in seconds) for which the token is valid (optional)
Responses
200
Success
default
Error
Request samples
Response samples
Delete token
Delete an access token using its identifier.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/tokens/{tokenID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
tokenID (required)
string <uuid> The token ID
Responses
200
Success
default
Error
Response samples
Users
Users pertains the users in general as qwiet.ai users and of each org as organization users.
Read user and their organization information.
Read the user and their organization membership and invites information.
GET https://app.shiftleft.io/api/v4/user
Authorizations
BearerToken
Responses
200
Success
default
Error
Response samples
Versions
The specific instances of an application scanned using Qwiet AI by Harness.
List app versions
Return a list of the versions of the app that Qwiet has scanned
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/versions
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
Query parameters
tags
Array of strings The scan tags to filter by (e.g., branch=main)
type
string The type of findings. Accepted values are oss_vuln, vuln, and secret
Responses
200
Success
default
Error
Response samples
Read summary of findings for an app version
Return a summary of findings for a single version
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/apps/{appID}/versions/{versionID}
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
appID (required)
string The app ID (e.g., HelloQwiet)
versionID (required)
string The version ID (e.g., 7d0...8b10)
Query parameters
type
string The type of findings. Accepted values are oss_vuln, vuln, and secret
scan
string The ID of the scan to filter to. Defaults to the latest scan
Responses
200
Success
default
Error
Response samples
Wiz
The endpoints to manage the Wiz integration.
Get WIZ client credentials
Get the client credentials i.e. authURL, apiURL.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/integrations/wiz/creds
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
404
Credentials Not Found
default
Error
Response samples
Store WIZ client credentials
Captures the wiz client credentials such as clientID, clientSecret, authentication url & API endpoint.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/integrations/wiz/creds
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
client_id
string service account client id
client_secret
string service account client secret
auth_url
string wiz authentication url (i.e. "https://auth.app.wiz.io/oauth/token")
api_url
string wiz api endpoint (i.e. "https://api.us17.app.wiz.io/graphql")
Responses
200
Success
400
The provided wiz auth/api url is invalid
401
The provided wiz client credentials are invalid
403
The provided wiz credentials does not have sufficient permissions for enrichment
default
Error
Request samples
Response samples
Get Wiz Compound enrollment status
Get the compound enrollment status. Provides detail about enrolled enrichments. If no compound level configuration present, it fetches the organization level configurations.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/integrations/wiz/enrollment
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Responses
200
Success
400
Enrollment not found
default
Error
Response samples
Update Wiz Compound enrollment
Updates compound enrollment. A compound can be enrolled for multiple supported enrichment [SAST/SCA]. Only the projects under enrolled compound are allowed for wiz integration after the successful project scan.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/integrations/wiz/enrollment
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Request body schema: application/json
enrolled_for
Array of strings enrichment type, possible values [SAST, SCA]
scope
string indicates the scope from which configuration are fetched. If no config found for requested scope, it fetches the config from higher level. possible values- compound / organization.
is_enabled
boolean disables enrichment at the config level. i.e. If a compound level enrichment is disabled, the compound will be ignored during enrichment even if the org level enrichment is enabled. Granular level configuration takes the higher precedence.
Responses
200
Success
400
The provided wiz enrichment type is invalid
default
Error
Request samples
Response samples
Remove Wiz Compound enrollment
Removes compoud enrollment. Removed compound will not be used for wiz enrichment.
DELETE https://app.shiftleft.io/api/v4/orgs/{orgID}/compounds/named/{compoundName}/integrations/wiz/enrollment
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
compoundName (required)
string A compound's name
Responses
200
Success
400
Enrollment not found
default
Error
Response samples
Get Wiz Org enrollment status
Get the org enrollment status. Provides detail about enrolled enrichments.
GET https://app.shiftleft.io/api/v4/orgs/{orgID}/integrations/wiz/enrollment
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Responses
200
Success
400
Enrollment not found
default
Error
Response samples
Update Wiz Org enrollment
Updates Wiz org enrollment. This configuration will be default for all compounds under the organization unless overridden at compound level.
PUT https://app.shiftleft.io/api/v4/orgs/{orgID}/integrations/wiz/enrollment
Authorizations
BearerToken
Path parameters
orgID (required)
string <uuid> The org ID
Request body schema: application/json
enrolled_for
Array of strings enrichment type, possible values [SAST, SCA]
scope
string indicates the scope from which configuration are fetched. If no config found for requested scope, it fetches the config from higher level. possible values- compound / organization.
is_enabled
boolean disables enrichment at the config level. i.e. If a compound level enrichment is disabled, the compound will be ignored during enrichment even if the org level enrichment is enabled. Granular level configuration takes the higher precedence.
Responses
200
Success
400
The provided wiz enrichment type is invalid
default
Error
Request samples
Response samples
Last updated
Was this helpful?