Skip to content

GraphQL Schema Paths

GraphQL Schema Paths provide a way to reference specific elements within your GraphQL schema. Polen uses this syntax for targeting types and fields in features like schema augmentations and markdown references.

Introduction

GraphQL Schema Paths allow you to reference types and fields in your schema hierarchy. This enables features like schema augmentations and interactive documentation links.

Path Syntax

Types

Reference a GraphQL type directly:

User
Post
Query

Fields

Reference a field on a type using dot notation:

User.email
Query.users
Mutation.createPost

Arguments

Reference a field argument using the $ prefix:

Query.user$id
Query.users$filter
Mutation.createPost$input

Resolved Types

Reference the return type of a field using the # suffix:

Query.users#         // Resolves to User (from [User!]!)
User.posts#          // Resolves to Post (from [Post!])
Mutation.createPost# // Resolves to the Post type

Usage in Polen

Schema Augmentations

Use paths to target specific schema elements for documentation enhancement:

ts
export default Polen.defineConfig({
  schema: {
    augmentations: [
      {
        on: 'User', // Target a type
        placement: 'after',
        content: 'Additional information about users',
      },
      {
        on: 'Query.users', // Target a field
        placement: 'before',
        content: 'This query supports pagination',
      },
      {
        on: 'Query.users$filter', // Target an argument
        placement: 'after',
        content:
          'See the [filtering guide](/guides/filtering) for available options',
      },
    ],
  },
})

Markdown References

Create interactive links to schema elements in your markdown documentation using the gql: prefix:

markdown
The `gql:User` type represents a system user.

To fetch users, use the `gql:Query.users` field with an optional
`gql:Query.users$filter` argument.

The mutation `gql:Mutation.createPost$input` accepts user input and
returns a `gql:Mutation.createPost#` type.

These references are automatically converted to interactive links that navigate to the corresponding schema documentation.

Path Resolution

Polen validates paths at build time to ensure they reference valid schema elements. If a path cannot be resolved, you'll receive a helpful diagnostic message indicating the issue.

Versioned Schemas

For versioned schemas, paths are resolved against each version. Polen will:

  1. Check the latest version first
  2. Fall back to earlier versions if needed
  3. Report which version contains the referenced element

Examples

Type References

User                 // The User type
Post                 // The Post type
Query                // The Query root type

Field References

User.email           // Email field on User
Query.users          // Users query field
Mutation.createPost  // Create post mutation

Argument References

Query.users$filter   // Filter argument on users query
Query.user$id        // ID argument on user query
Mutation.createPost$input  // Input argument on createPost

Resolved Type References

Query.users#         // Return type of users query
User.posts#          // Return type of posts field

Error Messages

When Polen encounters an invalid path, it provides diagnostic warnings during build:

Cannot resolve GraphQL path: User.invalidField

This helps you identify and fix path issues during development.

Best Practices

  1. Start Simple: Begin with type and field references before using advanced syntax
  2. Validate Early: Run build checks to catch invalid paths
  3. Use Consistent Naming: Follow your schema's naming conventions in paths