Skip to main content

Admin API

The GBox provides a custom admin GraphQL API (a.k.a.Purging cache API), allows you to invalidate cached data.

Admin Endpoints​

  • GraphQL playground available at path /admin
  • GraphQL API available at path /admin/graphql

Authentication​

Anyone can access the admin GraphQL API by default, but you can enable basic auth for it. To enable basic auth you must set value of GBOX_ENABLED_ADMIN_AUTH environment variable to true.

Default basic auth username's gbox and password's gbox too, you can change them via GBOX_ADMIN_USERNAME and GBOX_ADMIN_PASSWORD envs, the password must be base64 encrypted with bcrypt algorithm.

tip

You can use gbox hash-password cmd to generate the admin password.

Purging cached data​

Now you could try to use admin GraphQL api to purge cached data.

Purge via an operation name​

With this mutation, you can purge all cached results of the query with the operation name you provide.

type Mutation {
purgeOperation(name: String!): Boolean!
}

For example, to invalidate all results of queries named getUsers.

mutation {
purgeOperation(name: "getUsers")
}

Purge via specific type​

With this mutation, you can purge all cached results contain fields have specific type given.

type Mutation {
purgeType(type: String!): Boolean!
}

For example, to invalidate all results contain fields have User type.

mutation {
purgeType(type: "User")
}

Purge via query root field​

With this mutation, you can purge all cached results contain query root field given.

type Mutation {
purgeQueryRootField(field: String!): Boolean!
}

For example, to invalidate all results contain query root field users.

mutation {
purgeQueryRootField(field: "users")
}

Purge via type key​

If you want to purge an arbitrary type, limited by specific type key you can pass in as an argument.

type Mutation {
purgeTypeKey(
type: String!
field: String!
key: String!
): Boolean
}

For example to either purge all cached query results have User type identified by the key field email with value email@example.org run the following mutations:

mutation {
purgeTypeKey(type: "User", field: "email", key: "email@example.org")
}