Solvo External Graphql API Reference
Welcome to the Solvo external GraphQL API documentation site. The Solvo API uses the GraphQL query language. This guide is designed to help developers leverage the power of Solvo's API to enhance their cloud security workflows. You'll find detailed information on the available API endpoints, query and mutation structures, authentication methods, and more, enabling you to seamlessly integrate Solvo's capabilities into your applications. To learn how to create an API key to authenticate to the API click here.
Terms of Service
API Endpoints
# US:
https://api.solvo.cloud/v1/external/graphql
# EU:
https://api.solvo.eu.cloud/v1/external/graphql
Headers
# Add your Solvo api key as shown below
Authorization: Bearer <YOUR_SOLVO_API_KEY>
Queries
complianceBundlesV2
Description
Returns all Solvo complaince bundle(s)
Response
Returns a ComplianceBundlesV2
Example
Query
query ComplianceBundlesV2 {
complianceBundlesV2 {
bundles {
bundleId
bundleName
enabled
notifications
cloudAccountIds
description
frameworks
bundleType
createdAt
}
}
}
Response
{
"data": {
"complianceBundlesV2": {
"bundles": [ComplianceBundleV2]
}
}
}
complianceDashboardV2
Description
Returns the compliance dashboard data.
Response
Returns a ComplianceDashboardV2
Arguments
| Name | Description |
|---|---|
bundleId - String
|
Compliance bundle UUID. Can not be used with bundleType. Default = null |
bundleType - String
|
Compliance bundle type. Can be one of: customer, solvo_best_practices. Can not be used with bundleId. Default = null |
rulesFilter - ComplianceDashboardV2RulesFilter
|
Filtering options for the rules table (such as accountId). Default = null |
Example
Query
query ComplianceDashboardV2(
$bundleId: String,
$bundleType: String,
$rulesFilter: ComplianceDashboardV2RulesFilter
) {
complianceDashboardV2(
bundleId: $bundleId,
bundleType: $bundleType,
rulesFilter: $rulesFilter
) {
stats {
totalActiveRules
compliantRules
nonCompliantRules
rulesInProgress
pendingRules
errorEvaluatingRules
accountsPosture {
accountId
compliant
nonCompliant
}
frameworksPosture {
framework
compliant
nonCompliant
}
failedRulesDistribution {
critical
high
medium
low
}
}
rules {
ruleId
simpleId
name
vendor
severity
status
violations
exclusions
frameworks
totalAccounts
nonCompliantAccounts
}
}
}
Variables
{
"bundleId": "fb00f6d1-0cf8-4520-8cb3-836e4991e360",
"bundleType": null,
"rulesFilter": {"accountId": "123456789012"}
}
Response
{
"data": {
"complianceDashboardV2": {
"stats": ComplianceDashboardV2Stats,
"rules": [ComplianceDashboardV2Rule]
}
}
}
complianceDashboardV2RuleDetails
Description
Returns the rule stats of each bundle / account.
Response
Returns a ComplianceDashboardV2RuleDetails
Arguments
| Name | Description |
|---|---|
ruleId - String!
|
Simple Rule id (such as SOLVO-101) or UUID of the rule |
bundleId - String
|
Compliance bundle UUID. Default = null |
bundleType - String
|
Compliance bundle type. Can be one of: customer, solvo_best_practices. Default = null |
accountId - String
|
Cloud account external id such as aws account number or Azure AD tenant ID. Default = null |
Example
Query
query ComplianceDashboardV2RuleDetails(
$ruleId: String!,
$bundleId: String,
$bundleType: String,
$accountId: String
) {
complianceDashboardV2RuleDetails(
ruleId: $ruleId,
bundleId: $bundleId,
bundleType: $bundleType,
accountId: $accountId
) {
ruleStats {
bundleId
accountId
status
violations
exclusions
}
}
}
Variables
{
"ruleId": "SOLVO-101",
"bundleId": "fb00f6d1-0cf8-4520-8cb3-836e4991e360",
"bundleType": null,
"accountId": "123456789012"
}
Response
{
"data": {
"complianceDashboardV2RuleDetails": {
"ruleStats": [ComplianceDashboardV2RuleStats]
}
}
}
complianceExclusions
Description
Returns all compliance exclusions records
Response
Returns a ComplianceExclusionsRecords
Arguments
| Name | Description |
|---|---|
nextToken - String
|
Pagination token |
Example
Query
query ComplianceExclusions($nextToken: String) {
complianceExclusions(nextToken: $nextToken) {
records {
exclusionId
exclusionReason
exclusionExpirationDate
excludedBy
creationTime
ruleId
bundleId
accountId
}
nextToken
}
}
Variables
{"nextToken": "xyz789"}
Response
{
"data": {
"complianceExclusions": {
"records": [ComplianceRuleExclusionRecord],
"nextToken": "xyz789"
}
}
}
complianceRuleExclusions
Description
Returns all exclusions of a given compliance bundle rule
Response
Returns an Exclusions
Example
Query
query ComplianceRuleExclusions(
$ruleId: String!,
$bundleId: String!,
$accountId: String!
) {
complianceRuleExclusions(
ruleId: $ruleId,
bundleId: $bundleId,
accountId: $accountId
) {
exclusions {
exclusionId
exclusionReason
exclusionExpirationDate
excludedBy
creationTime
}
}
}
Variables
{
"ruleId": "SOLVO-101",
"bundleId": "fb00f6d1-0cf8-4520-8cb3-836e4991e360",
"accountId": "123456789012"
}
Response
{
"data": {
"complianceRuleExclusions": {
"exclusions": [Exclusion]
}
}
}
complianceRules
Description
Returns Solvo and/or customized compliance rules metadata. Use excludeSolvoRules or excludeCustomRules to filter.
Response
Returns [ComplianceRuleV2]
Example
Query
query ComplianceRules(
$excludeSolvoRules: Boolean,
$excludeCustomRules: Boolean
) {
complianceRules(
excludeSolvoRules: $excludeSolvoRules,
excludeCustomRules: $excludeCustomRules
) {
simpleId
name
regoPolicy
severity
frameworks
controls
description
ruleId
vendor
isCustomizedRule
cyeFindingId
}
}
Variables
{"excludeSolvoRules": false, "excludeCustomRules": false}
Response
{
"data": {
"complianceRules": [
{
"simpleId": "xyz789",
"name": "xyz789",
"regoPolicy": "xyz789",
"severity": "xyz789",
"frameworks": ["xyz789"],
"controls": ["abc123"],
"description": "abc123",
"ruleId": "abc123",
"vendor": "abc123",
"isCustomizedRule": true,
"cyeFindingId": "abc123"
}
]
}
}
Mutations
complianceTenantReport
Description
Provides the ability to send non-compliant rules report
Response
Returns a ComplianceTenantReportStatus
Arguments
| Name | Description |
|---|---|
deliveryOptions - [ComplianceTenantReportDeliveryOption!]
|
A list of delivery options specifying the recipients for the report. Each option is an object containing "type" and "value" fields. If no delivery options are provided, the report will be sent to the default email address associated with the user or its API key |
Example
Query
mutation ComplianceTenantReport($deliveryOptions: [ComplianceTenantReportDeliveryOption!]) {
complianceTenantReport(deliveryOptions: $deliveryOptions) {
statusUrlObject
details
}
}
Variables
{
"deliveryOptions": [
{
"type": "sns-topic-arn",
"value": "arn:aws:sns:us-east-1:123456789012:solvo-compliance-report"
}
]
}
Response
{
"data": {
"complianceTenantReport": {
"statusUrlObject": "abc123",
"details": "xyz789"
}
}
}
excludeComplianceRule
Description
Provides the ability to exclude a list of violation id(s) for a given compliance bundle rule
Response
Returns a ResponseModel
Arguments
| Name | Description |
|---|---|
bundleId - String!
|
Compliance bundle UUID |
ruleId - String!
|
Simple Rule id (such as SOLVO-101) or UUID of the rule |
accountId - String!
|
Cloud account external id such as aws account number or Azure AD tenant ID |
violationIds - [String]!
|
List of violation id(s) to be excluded |
exclusionReason - String!
|
Exclusion reason |
exclusionExpirationDate - String
|
The UTC ISO date of the exclusion expiration, with no expiration if not provided. Default = null |
Example
Query
mutation ExcludeComplianceRule(
$bundleId: String!,
$ruleId: String!,
$accountId: String!,
$violationIds: [String]!,
$exclusionReason: String!,
$exclusionExpirationDate: String
) {
excludeComplianceRule(
bundleId: $bundleId,
ruleId: $ruleId,
accountId: $accountId,
violationIds: $violationIds,
exclusionReason: $exclusionReason,
exclusionExpirationDate: $exclusionExpirationDate
) {
error
details
data
}
}
Variables
{
"bundleId": "fb00f6d1-0cf8-4520-8cb3-836e4991e360",
"ruleId": "SOLVO-101",
"accountId": "123456789012",
"violationIds": [
"arn:aws:iam::123456789012:role/Developer",
"arn:aws:iam::123456789012:role/Qa"
],
"exclusionReason": "Honeypot account",
"exclusionExpirationDate": "2025-02-20T11:54:35"
}
Response
{
"data": {
"excludeComplianceRule": {
"error": "abc123",
"details": "abc123",
"data": "abc123"
}
}
}
unexcludeComplianceRule
Description
Provides the ability to unexclude a list of violation id(s) for a given compliance bundle rule
Response
Returns a ResponseModel
Arguments
| Name | Description |
|---|---|
bundleId - String!
|
Compliance bundle UUID |
ruleId - String!
|
Simple Rule id (such as SOLVO-101) or UUID of the rule |
accountId - String!
|
Cloud account external id such as aws account number or Azure AD tenant ID |
violationIds - [String]!
|
List of violation id(s) to be unexcluded |
Example
Query
mutation UnexcludeComplianceRule(
$bundleId: String!,
$ruleId: String!,
$accountId: String!,
$violationIds: [String]!
) {
unexcludeComplianceRule(
bundleId: $bundleId,
ruleId: $ruleId,
accountId: $accountId,
violationIds: $violationIds
) {
error
details
data
}
}
Variables
{
"bundleId": "fb00f6d1-0cf8-4520-8cb3-836e4991e360",
"ruleId": "SOLVO-101",
"accountId": "123456789012",
"violationIds": [
"arn:aws:iam::123456789012:role/Developer",
"arn:aws:iam::123456789012:role/Qa"
]
}
Response
{
"data": {
"unexcludeComplianceRule": {
"error": "xyz789",
"details": "xyz789",
"data": "abc123"
}
}
}
Types
Boolean
Description
The Boolean scalar type represents true or false.
Example
true
ComplianceAccountPosture
ComplianceBundleV2
Fields
| Field Name | Description |
|---|---|
bundleId - String!
|
Compliance bundle UUID |
bundleName - String!
|
Name of bundle |
enabled - Boolean!
|
Bundle active status |
notifications - [String!]!
|
Enabled notifications types for the bundle |
cloudAccountIds - [String!]!
|
Cloudaccount(s) that are associated to the bundle |
description - String
|
Description of the bundle |
frameworks - [String!]!
|
Frameworks that are associated to the bundle |
bundleType - String!
|
Type of bundle |
createdAt - String!
|
The UTC ISO date the bundle was created at |
Example
{
"bundleId": "xyz789",
"bundleName": "xyz789",
"enabled": true,
"notifications": ["abc123"],
"cloudAccountIds": ["abc123"],
"description": "abc123",
"frameworks": ["abc123"],
"bundleType": "xyz789",
"createdAt": "xyz789"
}
ComplianceBundlesV2
Fields
| Field Name | Description |
|---|---|
bundles - [ComplianceBundleV2]
|
List of bundles |
Example
{"bundles": [ComplianceBundleV2]}
ComplianceDashboardV2
Fields
| Field Name | Description |
|---|---|
stats - ComplianceDashboardV2Stats
|
|
rules - [ComplianceDashboardV2Rule]
|
Example
{
"stats": ComplianceDashboardV2Stats,
"rules": [ComplianceDashboardV2Rule]
}
ComplianceDashboardV2Rule
Example
{
"ruleId": "xyz789",
"simpleId": "xyz789",
"name": "abc123",
"vendor": "xyz789",
"severity": "xyz789",
"status": "xyz789",
"violations": 987,
"exclusions": 123,
"frameworks": ["abc123"],
"totalAccounts": 123,
"nonCompliantAccounts": 123
}
ComplianceDashboardV2RuleDetails
Fields
| Field Name | Description |
|---|---|
ruleStats - [ComplianceDashboardV2RuleStats]
|
Example
{"ruleStats": [ComplianceDashboardV2RuleStats]}
ComplianceDashboardV2RuleStats
ComplianceDashboardV2RulesFilter
Fields
| Input Field | Description |
|---|---|
accountId - String
|
Cloud account external id such as aws account number or Azure AD tenant ID |
Example
{"accountId": "xyz789"}
ComplianceDashboardV2Stats
Fields
| Field Name | Description |
|---|---|
totalActiveRules - Int
|
|
compliantRules - Int
|
|
nonCompliantRules - Int
|
|
rulesInProgress - Int
|
|
pendingRules - Int
|
|
errorEvaluatingRules - Int
|
|
accountsPosture - [ComplianceAccountPosture]
|
|
frameworksPosture - [ComplianceFrameworkPosture]
|
|
failedRulesDistribution - SeverityDistribution
|
Example
{
"totalActiveRules": 123,
"compliantRules": 987,
"nonCompliantRules": 987,
"rulesInProgress": 123,
"pendingRules": 987,
"errorEvaluatingRules": 123,
"accountsPosture": [ComplianceAccountPosture],
"frameworksPosture": [ComplianceFrameworkPosture],
"failedRulesDistribution": SeverityDistribution
}
ComplianceExclusionsRecords
Fields
| Field Name | Description |
|---|---|
records - [ComplianceRuleExclusionRecord]
|
|
nextToken - String
|
Token to retrieve the next page of results if not all results were returned in the current response |
Example
{
"records": [ComplianceRuleExclusionRecord],
"nextToken": "xyz789"
}
ComplianceFrameworkPosture
ComplianceRuleExclusionRecord
Fields
| Field Name | Description |
|---|---|
exclusionId - String
|
Violation id |
exclusionReason - String
|
Exclusion reason |
exclusionExpirationDate - String
|
The expiration UTC ISO date of the exclusion |
excludedBy - String
|
The user or API key that initiated the exclusion |
creationTime - String
|
The UTC ISO date of the exclusion event |
ruleId - String
|
Simple ID of the rule, used for quick identification |
bundleId - String
|
Compliance bundle UUID |
accountId - String
|
Cloud account external id such as aws account number or Azure AD tenant ID |
Example
{
"exclusionId": "xyz789",
"exclusionReason": "abc123",
"exclusionExpirationDate": "xyz789",
"excludedBy": "abc123",
"creationTime": "abc123",
"ruleId": "xyz789",
"bundleId": "xyz789",
"accountId": "xyz789"
}
ComplianceRuleV2
Fields
| Field Name | Description |
|---|---|
simpleId - String
|
Simple ID of the rule, used for quick identification |
name - String
|
Name of the rule |
regoPolicy - String
|
Rego policy of the rule |
severity - String
|
Severity of the rule |
frameworks - [String]
|
Frameworks associated with the rule |
controls - [String]
|
Controls associated with the rule Frameworks |
description - String
|
Description of the rule |
ruleId - String
|
Unique ID of the rule |
vendor - String
|
Vendor of the rule |
isCustomizedRule - Boolean
|
Indicates if the rule is a custom rule created by the user |
cyeFindingId - String
|
Cye finding id |
Example
{
"simpleId": "xyz789",
"name": "abc123",
"regoPolicy": "xyz789",
"severity": "xyz789",
"frameworks": ["abc123"],
"controls": ["xyz789"],
"description": "xyz789",
"ruleId": "xyz789",
"vendor": "abc123",
"isCustomizedRule": true,
"cyeFindingId": "abc123"
}
ComplianceTenantReportDeliveryOption
ComplianceTenantReportStatus
Exclusion
Fields
| Field Name | Description |
|---|---|
exclusionId - String
|
Violation id |
exclusionReason - String
|
Exclusion reason |
exclusionExpirationDate - String
|
The expiration UTC ISO date of the exclusion |
excludedBy - String
|
The user or API key that initiated the exclusion |
creationTime - String
|
The UTC ISO date of the exclusion event |
Example
{
"exclusionId": "abc123",
"exclusionReason": "abc123",
"exclusionExpirationDate": "xyz789",
"excludedBy": "xyz789",
"creationTime": "xyz789"
}
Exclusions
Fields
| Field Name | Description |
|---|---|
exclusions - [Exclusion]
|
List of rule exclusions |
Example
{"exclusions": [Exclusion]}
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
987
ResponseModel
SeverityDistribution
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"xyz789"