Skip to content

mondoohq/mondoo-go

Folders and files

NameName
Last commit message
Last commit date
Jan 27, 2025
Oct 21, 2024
Nov 18, 2024
Aug 12, 2024
May 6, 2024
Oct 3, 2023
May 6, 2024
Oct 3, 2023
Jul 11, 2024
Oct 3, 2023
Oct 3, 2023
Mar 26, 2025
Jan 20, 2025
Jan 20, 2025
Mar 26, 2025
Oct 3, 2023
Oct 3, 2023

Repository files navigation

Mondoo Platform GraphQL API Client for Go

Status: It is currently in beta.

This is a Go client library for Mondoo Platform API using GraphQL. Mondoo is a security, risk and compliance platform that provides continuous insight into your infrastructure. This library enables you to interact programmatically with Mondoo Platform to perform various tasks such as querying assets, setup integrations, and fetching vulnerability and policy reports.

Features

  • Easy-to-use API to query data from Mondoo
  • Strongly typed GraphQL queries and mutations
  • Support for GraphQL subscriptions
  • Token-based authentication

Requirements

Our libraries are compatible with at least the three most recent, major Go releases. They are currently compatible with:

  • Go 1.21
  • Go 1.20
  • Go 1.19

In addition, a Mondoo account with API access is required to use this library.

Installation

To install the package, run:

go get go.mondoo.com/mondoo-go

Quick Start

Here is a quick example to fetch the details of an asset:

package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"go.mondoo.com/mondoo-go"
	"go.mondoo.com/mondoo-go/option"
)

func main() {
	// Initialize the client
	client, err := mondoogql.NewClient(option.UseUSRegion(), option.WithAPIToken(os.Getenv("MONDOO_API_TOKEN")))
	if err != nil {
		log.Fatal(err)
	}

	// Fetch asset details
	assetMrn := "//assets.api.mondoo.app/spaces/dreamy-ellis-859675/assets/2TwUNCJcoPG5vHfUJaMf2gRgIaY"
	var q struct {
		Report struct {
			AssetReport struct {
				Asset struct {
					Name string
				}
			} `graphql:"... on AssetReport"`
		} `graphql:"assetReport(input: { assetMrn: $assetMrn} )"`
	}
	variables := map[string]interface{}{
		"assetMrn": mondoogql.ID(assetMrn),
	}
	err = client.Query(context.Background(), &q, variables)
	if err != nil {
		log.Fatalln(err)
	}
	fmt.Println(q.Report.AssetReport.Asset.Name)
}

Test

Run all tests:

make test

For any requests, bug or comments, please open an issue or submit a pull request.

Development

When developing new APIs locally, you can overwrite the API endpoint. Specify MONDOO_API_ENDPOINT environment variable for the generate command, e.g.,:

MONDOO_API_ENDPOINT=http://127.0.0.1:8989 make generate

Kudos

This implementation is heavily inspired by the GitHub GraphQL Go Client.

About

Go library for the Mondoo API.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published