schema {
    query: Query
}

extend schema @exampleOnSchemaDirective(name: "foo") {
    subscription: Subscription
}

directive @exampleOnSchemaDirective(name: String!) on SCHEMA

type Query {
    dogs: [Dog!]!
}

type Subscription {
    dogEvents: [Dog!]!
}

type Dog {
    name: String!
}

type Person @favorite(name: "sushi") @favorite(name: "tempura") {
    name: String!
}

directive @favorite(name: String!) repeatable on OBJECT

extend type Dog {
    owner: Person! @permission(permission: "admin")
}

directive @permission(permission: String!) on FIELD_DEFINITION
