type Query {
  getScalar(id: ID): String
  getScalarByObject(args: OuterInput): String
  anotherScalar: Int
  object1: FirstObjectType
  interfaceInstance1: MyInterface
  someUnion: UnionOfObjectTypes
  someObjects: [FirstObjectType]
  intList: [Int]
  getObjectsByObject(args: OuterInput): [SecondObjectType]
}

type Mutation {
  doSomething: Int
}

type FirstObjectType {
  field1: Int
  innerList: [SecondObjectType]
}

interface MyInterface {
  field2: String
}

type SecondObjectType implements MyInterface {
  field1: Int
  field2: String
}

union UnionOfObjectTypes = FirstObjectType | SecondObjectType

input InnerInput {
  id: ID
}

input OuterInput {
  inner: InnerInput
  inner2: InnerInput
  listOfInner: [InnerInput!]
}
