type Droid {
id: String
name: String
appearsIn: [Episode]
primaryFunction: String
}
enum Episode { NEWHOPE, EMPIRE, JEDI }
interface Character {
id: String
name: String
friends: [Character]
appearsIn: [Episode]
}
type Human implements Character {
id: String
name: String
friends: [Character]
appearsIn: [Episode]
homePlanet: String
}
type Droid implements Character {
id: String
name: String
friends: [Character]
appearsIn: [Episode]
primaryFunction: String
}
union Error = NotFoundError | AccessError | ValidationError
scalar DateTime
type Droid {
id: String
createdOn: DateTime!
}
type Query {
hero(episode: Episode): Character
human(id: String!): Human
droid(id: String!): Droid
}
type Mutation {
destroyDroid(id: String!): Droid
destroyHuman(id: String!): Human
}
type Example {
oldId: Int!
@deprecated(
"reason": "Renamed to use standard naming convention and type for IDs"
"replacement": "id"
"deprecatedDate": "2020–10–03T10:45:49–08:00"
"expirationDate": "2021–01–01T00:00:00–08:00"
)
}
type CreateDroidInput {
name: String!
appearsIn: [Episode]
}
type DroidInputError
{
code: Int!
message: String!
}
type DroidDuplicatedError
{
code: Int!
message: String!
}
union DroidCreationError = DroidInputError | DroidDuplicatedError | ...
type DroidPayload {
droid: Droid
error: DroidCreationError
}
type Mutation {
createDroid(input: DroidInput!): DroidPayload
}
type PaginatedList {
nextPage: String
previousPage: String
}
type Query {
getItemsByName(name: !String, next: !Int = 10, cursor: String):
}
type Mutation {
createDroid(name: String!, appearsIn: [Episode], ...): DroidPayload
}
{
user(id: "kowalski") {
id
name
friendsConnection(first: 3) {
edges {
cursor
node {
id
name
}
}
}
}
}