SLA Domain APIs
Overview of GraphQL APIs for managing the creating, updating, querying and deleting of SLA Domains as well as assigning an SLA Domain to a snapshot.
The examples provided will need to be updated with the correct variables for the SLA Domain which is being managed. Examples variables may include SLA ID, SLA Name, or frequency.
Create SLA Domain
Used to create an SLA Domain. Note that the values of variables provided here are for illustrative purposes only.
MUTATION='{
"query": "mutation CreateSlaMutation($createGlobalSlaInput: CreateGlobalSlaInput!) {
"query": " createGlobalSla(input: $createGlobalSlaInput) {
"query": " id
"query": " __typename
"query": " }
"query": "}",
"query": ""variables": {
"query": " "createGlobalSlaInput": {
"query": " "name": "Your Name",
"query": " "description": "Your Description",
"query": " "snapshotSchedule": {
"query": " "daily": {
"query": " "basicSchedule": {
"query": " "frequency": 1,
"query": " "retention": 7,
"query": " "retentionUnit": "DAYS"
"query": " }
"query": " },
"query": " "monthly": {
"query": " "basicSchedule": {
"query": " "frequency": 1,
"query": " "retention": 1,
"query": " "retentionUnit": "MONTHS"
"query": " },
"query": " "dayOfMonth": "LAST_DAY"
"query": " }
"query": " },
"query": " "archivalSpecs": null,
"query": " "localRetentionLimit": null,
"query": " "backupWindows": [],
"query": " "firstFullBackupWindows": [],
"query": " "objectTypes": [
"query": " "VSPHERE_OBJECT_TYPE"
"query": " ],
"query": " "objectSpecificConfigsInput": {
"query": " "awsRdsConfigInput": null,
"query": " "awsNativeS3SlaConfigInput": null,
"query": " "sapHanaConfigInput": null,
"query": " "db2ConfigInput": null,
"query": " "oracleConfigInput": null,
"query": " "mssqlConfigInput": null,
"query": " "mongoConfigInput": null,
"query": " "vmwareVmConfigInput": null,
"query": " "azureSqlDatabaseDbConfigInput": null,
"query": " "azureSqlManagedInstanceDbConfigInput": null
"query": " },
"query": " "replicationSpecsV2": null,
"query": " "isRetentionLockedSla": false
"query": " }
"query": "}
}'
curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $MUTATION)"
Delete SLA Domain
MUTATION='{
"query": "mutation DeleteSlaMutation($id: UUID!, $userNote: String) {
"query": " deleteGlobalSla(id: $id, userNote: $userNote) {
"query": " success
"query": " __typename
"query": " }
"query": "}",
"query": ""variables": {
"query": " "id": "SLA_ID",
"query": " "userNote": ""
"query": "}
}'
curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $MUTATION)"
Update SLA Domain
MUTATION='{
"query": "mutation UpdateSlaMutation($updateGlobalSlaInput: UpdateGlobalSlaInput!) {
"query": " updateGlobalSla(input: $updateGlobalSlaInput) {
"query": " id
"query": " __typename
"query": " }
"query": "}",
"query": ""variables": {
"query": " "updateGlobalSlaInput": {
"query": " "name": "Your SLA",
"query": " "description": "Your Description",
"query": " "snapshotSchedule": {
"query": " "daily": {
"query": " "basicSchedule": {
"query": " "frequency": 2,
"query": " "retention": 7,
"query": " "retentionUnit": "DAYS"
"query": " }
"query": " },
"query": " "monthly": {
"query": " "basicSchedule": {
"query": " "frequency": 1,
"query": " "retention": 1,
"query": " "retentionUnit": "MONTHS"
"query": " },
"query": " "dayOfMonth": "LAST_DAY"
"query": " }
"query": " },
"query": " "archivalSpecs": null,
"query": " "localRetentionLimit": null,
"query": " "backupWindows": [],
"query": " "firstFullBackupWindows": [],
"query": " "objectTypes": [
"query": " "VSPHERE_OBJECT_TYPE"
"query": " ],
"query": " "objectSpecificConfigsInput": {
"query": " "awsRdsConfigInput": null,
"query": " "awsNativeS3SlaConfigInput": null,
"query": " "sapHanaConfigInput": null,
"query": " "db2ConfigInput": null,
"query": " "oracleConfigInput": null,
"query": " "mssqlConfigInput": null,
"query": " "mongoConfigInput": null,
"query": " "vmwareVmConfigInput": null,
"query": " "azureSqlDatabaseDbConfigInput": null,
"query": " "azureSqlManagedInstanceDbConfigInput": null
"query": " },
"query": " "replicationSpecsV2": null,
"query": " "isRetentionLockedSla": false,
"query": " "retentionLockMode": "NO_MODE",
"query": " "id": "f4251401-d359-4d63-bac0-28bcdf40d9f0",
"query": " "userNote": "",
"query": " "shouldApplyToExistingSnapshots": {
"query": " "value": false
"query": " },
"query": " "shouldApplyToNonPolicySnapshots": {
"query": " "value": false
"query": " }
"query": " }
"query": "}
}'
curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $MUTATION)"
Pause SLA Domain
MUTATION='{
"query": "mutation PauseSLA($clusterId: [String!]!, $slaId: String!) {
"query": " pauseSla(input: {clusterUuids: $clusterId, pauseSla: true, slaId: $slaId}) {
"query": " success
"query": " __typename
"query": " }
"query": "}",
"query": ""variables": {
"query": " "clusterId": "CLUSTER_ID",
"query": " "slaId": "SLA_ID"
"query": "}
}'
curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $MUTATION)"
Query Details of the SLA Domain
QUERY='{
"query": "query SLADomain{
"query": " slaDomain (id: "SLA_ID") {
"query": " id
"query": " name
"query": " version
"query": " ...GlobalSlaReplyFragment
"query": " ... on ClusterSlaDomain {
"query": " cdmId
"query": " ...ClusterSlaDomainFragment
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " }
"query": " fragment GlobalSlaReplyFragment on GlobalSlaReply {
"query": " id
"query": " description
"query": " isRetentionLockedSla
"query": " retentionLockMode
"query": " baseFrequency {
"query": " duration
"query": " unit
"query": " __typename
"query": " }
"query": " ownerOrg {
"query": " id
"query": " name
"query": " __typename
"query": " }
"query": " backupWindows {
"query": " durationInHours
"query": " startTimeAttributes {
"query": " hour
"query": " minute
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " firstFullBackupWindows {
"query": " durationInHours
"query": " startTimeAttributes {
"query": " dayOfWeek {
"query": " day
"query": " __typename
"query": " }
"query": " hour
"query": " minute
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " snapshotSchedule {
"query": " ...SnapshotSchedulesForSlaDomainFragment
"query": " __typename
"query": " }
"query": " localRetentionLimit {
"query": " duration
"query": " unit
"query": " __typename
"query": " }
"query": " archivalSpecs {
"query": " threshold
"query": " thresholdUnit
"query": " frequencies
"query": " archivalLocationToClusterMapping {
"query": " cluster {
"query": " id
"query": " name
"query": " __typename
"query": " }
"query": " location {
"query": " id
"query": " name
"query": " targetType
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " storageSetting {
"query": " id
"query": " name
"query": " groupType
"query": " targetType
"query": " targets {
"query": " id
"query": " name
"query": " cluster {
"query": " id
"query": " name
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " archivalTieringSpec {
"query": " coldStorageClass
"query": " shouldTierExistingSnapshots
"query": " minAccessibleDurationInSeconds
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " replicationSpecsV2 {
"query": " ...DetailedReplicationSpecsV2ForSlaDomainFragment
"query": " __typename
"query": " }
"query": " objectTypes
"query": " isDefault
"query": " __typename
"query": " }
"query": "
"query": " fragment SnapshotSchedulesForSlaDomainFragment on SnapshotSchedule {
"query": " minute {
"query": " basicSchedule {
"query": " frequency
"query": " retention
"query": " retentionUnit
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " hourly {
"query": " basicSchedule {
"query": " frequency
"query": " retention
"query": " retentionUnit
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " daily {
"query": " basicSchedule {
"query": " frequency
"query": " retention
"query": " retentionUnit
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " weekly {
"query": " basicSchedule {
"query": " frequency
"query": " retention
"query": " retentionUnit
"query": " __typename
"query": " }
"query": " dayOfWeek
"query": " __typename
"query": " }
"query": " monthly {
"query": " basicSchedule {
"query": " frequency
"query": " retention
"query": " retentionUnit
"query": " __typename
"query": " }
"query": " dayOfMonth
"query": " __typename
"query": " }
"query": " quarterly {
"query": " basicSchedule {
"query": " frequency
"query": " retention
"query": " retentionUnit
"query": " __typename
"query": " }
"query": " dayOfQuarter
"query": " quarterStartMonth
"query": " __typename
"query": " }
"query": " yearly {
"query": " basicSchedule {
"query": " frequency
"query": " retention
"query": " retentionUnit
"query": " __typename
"query": " }
"query": " dayOfYear
"query": " yearStartMonth
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": "
"query": "fragment DetailedReplicationSpecsV2ForSlaDomainFragment on ReplicationSpecV2 {
"query": " replicationLocalRetentionDuration {
"query": " duration
"query": " unit
"query": " __typename
"query": " }
"query": " cascadingArchivalSpecs {
"query": " archivalTieringSpec {
"query": " coldStorageClass
"query": " shouldTierExistingSnapshots
"query": " minAccessibleDurationInSeconds
"query": " isInstantTieringEnabled
"query": " __typename
"query": " }
"query": " archivalLocation {
"query": " id
"query": " name
"query": " targetType
"query": " ... on RubrikManagedAwsTarget {
"query": " immutabilitySettings {
"query": " lockDurationDays
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " ... on RubrikManagedAzureTarget {
"query": " immutabilitySettings {
"query": " lockDurationDays
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " ... on CdmManagedAwsTarget {
"query": " immutabilitySettings {
"query": " lockDurationDays
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " ... on CdmManagedAzureTarget {
"query": " immutabilitySettings {
"query": " lockDurationDays
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " ... on RubrikManagedRcsTarget {
"query": " immutabilityPeriodDays
"query": " syncStatus
"query": " tier
"query": " __typename
"query": " }
"query": " ... on RubrikManagedS3CompatibleTarget {
"query": " immutabilitySetting {
"query": " bucketLockDurationDays
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " frequency
"query": " archivalThreshold {
"query": " duration
"query": " unit
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " retentionDuration {
"query": " duration
"query": " unit
"query": " __typename
"query": " }
"query": " cluster {
"query": " id
"query": " name
"query": " version
"query": " __typename
"query": " }
"query": " targetMapping {
"query": " id
"query": " name
"query": " targets {
"query": " id
"query": " name
"query": " cluster {
"query": " id
"query": " name
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " awsTarget {
"query": " accountId
"query": " accountName
"query": " region
"query": " __typename
"query": " }
"query": " azureTarget {
"query": " region
"query": " __typename
"query": " }
"query": " __typename
"query": "}
"query": "
"query": "fragment ClusterSlaDomainFragment on ClusterSlaDomain {
"query": " cluster {
"query": " id
"query": " name
"query": " version
"query": " __typename
"query": " }
"query": " ownerOrg {
"query": " id
"query": " name
"query": " __typename
"query": " }
"query": " baseFrequency {
"query": " duration
"query": " unit
"query": " __typename
"query": " }
"query": " backupWindows {
"query": " durationInHours
"query": " startTimeAttributes {
"query": " hour
"query": " minute
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " firstFullBackupWindows {
"query": " durationInHours
"query": " startTimeAttributes {
"query": " dayOfWeek {
"query": " day
"query": " __typename
"query": " }
"query": " hour
"query": " minute
"query": " __typename
"query": " }
"query": " __typename
"query": " }
"query": " snapshotSchedule {
"query": " ...SnapshotSchedulesForSlaDomainFragment
"query": " __typename
"query": " }
"query": " archivalSpec {
"query": " archivalLocationName
"query": " archivalLocationId
"query": " threshold
"query": " thresholdUnit
"query": " __typename
"query": " }
"query": " archivalSpecs {
"query": " archivalLocationName
"query": " archivalLocationId
"query": " threshold
"query": " archivalTieringSpec {
"query": " isInstantTieringEnabled
"query": " minAccessibleDurationInSeconds
"query": " coldStorageClass
"query": " shouldTierExistingSnapshots
"query": " __typename
"query": " }
"query": " thresholdUnit
"query": " frequencies
"query": " __typename
"query": " }
"query": " replicationSpecsV2 {
"query": " ...DetailedReplicationSpecsV2ForSlaDomainFragment
"query": " __typename
"query": " }
"query": " localRetentionLimit {
"query": " duration
"query": " unit
"query": " __typename
"query": " }
"query": " isRetentionLockedSla
"query": " retentionLockMode
"query": " __typename
"query": "}"
}'
curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $QUERY)"
Query SLA Domains
QUERY='{
"query": "query SLADomains {
"query": " slaDomains {
"query": " nodes {
"query": " name
"query": " id
"query": " version
"query": " }
"query": " }
"query": " __typename
"query": "}"
}'
curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $QUERY)"
Assign SLA Domain
MUTATION='{
"query": "mutation assignSla($objectIds: [UUID!]! $slaId: UUID) {
"query": " assignSla(input: {
"query": " objectIds: $objectIds
"query": " #slaDomainAssignType can be set to protectWithSlaId, noAssignment, doNotProtect
"query": " slaDomainAssignType: protectWithSlaId
"query": " slaOptionalId: $slaId
"query": " #shouldApplyToExistingSnapshots: false
"query": " #shouldApplyToNonPolicySnapshots: false
"query": " # Snapshot retention can be set to RETAIN_SNAPSHOTS, EXPIRE_IMMEDIATELY, KEEP_FOREVER, NOT_APPLICABLE
"query": " #existingSnapshotRetention: RETAIN_SNAPSHOTS
"query": " }) {
"query": " success
"query": " }
"query": "}",
"query": ""variables": {
"query": " "objectIds": ["00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000"],
"query": " "slaId": "00000000-0000-0000-0000-000000000000"
"query": "}
}'
curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $MUTATION)"