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.

Contact

API Support

support@solvo.cloud

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.

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

Arguments
Name Description
ruleId - String! Simple Rule id (such as SOLVO-101) or UUID of the rule
bundleId - String! Compliance bundle UUID
accountId - String! Cloud account external id such as aws account number or Azure AD tenant ID

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]

Arguments
Name Description
excludeSolvoRules - Boolean If true, return only customized rules. Default = false
excludeCustomRules - Boolean If true, return only Solvo (built-in) rules. Default = false

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

Fields
Field Name Description
accountId - String!
compliant - Int
nonCompliant - Int
Example
{
  "accountId": "xyz789",
  "compliant": 987,
  "nonCompliant": 123
}

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

Fields
Field Name Description
ruleId - String!
simpleId - String
name - String
vendor - String
severity - String
status - String
violations - Int
exclusions - Int
frameworks - [String]
totalAccounts - Int
nonCompliantAccounts - Int
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

Fields
Field Name Description
bundleId - String!
accountId - String!
status - String
violations - Int
exclusions - Int
Example
{
  "bundleId": "xyz789",
  "accountId": "abc123",
  "status": "xyz789",
  "violations": 987,
  "exclusions": 123
}

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

Fields
Field Name Description
framework - String!
compliant - Int
nonCompliant - Int
Example
{
  "framework": "abc123",
  "compliant": 123,
  "nonCompliant": 123
}

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

Fields
Input Field Description
type - String! "email" or "sns-topic-arn" or "download-url"
value - String! Email address or topic arn or empty string
Example
{
  "type": "xyz789",
  "value": "abc123"
}

ComplianceTenantReportStatus

Fields
Field Name Description
statusUrlObject - String URL to download a status object file representing the report progress
details - String
Example
{
  "statusUrlObject": "abc123",
  "details": "abc123"
}

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

Fields
Field Name Description
error - String
details - String
data - String
Example
{
  "error": "xyz789",
  "details": "xyz789",
  "data": "xyz789"
}

SeverityDistribution

Fields
Field Name Description
critical - Int
high - Int
medium - Int
low - Int
Example
{"critical": 987, "high": 123, "medium": 123, "low": 987}

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"