Events and Reporting APIs

Overview of GraphQL object types available to query the Rubrik Events and Reporting components.

ActivitySeriesConnection

ActivitySeriesConnection is an object type that represents the information associated with an activity or event series on Rubrik clusters.

The Cluster object uses the activitySeriesConnection query to identify the different activities associated with Rubrik clusters.

Use case: Retrieving event details

Use the Rubrik GraphQL API to query the number of backup failures on a specified Rubrik cluster.

GraphQL query

QUERY='{
  "query": "query ActivitySeriesConnection($clusterId: [UUID!]) {
  activitySeriesConnection(
    filters: {
      cluster: {id: $clusterId}
      lastActivityType: [Backup]
      lastActivityStatus: [Failure]
    }
  ) {
    count
  }
}
"
}'

curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $QUERY)"

Here the query uses the activitySeriesConnection query construct defined in the Cluster object type to request the details of activities related to the Rubrik cluster identified by $cluster_id.

type Cluster {
   activitySeriesConnection(
       first: Int,
       after: String,
       last: Int,
       before: String,
       sortBy: ActivitySeriesSortByEnum,
       filters: ActivitySeriesFilterInput
   ): ActivitySeriesConnection!
}

The filters argument of activitySeriesConnection specifies the requested constraints in the query. The filters argument is of type ActivitySeriesFilterInput, and has fields that can be used to filter the activities.

For example, the query uses the lastActivityType, lastActivityStatus, and the cluster fields to filter the backup failures that occurred on the Rubrik cluster and returns the number of failures as a value of count.

Response type

The ActivitySeriesConnection object models the response of the GraphQL query.

type ActivitySeriesConnection {
    edges: [ActivitySeriesEdge!]!
    nodes: [ActivitySeries!]!
    pageInfo: PageInfo!
    count: Int!
}

The definition of ActivitySeriesConnection allows the GraphQL query to request the count of events that fit the specified criteria.

Sample response

The response specifies the number of backup failures as a value of the field count.

{
  "data": {
    "activitySeriesConnection": {
      "count": 2,
      "__typename": "ActivitySeriesConnection"
    }
  },
  "loading": false,
  "networkStatus": 7
}

SnappableConnection

SnappableConnection is an object type that represents the different workload types managed by Rubrik clusters.

The Cluster object uses the snappableConnection query to retrieve the workload details necessary for generating reports.

Use case: Retrieving object details

Use the Rubrik GraphQL API to query the total number of protected vSphere virtual machines on a Rubrik cluster with a specified ID. The query also retrieves the total number of snapshots taken and the total number of snapshots missed for the protected vSphere virtual machines on the specified Rubrik cluster.

GraphQL query

QUERY='{
  "query": "query SnappableConnection($clusterId: [UUID!]) {
  snappableConnection(
    filter: {
      cluster: {id: $clusterId}
      objectType: VmwareVirtualMachine
      protectionStatus: Protected
    }
  ) {
    count
    aggregation {
      totalSnapshots
      missedSnapshots
    }
  }
}
"
}'

curl -X POST https://$account.my.rubrik.com/api/graphql \
--header "authorization: Bearer $access_token" \
--header "content-type: application/json" \
--data "$(echo $QUERY)"

Here the query uses the snappableConnection query construct defined in the Cluster object type to create a GraphQL query that requests the details of the protected virtual machines.

type Cluster {
    snappableConnection(
        first: Int,
        after: String,
        last: Int,
        before: String,
        filter: SnappableFilterInput
    ): SnappableConnection!
}

The filter argument of snappableConnection specifies the requested constraints in the query. The filter argument is of type SnappableFilterInput and has fields that can be used to filter the protected objects.

For example, the query uses the cluster, objectType, and protectionStatus fields to retrieve the number of protected objects of type VmwareVirtualMachine that exist on the Rubrik cluster identified by the $cluster_id and returns the number as a value of count.

Response type

The SnappableConnection object models the data in the response of the GraphQL query.

For example, the query requests the count of events that fit the specified criteria. The totalSnapshots and missedSnapshots are fields of SnappableAggregation type.

type SnappableConnection {
    edges: [SnappableEdge!]!
    nodes: [Snappable!]!
    pageInfo: PageInfo!
    count: Int!
    aggregation: SnappableAggregation!
}

Sample response

The response includes the requested information as shown below.

{
  "data": {
    "snappableConnection": {
      "count": 461,
      "aggregation": {
        "totalSnapshots": 6979,
        "missedSnapshots": 8123,
        "__typename": "SnappableAggregation"
      },
      "__typename": "SnappableConnection"
    }
  },
  "loading": false,
  "networkStatus": 7
}