Sudograph directives

Sudograph provides a number of directives for use within your GraphQL schema. Directives can be applied to object types or fields within your schema. The following are available for use:


  • name: relation
  • arguments: name
  • application: field
  • description: Indicates a two-sided relationship, where both sides of the relationship need to be updated during relation mutations. The name argument is an arbitrary string, but must be the same on both fields representing each side of the relationship.
type Foot {
    id: ID!
    shoe: Shoe @relation(name: "Foot:shoe::Shoe:foot")

type Shoe {
    id: ID!
    foot: Foot @relation(name: "Foot:shoe::Shoe:foot")


  • name: canister
  • arguments: id
  • application: field
  • description: Indicates the canister with the implementation of the resolver function. The id argument is used to do a cross-canister function call under-the-hood.
type Query {
    customGet(id: ID!): Message @canister(id: "ryjl3-tyaaa-aaaaa-aaaba-cai")

type Mutation {
    customSet(id: ID!, text: String): Boolean! @canister(id: "ryjl3-tyaaa-aaaaa-aaaba-cai")

type Message {
    id: ID!
    text: String!

Possible future relations

Just let your imagination run wild with what some of these could do:

  • @ignore
  • @auth
  • @token
  • @subnet