Object types

Object types are the fundamentals of any GraphQL schema, they are used to define the kind of objects that exist in a schema. Object types are created by defining a name and a list of fields, here’s an example object type defined using the GraphQL schema language:

type Character {
name: String!
age: Int!
}

A note on Query, Mutation and Subscription

While reading about GraphQL you might have encountered 3 special object types: Query , Mutation and Subscription . They are defined as standard object types, with the difference that they are also used as entry points for your schema (also referred as root types).

For a walk-through on how to define schemas, read the schema basics .

Defining object types

In Strawberry, you can define object types by using the @strawberry.type decorator, like this:

import strawberry
@strawberry.type
class Character:
name: str
age: int
type Character {
name: String!
age: int!
}

You can also refer to other types, like this:

import strawberry
@strawberry.type
class Character:
name: str
age: int
@strawberry.type
class Book:
title: str
main_character: Character
type Character {
name: String!
age: Int!
}
type Book {
title: String!
mainCharacter: Character!
}

API

@strawberry.type(name: str = None, description: str = None)

Creates an object type from a class definition.

name : if set this will be the GraphQL name, otherwise the GraphQL will be generated by camel-casing the name of the class.

description : this is the GraphQL description that will be returned when introspecting the schema or when navigating the schema using GraphiQL.