Skip to main content

Explore the GraphQL interface

The GraphQL interface is accessible at http://localhost:8000/graphql

Introduction to GraphQL

GraphQL is the main interface to programmatically interact with Infrahub. With the GraphQL interface, it's possible to perform all the standard CRUD operations (Create, Read, Update, and Delete) on any objects in the database.

In GraphQL terminology, a query references any read operation and a mutation references any write operation that may change the value of the data. Infrahub support both query and mutation for all objects.

One of the main concepts behind GraphQL is the presence of a schema that defines what type of information we have in the database and how these objects are related to each other. Based on this schema, a user can execute queries that will return data.

Unlike a REST API, the format of the response is not fixed in GraphQL. It depends on the query, which ensures you get back only that you asked for.

Introduction to GraphQL videos

This short demo shows how to use the GraphQL query interface to explore and read data from Infrahub. It walks through how to open the built-in GraphQL interface and run your first queries.

This video demonstrates how to use filters and relationships in GraphQL to find specific information, such as IP addresses for a particular device, using the Infrahub query interface.

First query

The following query will return the name of all the devices in the database.

# Endpoint : http://localhost:8000/graphql/main
query {
InfraDevice {
edges {
node {
name {
value
}
}
}
}
}

Filter results

Query all interfaces and IP addresses for ord1-edge.

# Endpoint : http://127.0.0.1:8000/graphql/main
query DeviceIPAddresses {
InfraInterfaceL3(device__name__value:"ord1-edge1") {
edges {
node {
name { value }
description { value }
ip_addresses {
edges {
node {
address {
value
}
}
}
}
}
}
}
}