diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,28 @@
 # Changelog
 
+## 0.16.0 - 05.11.2020
+
+### Breaking Changes
+
+- signature changes:
+
+  - `render`:
+    `a -> Text`
+    to `a -> ByteString`
+  - parseTypeSystemDefinition :
+    `Text -> Eventless (Schema VALID)`
+    to `ByteString -> Eventless (Schema VALID)`
+
+  - parseTypeDefinitions:
+    `Text -> Eventless [TypeDefinition ANY CONST]`
+    to `ByteString -> Eventless [TypeDefinition ANY CONST]`
+
+### new features
+
+### Minor Changes
+
+- parser performance optimization
+
 ## 0.15.1 - 12.09.2020
 
 relaxed upper boundary of `megaparsec` up to 10.0.0
diff --git a/morpheus-graphql-core.cabal b/morpheus-graphql-core.cabal
--- a/morpheus-graphql-core.cabal
+++ b/morpheus-graphql-core.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: ce18cb316044bb79be32544a1626da5772a8ed0cc0d17214179d77c1d9c6f8f4
+-- hash: 0e4275c173b38bbd418ec7b8e986f8b9542760b3cb6df2c53d5976715576a5f4
 
 name:           morpheus-graphql-core
-version:        0.15.1
+version:        0.16.0
 synopsis:       Morpheus GraphQL Core
 description:    Build GraphQL APIs with your favourite functional language!
 category:       web, graphql
@@ -44,6 +44,37 @@
     test/merge/schema/simple-query/api/ext.gql
     test/merge/schema/simple-query/expected/ok.gql
     test/merge/schema/simple-query/request/query/query.gql
+    test/rendering/simple/directive/query.gql
+    test/rendering/simple/directive/rendering.gql
+    test/rendering/simple/fragment/query.gql
+    test/rendering/simple/fragment/rendering.gql
+    test/rendering/simple/mutation/query.gql
+    test/rendering/simple/mutation/rendering.gql
+    test/rendering/simple/nested/query.gql
+    test/rendering/simple/nested/rendering.gql
+    test/rendering/simple/query/query.gql
+    test/rendering/simple/query/rendering.gql
+    test/rendering/simple/schema.gql
+    test/rendering/simple/simple/query.gql
+    test/rendering/simple/simple/rendering.gql
+    test/rendering/simple/subscription/query.gql
+    test/rendering/simple/subscription/rendering.gql
+    test/rendering/union/interface/query.gql
+    test/rendering/union/interface/rendering.gql
+    test/rendering/union/schema.gql
+    test/rendering/union/union/query.gql
+    test/rendering/union/union/rendering.gql
+    test/rendering/variable/enum/query.gql
+    test/rendering/variable/enum/rendering.gql
+    test/rendering/variable/include-exclude/query.gql
+    test/rendering/variable/include-exclude/rendering.gql
+    test/rendering/variable/input/query.gql
+    test/rendering/variable/input/rendering.gql
+    test/rendering/variable/list/query.gql
+    test/rendering/variable/list/rendering.gql
+    test/rendering/variable/schema.gql
+    test/rendering/variable/simple/query.gql
+    test/rendering/variable/simple/rendering.gql
     test/schema/parsing/directive/ok/simple/schema.gql
     test/schema/parsing/directive/ok/sophisticated/schema.gql
     test/schema/parsing/schema-definition/fail/dupplicate-field/query-mutation-subscription/schema.gql
@@ -73,6 +104,7 @@
     test/schema/validation/interface/field-args/ok/schema.gql
     test/schema/validation/interface/field-type/fail/schema.gql
     test/schema/validation/interface/field-type/ok/schema.gql
+    test/schema/validation/performance-check/schema.gql
     test/schema/validation/schema-definition/fail/non-object-kind/from-schema/schema.gql
     test/schema/validation/schema-definition/fail/non-object-kind/without-schema/schema.gql
     "test/schema/validation/schema-definition/fail/required query/empty/schema.gql"
@@ -100,6 +132,14 @@
     test/merge/schema/simple-query/api/app.json
     test/merge/schema/simple-query/api/ext.json
     test/merge/schema/simple-query/request/query/response.json
+    test/rendering/simple/fragment/variables.json
+    test/rendering/union/interface/variables.json
+    test/rendering/union/union/variables.json
+    test/rendering/variable/enum/variables.json
+    test/rendering/variable/include-exclude/variables.json
+    test/rendering/variable/input/variables.json
+    test/rendering/variable/list/variables.json
+    test/rendering/variable/simple/variables.json
     test/schema/parsing/directive/ok/simple/response.json
     test/schema/parsing/directive/ok/sophisticated/response.json
     test/schema/parsing/schema-definition/fail/dupplicate-field/query-mutation-subscription/response.json
@@ -129,6 +169,7 @@
     test/schema/validation/interface/field-args/ok/response.json
     test/schema/validation/interface/field-type/fail/response.json
     test/schema/validation/interface/field-type/ok/response.json
+    test/schema/validation/performance-check/response.json
     test/schema/validation/schema-definition/fail/non-object-kind/from-schema/response.json
     test/schema/validation/schema-definition/fail/non-object-kind/without-schema/response.json
     "test/schema/validation/schema-definition/fail/required query/empty/response.json"
@@ -161,11 +202,18 @@
       Data.Morpheus.Error.Input
       Data.Morpheus.Error.NameCollision
       Data.Morpheus.Error.Operation
-      Data.Morpheus.Error.Schema
       Data.Morpheus.Error.Selection
       Data.Morpheus.Error.Utils
       Data.Morpheus.Error.Variable
       Data.Morpheus.Error.Warning
+      Data.Morpheus.Ext.Elems
+      Data.Morpheus.Ext.Failure
+      Data.Morpheus.Ext.KeyOf
+      Data.Morpheus.Ext.Map
+      Data.Morpheus.Ext.MergeSet
+      Data.Morpheus.Ext.OrdMap
+      Data.Morpheus.Ext.SafeHashMap
+      Data.Morpheus.Ext.SemigroupM
       Data.Morpheus.Internal.Graph
       Data.Morpheus.Parser
       Data.Morpheus.Parsing.Document.TypeSystem
@@ -186,9 +234,6 @@
       Data.Morpheus.Types.Internal.AST.Base
       Data.Morpheus.Types.Internal.AST.DirectiveLocation
       Data.Morpheus.Types.Internal.AST.Fields
-      Data.Morpheus.Types.Internal.AST.MergeSet
-      Data.Morpheus.Types.Internal.AST.OrdMap
-      Data.Morpheus.Types.Internal.AST.SafeHashMap
       Data.Morpheus.Types.Internal.AST.Selection
       Data.Morpheus.Types.Internal.AST.Stage
       Data.Morpheus.Types.Internal.AST.TH
@@ -227,6 +272,7 @@
     , hashable >=1.0.0
     , megaparsec >=7.0.0 && <10.0.0
     , mtl >=2.0 && <=3.0
+    , relude >=0.3.0
     , scientific >=0.3.6.2 && <0.4
     , template-haskell >=2.0 && <=3.0
     , text >=1.2.3.0 && <1.3
@@ -242,6 +288,7 @@
   other-modules:
       Utils.Api
       Utils.MergeSchema
+      Utils.Rendering
       Utils.Schema
       Utils.Utils
       Paths_morpheus_graphql_core
@@ -257,6 +304,7 @@
     , megaparsec >=7.0.0 && <10.0.0
     , morpheus-graphql-core
     , mtl >=2.0 && <=3.0
+    , relude >=0.3.0
     , scientific >=0.3.6.2 && <0.4
     , tasty
     , tasty-hunit
diff --git a/src/Data/Morpheus/Core.hs b/src/Data/Morpheus/Core.hs
--- a/src/Data/Morpheus/Core.hs
+++ b/src/Data/Morpheus/Core.hs
@@ -5,6 +5,7 @@
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Core
   ( parseDSL,
@@ -16,7 +17,6 @@
     parseRequestWith,
     validateSchema,
     parseRequest,
-    RenderGQL (..),
     SelectionTree (..),
     Config (..),
     VALIDATION_MODE (..),
@@ -28,15 +28,15 @@
     withDebugger,
     mkApp,
     runAppStream,
+    render,
+    RenderGQL,
   )
 where
 
--- MORPHEUS
-import Control.Monad ((>=>))
 import Data.ByteString.Lazy.Char8
   ( ByteString,
   )
-import Data.Morpheus.Internal.Utils
+import Data.Morpheus.Ext.SemigroupM
   ( (<:>),
   )
 import Data.Morpheus.Parser
@@ -45,9 +45,8 @@
     parseTypeDefinitions,
     parseTypeSystemDefinition,
   )
-import Data.Morpheus.Rendering.RenderGQL
-  ( RenderGQL (..),
-  )
+import Data.Morpheus.Rendering.RenderGQL (RenderGQL)
+import qualified Data.Morpheus.Rendering.RenderGQL as R
 import Data.Morpheus.Schema.Schema (internalSchema)
 import Data.Morpheus.Types.App
   ( App (..),
@@ -70,22 +69,23 @@
 import Data.Morpheus.Types.Internal.Resolving
   ( Eventless,
     resultOr,
+    sortErrors,
   )
 import Data.Morpheus.Types.SelectionTree (SelectionTree (..))
 import Data.Morpheus.Validation.Document.Validation (ValidateSchema (..))
 import Data.Morpheus.Validation.Query.Validation
   ( validateRequest,
   )
-import qualified Data.Text.Lazy as LT
-  ( toStrict,
-  )
-import Data.Text.Lazy.Encoding (decodeUtf8)
+import Relude hiding (ByteString)
 
+render :: RenderGQL a => a -> ByteString
+render = R.renderGQL
+
 parseDSL :: ByteString -> Either String (Schema VALID)
 parseDSL = resultOr (Left . show) pure . parseGQLDocument
 
 parseGQLDocument :: ByteString -> Eventless (Schema VALID)
-parseGQLDocument = parseTypeSystemDefinition . LT.toStrict . decodeUtf8
+parseGQLDocument = sortErrors . parseTypeSystemDefinition
 
 parseFullGQLDocument :: ByteString -> Eventless (Schema VALID)
 parseFullGQLDocument = parseGQLDocument >=> (internalSchema <:>)
diff --git a/src/Data/Morpheus/Error.hs b/src/Data/Morpheus/Error.hs
--- a/src/Data/Morpheus/Error.hs
+++ b/src/Data/Morpheus/Error.hs
@@ -1,14 +1,14 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
 module Data.Morpheus.Error
   ( errorMessage,
     globalErrorMessage,
     gqlWarnings,
     renderGQLErrors,
     deprecatedField,
-    nameCollisionError,
   )
 where
 
-import Data.Morpheus.Error.Schema
 import Data.Morpheus.Error.Utils
 import Data.Morpheus.Error.Warning
   ( deprecatedField,
diff --git a/src/Data/Morpheus/Error/Fragment.hs b/src/Data/Morpheus/Error/Fragment.hs
--- a/src/Data/Morpheus/Error/Fragment.hs
+++ b/src/Data/Morpheus/Error/Fragment.hs
@@ -8,8 +8,6 @@
 where
 
 -- MORPHEUS
-
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Error.Utils (validationErrorMessage)
 import Data.Morpheus.Types.Internal.AST.Base
   ( FieldName,
@@ -20,8 +18,7 @@
     msg,
     msgSepBy,
   )
-import Data.Semigroup ((<>))
-import Prelude (($), fmap, head)
+import Relude
 
 {-
   FRAGMENT:
@@ -35,14 +32,14 @@
     {...H} -> "Unknown fragment \"H\"."
 -}
 
-cannotSpreadWithinItself :: [Ref] -> ValidationError
-cannotSpreadWithinItself fragments = ValidationError text (fmap refPosition fragments)
+cannotSpreadWithinItself :: NonEmpty Ref -> ValidationError
+cannotSpreadWithinItself (fr :| frs) = ValidationError text (fmap refPosition (fr : frs))
   where
     text =
       "Cannot spread fragment "
-        <> msg (refName $ head fragments)
+        <> msg (refName fr)
         <> " within itself via "
-        <> msgSepBy ", " (fmap refName fragments)
+        <> msgSepBy ", " (fmap refName (fr : frs))
         <> "."
 
 -- Fragment type mismatch -> "Fragment \"H\" cannot be spread here as objects of type \"Hobby\" can never be of type \"Experience\"."
diff --git a/src/Data/Morpheus/Error/NameCollision.hs b/src/Data/Morpheus/Error/NameCollision.hs
--- a/src/Data/Morpheus/Error/NameCollision.hs
+++ b/src/Data/Morpheus/Error/NameCollision.hs
@@ -5,9 +5,14 @@
   )
 where
 
+import Data.Morpheus.Ext.Map (Indexed (..))
 import Data.Morpheus.Types.Internal.AST.Base
   ( ValidationError,
   )
+import Relude
 
 class NameCollision a where
   nameCollision :: a -> ValidationError
+
+instance NameCollision a => NameCollision (Indexed k a) where
+  nameCollision = nameCollision . indexedValue
diff --git a/src/Data/Morpheus/Error/Schema.hs b/src/Data/Morpheus/Error/Schema.hs
deleted file mode 100644
--- a/src/Data/Morpheus/Error/Schema.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Data.Morpheus.Error.Schema
-  ( nameCollisionError,
-  )
-where
-
-import Data.Morpheus.Types.Internal.AST.Base
-  ( TypeName,
-    ValidationError,
-    msgValidation,
-  )
-import Data.Semigroup ((<>))
-import Prelude (($))
-
-schemaValidationError :: ValidationError -> ValidationError
-schemaValidationError error = "Schema Validation Error, " <> error
-
-nameCollisionError :: TypeName -> ValidationError
-nameCollisionError typeName =
-  schemaValidationError $
-    "Name collision: "
-      <> msgValidation typeName
-      <> " is used for different dataTypes in two separate modules"
diff --git a/src/Data/Morpheus/Error/Utils.hs b/src/Data/Morpheus/Error/Utils.hs
--- a/src/Data/Morpheus/Error/Utils.hs
+++ b/src/Data/Morpheus/Error/Utils.hs
@@ -14,7 +14,6 @@
   ( ByteString,
     pack,
   )
-import Data.Maybe (Maybe, maybeToList)
 import Data.Morpheus.Types.Internal.AST.Base
   ( GQLError (..),
     GQLErrors,
@@ -22,8 +21,7 @@
     Position (..),
     ValidationError (..),
   )
-import Data.Semigroup ((<>))
-import Prelude ((.), String)
+import Relude hiding (ByteString)
 
 validationErrorMessage :: Maybe Position -> Message -> ValidationError
 validationErrorMessage pos message = ValidationError message (maybeToList pos)
diff --git a/src/Data/Morpheus/Error/Variable.hs b/src/Data/Morpheus/Error/Variable.hs
--- a/src/Data/Morpheus/Error/Variable.hs
+++ b/src/Data/Morpheus/Error/Variable.hs
@@ -16,8 +16,7 @@
     Variable (..),
     msg,
   )
-import Data.Semigroup ((<>))
-import Prelude (($), Maybe (..))
+import Relude
 
 -- query M ( $v : String ) { a(p:$v) } -> "Variable \"$v\" of type \"String\" used in position expecting type \"LANGUAGE\"."
 incompatibleVariableType :: Ref -> Variable s -> TypeRef -> ValidationError
diff --git a/src/Data/Morpheus/Error/Warning.hs b/src/Data/Morpheus/Error/Warning.hs
--- a/src/Data/Morpheus/Error/Warning.hs
+++ b/src/Data/Morpheus/Error/Warning.hs
@@ -12,10 +12,6 @@
 
 import Data.Aeson (encode)
 import Data.ByteString.Lazy.Char8 (unpack)
-import Data.Foldable (traverse_)
--- MORPHEUS
-
-import Data.Maybe (Maybe (..), maybe)
 import Data.Morpheus.Error.Utils (errorMessage)
 import Data.Morpheus.Types.Internal.AST.Base
   ( Description,
@@ -24,17 +20,8 @@
     Ref (..),
     msg,
   )
-import Data.Semigroup ((<>))
-import Language.Haskell.TH
-  ( Q,
-    reportWarning,
-  )
-import Prelude
-  ( ($),
-    (.),
-    String,
-    pure,
-  )
+import Language.Haskell.TH (Q, reportWarning)
+import Relude
 
 renderGQLErrors :: GQLErrors -> String
 renderGQLErrors = unpack . encode
diff --git a/src/Data/Morpheus/Ext/Elems.hs b/src/Data/Morpheus/Ext/Elems.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/Elems.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.Elems
+  ( Elems (..),
+    size,
+  )
+where
+
+import qualified Data.HashMap.Lazy as HM
+import Instances.TH.Lift ()
+import Relude
+
+class Elems a coll | coll -> a where
+  elems :: coll -> [a]
+
+instance Elems a (HashMap k a) where
+  elems = HM.elems
+
+instance Elems a [a] where
+  elems = id
+
+size :: Elems a coll => coll -> Int
+size = length . elems
diff --git a/src/Data/Morpheus/Ext/Failure.hs b/src/Data/Morpheus/Ext/Failure.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/Failure.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.Failure
+  ( Failure (..),
+  )
+where
+
+import Relude
+
+-- Failure: for custom Morpheus GrapHQL errors
+class Applicative f => Failure error (f :: * -> *) where
+  failure :: error -> f v
+
+instance Failure error (Either error) where
+  failure = Left
+
+instance (Monad m, Failure errors m) => Failure errors (ReaderT ctx m) where
+  failure = lift . failure
diff --git a/src/Data/Morpheus/Ext/KeyOf.hs b/src/Data/Morpheus/Ext/KeyOf.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/KeyOf.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.KeyOf
+  ( KeyOf (..),
+    toPair,
+  )
+where
+
+import Data.Morpheus.Ext.Map
+  ( Indexed (..),
+  )
+import Data.Morpheus.Types.Internal.AST.Base
+  ( FieldName (..),
+    Ref (..),
+    TypeName (..),
+    TypeNameRef (..),
+  )
+import Relude
+
+class (Eq k, Hashable k) => KeyOf k a | a -> k where
+  keyOf :: a -> k
+
+instance (Eq k, Hashable k) => KeyOf k (k, a) where
+  keyOf = fst
+
+instance KeyOf FieldName Ref where
+  keyOf = refName
+
+instance KeyOf TypeName TypeNameRef where
+  keyOf = typeNameRef
+
+instance (Eq k, Hashable k) => KeyOf k (Indexed k a) where
+  keyOf = indexedKey
+
+toPair :: KeyOf k a => a -> (k, a)
+toPair x = (keyOf x, x)
diff --git a/src/Data/Morpheus/Ext/Map.hs b/src/Data/Morpheus/Ext/Map.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/Map.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveLift #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.Map
+  ( Indexed (..),
+    indexed,
+    fromListT,
+    resolveWith,
+    runResolutionT,
+    ResolutionT,
+  )
+where
+
+import Data.Foldable (foldl)
+import qualified Data.HashMap.Lazy as HM
+import Language.Haskell.TH.Syntax (Lift)
+import Relude
+
+sortedEntries :: [Indexed k a] -> [(k, a)]
+sortedEntries = fmap f . sortOn index
+  where
+    f a = (indexedKey a, indexedValue a)
+
+fromListT :: (Monad m, Eq k, Hashable k) => [(k, a)] -> ResolutionT k a coll m coll
+fromListT = traverse resolveDuplicatesM . fromListDuplicates >=> fromNoDuplicatesM
+
+resolveWith ::
+  Monad m =>
+  (a -> a -> m a) ->
+  NonEmpty a ->
+  m a
+resolveWith f (x :| xs) = foldlM f x xs
+
+data Indexed k a = Indexed
+  { index :: Int,
+    indexedKey :: k,
+    indexedValue :: a
+  }
+  deriving
+    ( Show,
+      Eq,
+      Functor,
+      Traversable,
+      Foldable,
+      Lift
+    )
+
+fromListDuplicates :: (Eq k, Hashable k) => [(k, a)] -> [(k, NonEmpty a)]
+fromListDuplicates xs =
+  sortedEntries
+    $ HM.elems
+    $ clusterDuplicates (indexed xs) HM.empty
+
+indexed :: [(k, a)] -> [Indexed k a]
+indexed = __indexed 0
+  where
+    __indexed :: Int -> [(k, a)] -> [Indexed k a]
+    __indexed _ [] = []
+    __indexed i ((k, x) : xs) = Indexed i k x : __indexed (i + 1) xs
+
+resolveDuplicatesM :: Monad m => (k, NonEmpty a) -> ResolutionT k a coll m (k, a)
+resolveDuplicatesM (k, xs) = asks resolveDuplicates >>= lift . fmap (k,) . (xs &)
+
+fromNoDuplicatesM :: Monad m => [(k, a)] -> ResolutionT k a coll m coll
+fromNoDuplicatesM xs = asks ((xs &) . fromNoDuplicates)
+
+insertWithList :: (Eq k, Hashable k) => Indexed k (NonEmpty a) -> HashMap k (Indexed k (NonEmpty a)) -> HashMap k (Indexed k (NonEmpty a))
+insertWithList (Indexed i1 key value) = HM.alter (Just . updater) key
+  where
+    updater Nothing = Indexed i1 key value
+    updater (Just (Indexed i2 _ x)) = Indexed i2 key (x <> value)
+
+clusterDuplicates :: (Eq k, Hashable k) => [Indexed k a] -> HashMap k (Indexed k (NonEmpty a)) -> HashMap k (Indexed k (NonEmpty a))
+clusterDuplicates [] = id
+clusterDuplicates xs = flip (foldl (\coll x -> insertWithList (fmap (:| []) x) coll)) xs
+
+data Resolution k a coll m = Resolution
+  { resolveDuplicates :: NonEmpty a -> m a,
+    fromNoDuplicates :: [(k, a)] -> coll
+  }
+
+runResolutionT ::
+  ResolutionT k a coll m b ->
+  ([(k, a)] -> coll) ->
+  (NonEmpty a -> m a) ->
+  m b
+runResolutionT (ResolutionT x) fromNoDuplicates resolveDuplicates = runReaderT x Resolution {..}
+
+newtype ResolutionT k a coll m x = ResolutionT
+  { _runResolutionT :: ReaderT (Resolution k a coll m) m x
+  }
+  deriving
+    ( Functor,
+      Monad,
+      Applicative,
+      MonadReader (Resolution k a coll m)
+    )
+
+instance MonadTrans (ResolutionT k a coll) where
+  lift = ResolutionT . lift
diff --git a/src/Data/Morpheus/Ext/MergeSet.hs b/src/Data/Morpheus/Ext/MergeSet.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/MergeSet.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DeriveLift #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.MergeSet
+  ( MergeSet,
+  )
+where
+
+import Data.Morpheus.Ext.Elems (Elems (..))
+import Data.Morpheus.Ext.Map
+  ( fromListT,
+    resolveWith,
+    runResolutionT,
+  )
+import Data.Morpheus.Ext.SemigroupM
+  ( SemigroupM (..),
+  )
+import Data.Morpheus.Internal.Utils
+  ( Collection (..),
+    Failure (..),
+    FromElems (..),
+    KeyOf (..),
+    Selectable (..),
+    toPair,
+  )
+import Data.Morpheus.Types.Internal.AST.Base
+  ( Ref,
+    ValidationErrors,
+  )
+import Data.Morpheus.Types.Internal.AST.Stage
+  ( RAW,
+    Stage,
+    VALID,
+  )
+import Language.Haskell.TH.Syntax (Lift (..))
+import Relude
+
+-- set with mergeable components
+newtype MergeSet (dups :: Stage) k a = MergeSet
+  { unpack :: [a]
+  }
+  deriving
+    ( Show,
+      Eq,
+      Functor,
+      Foldable,
+      Lift,
+      Traversable,
+      Collection a,
+      Elems a
+    )
+
+instance (KeyOf k a) => Selectable k a (MergeSet opt k a) where
+  selectOr fb f key (MergeSet ls) = maybe fb f (find ((key ==) . keyOf) ls)
+
+instance
+  ( KeyOf k a,
+    SemigroupM m a,
+    Monad m,
+    Failure ValidationErrors m,
+    Eq a
+  ) =>
+  SemigroupM m (MergeSet VALID k a)
+  where
+  mergeM path (MergeSet x) (MergeSet y) = resolveMergable path (x <> y)
+
+resolveMergable ::
+  ( KeyOf k a,
+    Monad m,
+    Eq a,
+    SemigroupM m a,
+    Failure ValidationErrors m
+  ) =>
+  [Ref] ->
+  [a] ->
+  m (MergeSet dups k a)
+resolveMergable path xs = runResolutionT (fromListT (toPair <$> xs)) (MergeSet . fmap snd) (resolveWith (resolveConflict path))
+
+instance
+  ( KeyOf k a,
+    SemigroupM m a,
+    Monad m,
+    Failure ValidationErrors m,
+    Eq a
+  ) =>
+  FromElems m a (MergeSet VALID k a)
+  where
+  fromElems = resolveMergable []
+
+instance Applicative m => SemigroupM m (MergeSet RAW k a) where
+  mergeM _ (MergeSet x) (MergeSet y) = pure $ MergeSet $ x <> y
+
+instance Applicative m => FromElems m a (MergeSet RAW k a) where
+  fromElems = pure . MergeSet
+
+resolveConflict :: (Monad m, Eq a, KeyOf k a, SemigroupM m a, Failure ValidationErrors m) => [Ref] -> a -> a -> m a
+resolveConflict path oldValue newValue
+  | oldValue == newValue = pure oldValue
+  | otherwise = mergeM path oldValue newValue
diff --git a/src/Data/Morpheus/Ext/OrdMap.hs b/src/Data/Morpheus/Ext/OrdMap.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/OrdMap.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.OrdMap
+  ( OrdMap (..),
+    unsafeFromList,
+  )
+where
+
+import qualified Data.HashMap.Lazy as HM
+import Data.Morpheus.Error.NameCollision (NameCollision (..))
+import Data.Morpheus.Ext.Elems (Elems (..))
+import Data.Morpheus.Ext.Map
+  ( Indexed (..),
+    indexed,
+  )
+import Data.Morpheus.Ext.SemigroupM
+  ( SemigroupM (..),
+  )
+import Data.Morpheus.Internal.Utils
+  ( Collection (..),
+    Failure,
+    FromElems (..),
+    KeyOf (..),
+    Selectable (..),
+    toPair,
+  )
+import Data.Morpheus.Types.Internal.AST.Base (ValidationErrors)
+import Language.Haskell.TH.Syntax (Lift (..))
+import Relude
+
+-- OrdMap
+newtype OrdMap k a = OrdMap
+  { mapEntries :: HashMap k (Indexed k a)
+  }
+  deriving
+    ( Show,
+      Eq,
+      Functor,
+      Traversable
+    )
+
+instance (Lift a, Lift k, Eq k, Hashable k) => Lift (OrdMap k a) where
+  lift (OrdMap x) = [|OrdMap (HM.fromList ls)|]
+    where
+      ls = HM.toList x
+
+#if MIN_VERSION_template_haskell(2,16,0)
+  liftTyped (OrdMap x) = [||OrdMap (HM.fromList ls)||]
+    where
+      ls = HM.toList x
+#endif
+
+instance (Eq k, Hashable k) => Foldable (OrdMap k) where
+  foldMap f = foldMap f . getElements
+
+getElements :: (Eq k, Hashable k) => OrdMap k b -> [b]
+getElements = fmap indexedValue . sortOn index . toList . mapEntries
+
+instance (KeyOf k a, Hashable k) => Collection a (OrdMap k a) where
+  empty = OrdMap HM.empty
+  singleton x = OrdMap $ HM.singleton (keyOf x) (Indexed 0 (keyOf x) x)
+
+instance (Eq k, Hashable k) => Selectable k a (OrdMap k a) where
+  selectOr fb f key OrdMap {mapEntries} = maybe fb (f . indexedValue) (HM.lookup key mapEntries)
+
+instance (NameCollision a, Monad m, KeyOf k a, Failure ValidationErrors m) => SemigroupM m (OrdMap k a) where
+  mergeM ref (OrdMap x) (OrdMap y) = OrdMap <$> mergeM ref x y
+
+instance (NameCollision a, Monad m, Failure ValidationErrors m, KeyOf k a, Hashable k) => FromElems m a (OrdMap k a) where
+  fromElems values = OrdMap <$> fromElems (indexed (toPair <$> values))
+
+instance (Eq k, Hashable k) => Elems a (OrdMap k a) where
+  elems = getElements
+
+unsafeFromList ::
+  (Hashable k, Eq k) =>
+  [(k, a)] ->
+  OrdMap k a
+unsafeFromList = OrdMap . HM.fromList . fmap withKey . indexed
+  where
+    withKey idx = (indexedKey idx, idx)
diff --git a/src/Data/Morpheus/Ext/SafeHashMap.hs b/src/Data/Morpheus/Ext/SafeHashMap.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/SafeHashMap.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveTraversable #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.SafeHashMap
+  ( SafeHashMap,
+    unsafeFromList,
+    insert,
+  )
+where
+
+import qualified Data.HashMap.Lazy as HM
+import Data.Morpheus.Error.NameCollision (NameCollision (..))
+import Data.Morpheus.Ext.Elems (Elems)
+import Data.Morpheus.Ext.SemigroupM
+  ( (<:>),
+    SemigroupM (..),
+  )
+import Data.Morpheus.Internal.Utils
+  ( Collection (..),
+    Failure (..),
+    FromElems (..),
+    KeyOf (..),
+    Selectable (..),
+  )
+import Data.Morpheus.Types.Internal.AST.Base (ValidationErrors)
+import Language.Haskell.TH.Syntax (Lift (..))
+import Relude
+
+newtype SafeHashMap k a = SafeHashMap
+  { unpackSafeHashMap :: HashMap k a
+  }
+  deriving
+    ( Show,
+      Eq,
+      Functor,
+      Foldable,
+      Traversable
+    )
+  deriving newtype
+    ( Collection a,
+      Selectable k a,
+      Elems a
+    )
+
+instance (Lift a, Lift k, Eq k, Hashable k) => Lift (SafeHashMap k a) where
+  lift (SafeHashMap x) = let ls = HM.toList x in [|SafeHashMap (HM.fromList ls)|]
+
+#if MIN_VERSION_template_haskell(2,16,0)
+  liftTyped (SafeHashMap x) = let ls = HM.toList x in [||SafeHashMap (HM.fromList ls)||]
+#endif
+
+instance (NameCollision a, Monad m, KeyOf k a, Failure ValidationErrors m) => SemigroupM m (SafeHashMap k a) where
+  mergeM ref (SafeHashMap x) (SafeHashMap y) = SafeHashMap <$> mergeM ref x y
+
+instance (NameCollision a, Failure ValidationErrors m, Monad m, KeyOf k a, Hashable k) => FromElems m a (SafeHashMap k a) where
+  fromElems = fmap SafeHashMap . fromElems
+
+unsafeFromList :: (Eq k, KeyOf k a) => [(k, a)] -> SafeHashMap k a
+unsafeFromList = SafeHashMap . HM.fromList
+
+insert ::
+  ( NameCollision a,
+    KeyOf k a,
+    Monad m,
+    Failure ValidationErrors m
+  ) =>
+  a ->
+  SafeHashMap k a ->
+  m (SafeHashMap k a)
+insert x = (<:> singleton x)
diff --git a/src/Data/Morpheus/Ext/SemigroupM.hs b/src/Data/Morpheus/Ext/SemigroupM.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Morpheus/Ext/SemigroupM.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Data.Morpheus.Ext.SemigroupM
+  ( SemigroupM (..),
+    (<:>),
+    concatTraverse,
+    join,
+  )
+where
+
+import qualified Data.HashMap.Lazy as HM
+import Data.HashMap.Lazy (HashMap)
+import Data.Morpheus.Error.NameCollision (NameCollision)
+import Data.Morpheus.Ext.KeyOf (KeyOf (..))
+import Data.Morpheus.Ext.Map
+  ( fromListT,
+    runResolutionT,
+  )
+import Data.Morpheus.Internal.Utils
+  ( Collection (..),
+    Elems (..),
+    Failure,
+    failOnDuplicates,
+  )
+import Data.Morpheus.Types.Internal.AST.Base
+  ( Ref,
+    ValidationErrors,
+  )
+import Relude
+  ( ($),
+    Applicative (..),
+    Monad (..),
+    Semigroup (..),
+    Traversable (..),
+  )
+
+class SemigroupM (m :: * -> *) a where
+  mergeM :: [Ref] -> a -> a -> m a
+
+instance
+  ( NameCollision a,
+    Monad m,
+    KeyOf k a,
+    Failure ValidationErrors m
+  ) =>
+  SemigroupM m (HashMap k a)
+  where
+  mergeM _ x y = runResolutionT (fromListT $ HM.toList x <> HM.toList y) HM.fromList failOnDuplicates
+
+concatTraverse ::
+  ( Monad m,
+    Failure ValidationErrors m,
+    Collection b cb,
+    Elems a ca,
+    SemigroupM m cb
+  ) =>
+  (a -> m cb) ->
+  ca ->
+  m cb
+concatTraverse f smap =
+  traverse f (elems smap)
+    >>= join
+
+join ::
+  ( Collection e a,
+    Monad m,
+    Failure ValidationErrors m,
+    SemigroupM m a
+  ) =>
+  [a] ->
+  m a
+join = __join empty
+  where
+    __join acc [] = pure acc
+    __join acc (x : xs) = acc <:> x >>= (`__join` xs)
+
+(<:>) :: SemigroupM m a => a -> a -> m a
+(<:>) = mergeM []
diff --git a/src/Data/Morpheus/Internal/Graph.hs b/src/Data/Morpheus/Internal/Graph.hs
--- a/src/Data/Morpheus/Internal/Graph.hs
+++ b/src/Data/Morpheus/Internal/Graph.hs
@@ -11,18 +11,9 @@
   )
 where
 
-import Control.Applicative (Applicative, pure)
-import Data.Foldable (traverse_)
-import Data.List (elem, lookup)
-import Data.Maybe (Maybe (..))
--- MORPHEUS
-import Data.Morpheus.Types.Internal.AST
-  ( Ref (..),
-  )
-import Data.Semigroup ((<>))
-import Prelude
-  ( otherwise,
-  )
+import Data.List (lookup)
+import Data.Morpheus.Types.Internal.AST (Ref (..))
+import Relude
 
 type Node = Ref
 
@@ -32,31 +23,31 @@
 
 cycleChecking ::
   Applicative m =>
-  ([Ref] -> m ()) ->
+  (NonEmpty Ref -> m ()) ->
   Graph ->
   m ()
-cycleChecking fail graph = traverse_ checkNode graph
+cycleChecking fail' graph = traverse_ checkNode graph
   where
-    checkNode (node, _) = cycleCheckingWith graph node [node] fail
+    checkNode (node, _) = cycleCheckingWith graph node [node] fail'
 
 cycleCheckingWith ::
   Applicative m =>
   Graph ->
   Ref ->
   [Ref] ->
-  ([Ref] -> m ()) ->
+  (NonEmpty Ref -> m ()) ->
   m ()
-cycleCheckingWith graph parentNode history fail =
+cycleCheckingWith graph parentNode history fail' =
   case lookup parentNode graph of
     Just node -> traverse_ checkNode node
     Nothing -> pure ()
   where
     checkNode node
       | node `elem` history =
-        fail (node : history)
+        fail' (node :| history)
       | otherwise =
         cycleCheckingWith
           graph
           node
           (history <> [node])
-          fail
+          fail'
diff --git a/src/Data/Morpheus/Internal/TH.hs b/src/Data/Morpheus/Internal/TH.hs
--- a/src/Data/Morpheus/Internal/TH.hs
+++ b/src/Data/Morpheus/Internal/TH.hs
@@ -9,7 +9,6 @@
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TemplateHaskell #-}
--- MORPHEUS
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Internal.TH
@@ -19,18 +18,17 @@
     applyVars,
     decArgs,
     declareTypeRef,
-    destructRecord,
     funDProxy,
     funDSimple,
     infoTyVars,
     isEnum,
     m',
-    mkFieldsE,
     nameSpaceField,
     nameSpaceType,
     toCon,
     toConE,
     toConT,
+    toVar,
     ToName (..),
     toString,
     toVarE,
@@ -43,49 +41,29 @@
     o',
     e',
     vars,
-    decodeObjectE,
-    matchWith,
   )
 where
 
-import Control.Applicative ((<*>), pure)
-import Control.Monad.Fail (fail)
-import Data.Foldable (foldl, foldr1)
-import Data.Functor ((<$>))
-import Data.Maybe (Maybe (..))
+import Data.Foldable (foldl)
 import Data.Morpheus.Internal.Utils
   ( capitalize,
     nameSpaceField,
     nameSpaceType,
   )
 import Data.Morpheus.Types.Internal.AST
-  ( FieldDefinition (..),
-    FieldName (..),
+  ( FieldName (..),
     TypeKind (..),
     TypeName (..),
     TypeRef (..),
     TypeWrapper (..),
     convertToHaskellName,
     isEnum,
-    isNullable,
     isOutputObject,
     readName,
   )
-import Data.Semigroup ((<>))
 import Data.Text (unpack)
 import Language.Haskell.TH
-import Prelude
-  ( ($),
-    (.),
-    (==),
-    Bool (..),
-    String,
-    id,
-    map,
-    otherwise,
-    show,
-    (||),
-  )
+import Relude hiding (ToString (..), Type)
 
 m' :: Type
 m' = VarT (mkName "m")
@@ -119,8 +97,8 @@
     wrappedT [] = decType typeArgs
     --------------------------------------------
     decType :: Maybe String -> Type
-    decType (Just par) = apply (capitalize typeConName) [toVar par]
-    decType _ = toCon (capitalize typeConName)
+    decType (Just par) = apply typeConName [toVar par]
+    decType _ = toCon typeConName
 
 tyConArgs :: TypeKind -> [String]
 tyConArgs kindD
@@ -234,21 +212,6 @@
 funDSimple :: Name -> [PatQ] -> ExpQ -> DecQ
 funDSimple name args body = funD name [clause args (normalB body) []]
 
--- |
--- input:
--- >>>
--- destructRecord "User" ["name","id"]
--- >>>
---
--- expression:
--- >>>
--- (User name id)
--- >>>
-destructRecord :: TypeName -> [FieldDefinition cat s] -> PatQ
-destructRecord conName fields = conP (toName conName) (vars names)
-  where
-    names = map fieldName fields
-
 infoTyVars :: Info -> [TyVarBndr]
 infoTyVars (TyConI x) = decArgs x
 infoTyVars _ = []
@@ -270,74 +233,6 @@
 
 toConE :: ToCon a Exp => a -> ExpQ
 toConE = toCon
-
--- | 'mkFieldsE'
---
---  input :
---  >>>
---       mkFieldsE 'mkValue [FieldDefinition { fieldName = \"field1" ,..} ,..]
---  >>>
---
---  expression :
---  >>>
---    [ mkValue \"field1\" field1,
---    ..
---    ]
--- >>>
-mkFieldsE :: Name -> [FieldDefinition cat s] -> Exp
-mkFieldsE name = ListE . map (mkEntryWith name)
-
---  input : mkFieldWith 'mkValue (FieldDefinition { fieldName = "field1", ..})
---  expression: mkValue "field1"  field1
-mkEntryWith ::
-  Name ->
-  FieldDefinition cat s ->
-  Exp
-mkEntryWith f FieldDefinition {fieldName} =
-  AppE
-    (AppE (VarE f) (toString fieldName))
-    (toVar fieldName)
-
-decodeObjectE :: (Bool -> Name) -> TypeName -> [FieldDefinition cat s] -> ExpQ
-decodeObjectE _ conName [] = appE (varE 'pure) (toCon conName)
-decodeObjectE funName conName fields =
-  uInfixE
-    (toCon conName)
-    (varE '(<$>))
-    (foldr1 withApplicative $ map (defField funName) fields)
-
-withApplicative :: ExpQ -> ExpQ -> ExpQ
-withApplicative x = uInfixE x (varE '(<*>))
-
-matchWith ::
-  Bool ->
-  (t -> (PatQ, ExpQ)) ->
-  [t] ->
-  ExpQ
-matchWith isClosed f xs = lamCaseE (map buildMatch xs <> fallback)
-  where
-    fallback
-      | isClosed = []
-      | otherwise = [elseCaseEXP]
-    buildMatch x = match pat (normalB body) []
-      where
-        (pat, body) = f x
-
-elseCaseEXP :: MatchQ
-elseCaseEXP = match v' body []
-  where
-    body =
-      normalB $
-        appE
-          (toVarE 'fail)
-          ( uInfixE
-              (appE (varE 'show) v')
-              (varE '(<>))
-              (stringE " is Not Valid Union Constructor")
-          )
-
-defField :: (Bool -> Name) -> FieldDefinition cat s -> ExpQ
-defField f field@FieldDefinition {fieldName} = uInfixE v' (varE $ f (isNullable field)) (toString fieldName)
 
 #if MIN_VERSION_template_haskell(2,15,0)
 -- fix breaking changes
diff --git a/src/Data/Morpheus/Internal/Utils.hs b/src/Data/Morpheus/Internal/Utils.hs
--- a/src/Data/Morpheus/Internal/Utils.hs
+++ b/src/Data/Morpheus/Internal/Utils.hs
@@ -1,12 +1,9 @@
 {-# LANGUAGE ConstraintKinds #-}
-{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PolyKinds #-}
 {-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Internal.Utils
@@ -16,89 +13,65 @@
     capitalTypeName,
     Collection (..),
     Selectable (..),
-    Listable (..),
-    Merge (..),
+    FromElems (..),
     Failure (..),
     KeyOf (..),
     toPair,
     selectBy,
-    member,
-    keys,
-    size,
-    (<:>),
     mapFst,
     mapSnd,
     mapTuple,
-    UpdateT (..),
-    resolveUpdates,
-    concatUpdates,
-    failUpdates,
-    ordTraverse,
-    ordTraverse_,
     traverseCollection,
-    (<.>),
-    SemigroupM (..),
-    fromListT,
-    mergeT,
-    runResolutionT,
-    ResolutionT,
     prop,
-    resolveWith,
     stripFieldNamespace,
     stripConstructorNamespace,
+    fromLBS,
+    toLBS,
+    mergeT,
+    Elems (..),
+    size,
+    failOnDuplicates,
   )
 where
 
-import Control.Applicative (Applicative (..))
-import Control.Monad ((=<<), (>=>), (>>=), foldM)
-import Control.Monad.Reader (MonadReader (..), asks)
-import Control.Monad.Trans.Class (MonadTrans (..))
-import Control.Monad.Trans.Reader
-  ( ReaderT (..),
-  )
+import Data.ByteString.Lazy (ByteString)
 import Data.Char
   ( toLower,
     toUpper,
   )
-import Data.Foldable (foldlM, null, traverse_)
-import Data.Function ((&))
-import Data.HashMap.Lazy (HashMap)
 import qualified Data.HashMap.Lazy as HM
-import Data.Hashable (Hashable)
-import Data.List (drop, find)
-import Data.List.NonEmpty (NonEmpty (..))
-import Data.Maybe (maybe)
 import Data.Morpheus.Error.NameCollision (NameCollision (..))
+import Data.Morpheus.Ext.Elems (Elems (..), size)
+import Data.Morpheus.Ext.Failure (Failure (..))
+import Data.Morpheus.Ext.KeyOf (KeyOf (..), toPair)
+import Data.Morpheus.Ext.Map
+  ( ResolutionT,
+    fromListT,
+    runResolutionT,
+  )
 import Data.Morpheus.Types.Internal.AST.Base
   ( FieldName,
     FieldName (..),
-    Ref (..),
     Token,
     TypeName (..),
-    TypeNameRef (..),
     ValidationErrors,
   )
-import Data.Semigroup (Semigroup (..))
 import qualified Data.Text as T
-import Data.Traversable (traverse)
+import qualified Data.Text.Lazy as LT
+import Data.Text.Lazy.Encoding (decodeUtf8, encodeUtf8)
 import Instances.TH.Lift ()
-import Prelude
-  ( ($),
-    (.),
-    Bool (..),
-    Either (..),
-    Eq (..),
-    Functor (..),
-    Int,
-    Monad,
-    String,
-    const,
-    fst,
-    length,
-    otherwise,
-    snd,
+import Relude hiding
+  ( ByteString,
+    decodeUtf8,
+    encodeUtf8,
   )
 
+toLBS :: Text -> ByteString
+toLBS = encodeUtf8 . LT.fromStrict
+
+fromLBS :: ByteString -> Text
+fromLBS = LT.toStrict . decodeUtf8
+
 prop :: (b -> b -> m b) -> (a -> b) -> a -> a -> m b
 prop f fSel a1 a2 = f (fSel a1) (fSel a2)
 
@@ -106,40 +79,30 @@
 nameSpaceType list (TypeName name) = TypeName . T.concat $ fmap capitalize (fmap readName list <> [name])
 
 nameSpaceField :: TypeName -> FieldName -> FieldName
-nameSpaceField nSpace (FieldName name) = FieldName (nonCapital nSpace <> capitalize name)
+nameSpaceField (TypeName nSpace) (FieldName name) = FieldName (uncapitalize nSpace <> capitalize name)
 
 dropPrefix :: TypeName -> String -> String
-dropPrefix (TypeName name) = drop (length (T.unpack name))
+dropPrefix (TypeName name) = drop (T.length name)
 
 stripConstructorNamespace :: TypeName -> String -> String
 stripConstructorNamespace = dropPrefix
 
 stripFieldNamespace :: TypeName -> String -> String
-stripFieldNamespace prefix = uncapitalize . dropPrefix prefix
-
-mapText :: (String -> String) -> Token -> Token
-mapText f = T.pack . f . T.unpack
-
-nonCapital :: TypeName -> Token
-nonCapital = uncapitalize . readTypeName
-
-class Capitalize a where
-  capitalize :: a -> a
-  uncapitalize :: a -> a
+stripFieldNamespace prefix = __uncapitalize . dropPrefix prefix
+  where
+    __uncapitalize [] = []
+    __uncapitalize (x : xs) = toLower x : xs
 
-instance Capitalize String where
-  capitalize [] = []
-  capitalize (x : xs) = toUpper x : xs
-  uncapitalize [] = []
-  uncapitalize (x : xs) = toLower x : xs
+capitalize :: Text -> Text
+capitalize = mapFstChar toUpper
 
-instance Capitalize Token where
-  capitalize = mapText capitalize
-  uncapitalize = mapText uncapitalize
+uncapitalize :: Text -> Text
+uncapitalize = mapFstChar toLower
 
-instance Capitalize TypeName where
-  capitalize = TypeName . capitalize . readTypeName
-  uncapitalize = TypeName . uncapitalize . readTypeName
+mapFstChar :: (Char -> Char) -> Token -> Token
+mapFstChar f x
+  | T.null x = x
+  | otherwise = T.singleton (f $ T.head x) <> T.tail x
 
 capitalTypeName :: FieldName -> TypeName
 capitalTypeName = TypeName . capitalize . readName
@@ -160,6 +123,9 @@
 class Selectable k a c | c -> a where
   selectOr :: d -> (a -> d) -> k -> c -> d
 
+  member :: k -> c -> Bool
+  member = selectOr False (const True)
+
 instance KeyOf k a => Selectable k a [a] where
   selectOr fb f key lib = maybe fb f (find ((key ==) . keyOf) lib)
 
@@ -169,29 +135,11 @@
 selectBy :: (Failure e m, Selectable k a c, Monad m) => e -> k -> c -> m a
 selectBy err = selectOr (failure err) pure
 
-member :: Selectable k a c => k -> c -> Bool
-member = selectOr False toTrue
-  where
-    toTrue :: a -> Bool
-    toTrue _ = True
-
-ordTraverse ::
-  ( Monad f,
-    KeyOf k b,
-    Listable a (t a),
-    Listable b (t b),
-    Failure ValidationErrors f
-  ) =>
-  (a -> f b) ->
-  t a ->
-  f (t b)
-ordTraverse = traverseCollection
-
 traverseCollection ::
   ( Monad f,
     KeyOf k b,
-    Listable a (t a),
-    Listable b (t' b),
+    Elems a (t a),
+    FromElems f b (t' b),
     Failure ValidationErrors f
   ) =>
   (a -> f b) ->
@@ -199,75 +147,25 @@
   f (t' b)
 traverseCollection f a = fromElems =<< traverse f (elems a)
 
-ordTraverse_ ::
-  ( Monad f,
-    Listable a (t a)
-  ) =>
-  (a -> f b) ->
-  t a ->
-  f ()
-ordTraverse_ f a = traverse_ f (elems a)
-
-class (Eq k, Hashable k) => KeyOf k a | a -> k where
-  keyOf :: a -> k
-
-instance (Eq k, Hashable k) => KeyOf k (k, a) where
-  keyOf = fst
-
-instance KeyOf FieldName Ref where
-  keyOf = refName
-
-instance KeyOf TypeName TypeNameRef where
-  keyOf = typeNameRef
-
-toPair :: KeyOf k a => a -> (k, a)
-toPair x = (keyOf x, x)
-
 -- list Like Collections
-class Listable a coll | coll -> a where
-  elems :: coll -> [a]
-  fromElems :: (Monad m, Failure ValidationErrors m) => [a] -> m coll
-
-instance (NameCollision a, KeyOf k a) => Listable a (HashMap k a) where
-  fromElems xs = runResolutionT (fromListT xs) hmUnsafeFromValues failOnDuplicates
-  elems = HM.elems
+class FromElems m a coll | coll -> a where
+  fromElems :: [a] -> m coll
 
-keys :: (KeyOf k a, Listable a coll) => coll -> [k]
-keys = fmap keyOf . elems
+mergeT :: (KeyOf k a, Monad m, Elems a c) => c -> c -> ResolutionT k a c m c
+mergeT x y = fromListT (toPair <$> (elems x <> elems y))
 
-size :: Listable a coll => coll -> Int
-size = length . elems
+instance
+  ( NameCollision a,
+    Failure ValidationErrors m,
+    KeyOf k a,
+    Monad m
+  ) =>
+  FromElems m a (HashMap k a)
+  where
+  fromElems xs = runResolutionT (fromListT (toPair <$> xs)) HM.fromList failOnDuplicates
 
 -- Merge Object with of Failure as an Option
-class Merge a where
-  merge :: (Monad m, Failure ValidationErrors m) => [Ref] -> a -> a -> m a
 
-instance (NameCollision a, KeyOf k a) => Merge (HashMap k a) where
-  merge _ x y = runResolutionT (fromListT $ HM.elems x <> HM.elems y) hmUnsafeFromValues failOnDuplicates
-
-(<:>) :: (Monad m, Merge a, Failure ValidationErrors m) => a -> a -> m a
-(<:>) = merge []
-
-class SemigroupM m a where
-  mergeM :: [Ref] -> a -> a -> m a
-
-(<.>) ::
-  (SemigroupM m a) =>
-  a ->
-  a ->
-  m a
-(<.>) = mergeM []
-
--- Failure: for custom Morpheus GrapHQL errors
-class Applicative f => Failure error (f :: * -> *) where
-  failure :: error -> f v
-
-instance Failure error (Either error) where
-  failure = Left
-
-instance (Monad m, Failure errors m) => Failure errors (ReaderT ctx m) where
-  failure = lift . failure
-
 mapFst :: (a -> a') -> (a, b) -> (a', b)
 mapFst f (a, b) = (f a, b)
 
@@ -276,98 +174,6 @@
 
 mapTuple :: (a -> a') -> (b -> b') -> (a, b) -> (a', b')
 mapTuple f1 f2 (a, b) = (f1 a, f2 b)
-
--- Helper Functions
-newtype UpdateT m a = UpdateT {updateTState :: a -> m a}
-
-failUpdates :: (Failure e m) => e -> UpdateT m a
-failUpdates = UpdateT . const . failure
-
-concatUpdates :: Monad m => [UpdateT m a] -> UpdateT m a
-concatUpdates x = UpdateT (`resolveUpdates` x)
-
-resolveUpdates :: Monad m => a -> [UpdateT m a] -> m a
-resolveUpdates a = foldM (&) a . fmap updateTState
-
-type RESOLUTION k a coll m =
-  ( Monad m,
-    KeyOf k a,
-    Listable a coll
-  )
-
-data Resolution a coll m = Resolution
-  { resolveDuplicates :: NonEmpty a -> m a,
-    fromNoDuplicates :: [a] -> coll
-  }
-
-runResolutionT ::
-  ResolutionT a coll m b ->
-  ([a] -> coll) ->
-  (NonEmpty a -> m a) ->
-  m b
-runResolutionT (ResolutionT x) fromNoDuplicates resolveDuplicates = runReaderT x Resolution {..}
-
-newtype ResolutionT a coll m x = ResolutionT
-  { _runResolutionT :: ReaderT (Resolution a coll m) m x
-  }
-  deriving
-    ( Functor,
-      Monad,
-      Applicative,
-      MonadReader (Resolution a coll m)
-    )
-
-instance MonadTrans (ResolutionT e coll) where
-  lift = ResolutionT . lift
-
-instance
-  ( Monad m,
-    Failure ValidationErrors m
-  ) =>
-  Failure ValidationErrors (ResolutionT a coll m)
-  where
-  failure = lift . failure
-
-resolveDuplicatesM :: Monad m => NonEmpty a -> ResolutionT a coll m a
-resolveDuplicatesM xs = asks resolveDuplicates >>= lift . (xs &)
-
-fromNoDuplicatesM :: Monad m => [a] -> ResolutionT a coll m coll
-fromNoDuplicatesM xs = asks ((xs &) . fromNoDuplicates)
-
-insertWithList :: (Eq k, Hashable k) => (k, NonEmpty a) -> [(k, NonEmpty a)] -> [(k, NonEmpty a)]
-insertWithList (key, value) values
-  | key `member` values = fmap replaceBy values
-  | otherwise = values <> [(key, value)]
-  where
-    replaceBy (entryKey, entryValue)
-      | key == entryKey = (key, entryValue <> value)
-      | otherwise = (entryKey, entryValue)
-
-clusterDuplicates :: (Eq k, Hashable k) => [(k, NonEmpty a)] -> [(k, a)] -> [(k, NonEmpty a)]
-clusterDuplicates collected [] = collected
-clusterDuplicates coll ((key, value) : xs) = clusterDuplicates (insertWithList (key, value :| []) coll) xs
-
-fromListDuplicates :: (KeyOf k a) => [a] -> [(k, NonEmpty a)]
-fromListDuplicates xs = clusterDuplicates [] (fmap toPair xs)
-
-fromListT ::
-  RESOLUTION k a coll m =>
-  [a] ->
-  ResolutionT a coll m coll
-fromListT = traverse (resolveDuplicatesM . snd) . fromListDuplicates >=> fromNoDuplicatesM
-
-mergeT :: RESOLUTION k a coll m => coll -> coll -> ResolutionT a coll m coll
-mergeT c1 c2 = traverse (resolveDuplicatesM . snd) (fromListDuplicates (elems c1 <> elems c2)) >>= fromNoDuplicatesM
-
-resolveWith ::
-  Monad m =>
-  (a -> a -> m a) ->
-  NonEmpty a ->
-  m a
-resolveWith f (x :| xs) = foldlM f x xs
-
-hmUnsafeFromValues :: (Eq k, KeyOf k a) => [a] -> HashMap k a
-hmUnsafeFromValues = HM.fromList . fmap toPair
 
 failOnDuplicates :: (Failure ValidationErrors m, NameCollision a) => NonEmpty a -> m a
 failOnDuplicates (x :| xs)
diff --git a/src/Data/Morpheus/Parser.hs b/src/Data/Morpheus/Parser.hs
--- a/src/Data/Morpheus/Parser.hs
+++ b/src/Data/Morpheus/Parser.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
 module Data.Morpheus.Parser
   ( parseTypeDefinitions,
     parseTypeSystemDefinition,
@@ -6,12 +8,14 @@
   )
 where
 
-import Control.Monad ((>=>))
+import Data.ByteString.Lazy (ByteString)
+import Data.Morpheus.Ext.SemigroupM ((<:>))
 import qualified Data.Morpheus.Parsing.Document.TypeSystem as P
   ( parseSchema,
     parseTypeDefinitions,
   )
 import Data.Morpheus.Parsing.Request.Parser (parseGQL)
+import Data.Morpheus.Schema.Schema (internalSchema)
 import Data.Morpheus.Types.IO
   ( GQLRequest (..),
   )
@@ -37,10 +41,10 @@
 import Data.Morpheus.Validation.Query.Validation
   ( validateRequest,
   )
-import Data.Text (Text)
+import Relude hiding (ByteString)
 
 parseTypeSystemDefinition ::
-  Text -> Eventless (Schema VALID)
+  ByteString -> Eventless (Schema VALID)
 parseTypeSystemDefinition =
   P.parseSchema
     >=> validateSchema
@@ -51,11 +55,14 @@
         }
 
 parseTypeDefinitions ::
-  Text -> Eventless [TypeDefinition ANY CONST]
+  ByteString -> Eventless [TypeDefinition ANY CONST]
 parseTypeDefinitions = P.parseTypeDefinitions
 
 parseRequest :: GQLRequest -> Eventless GQLQuery
 parseRequest = parseGQL
 
 parseRequestWith :: Config -> Schema VALID -> GQLRequest -> Eventless (Operation VALID)
-parseRequestWith config schema = parseRequest >=> validateRequest config schema
+parseRequestWith config schema req = do
+  qu <- parseRequest req
+  fuillSchema <- internalSchema <:> schema
+  validateRequest config fuillSchema qu
diff --git a/src/Data/Morpheus/Parsing/Document/TypeSystem.hs b/src/Data/Morpheus/Parsing/Document/TypeSystem.hs
--- a/src/Data/Morpheus/Parsing/Document/TypeSystem.hs
+++ b/src/Data/Morpheus/Parsing/Document/TypeSystem.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE GADTs #-}
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
@@ -10,13 +11,7 @@
   )
 where
 
--- MORPHEUS
-
-import Control.Applicative ((*>), pure)
-import Control.Monad ((>=>))
-import Data.Foldable (foldr)
-import Data.Functor ((<$>), fmap)
-import Data.Maybe (Maybe (..))
+import Data.ByteString.Lazy (ByteString)
 import Data.Morpheus.Error.NameCollision (NameCollision (..))
 import Data.Morpheus.Parsing.Internal.Internal
   ( Parser,
@@ -33,7 +28,10 @@
     typeDeclaration,
   )
 import Data.Morpheus.Parsing.Internal.Terms
-  ( collection,
+  ( at,
+    collection,
+    colon,
+    equal,
     ignoredTokens,
     keyword,
     optDescription,
@@ -43,7 +41,6 @@
     pipe,
     sepByAnd,
     setOf,
-    symbol,
   )
 import Data.Morpheus.Parsing.Internal.Value
   ( Parse (..),
@@ -51,41 +48,51 @@
 import Data.Morpheus.Types.Internal.AST
   ( ANY,
     CONST,
-    DataFingerprint (..),
     Description,
     DirectiveDefinition (..),
-    IN,
+    Directives,
+    ELEM,
+    FieldsDefinition,
+    OBJECT,
     OUT,
     RawTypeDefinition (..),
     RootOperationTypeDefinition (..),
     ScalarDefinition (..),
     Schema,
     SchemaDefinition (..),
+    TRUE,
     TypeContent (..),
     TypeDefinition (..),
     TypeName,
     Value,
     buildSchema,
     mkUnionMember,
-    toAny,
   )
 import Data.Morpheus.Types.Internal.Resolving
   ( Eventless,
     failure,
   )
-import Data.Text (Text)
+import Relude hiding (ByteString)
 import Text.Megaparsec
-  ( (<|>),
-    eof,
+  ( eof,
     label,
     manyTill,
-    optional,
   )
-import Prelude
-  ( ($),
-    (.),
-  )
 
+mkObject ::
+  (ELEM OBJECT a ~ TRUE) =>
+  Maybe Description ->
+  TypeName ->
+  [TypeName] ->
+  Directives s ->
+  FieldsDefinition OUT s ->
+  TypeDefinition a s
+mkObject typeDescription typeName objectImplements typeDirectives objectFields =
+  TypeDefinition
+    { typeContent = DataObject {objectImplements, objectFields},
+      ..
+    }
+
 -- Scalars : https://graphql.github.io/graphql-spec/June2018/#sec-Scalars
 --
 --  ScalarTypeDefinition:
@@ -95,15 +102,12 @@
   Parse (Value s) =>
   Maybe Description ->
   Parser (TypeDefinition ANY s)
-scalarTypeDefinition typeDescription = label "ScalarTypeDefinition" $ do
-  typeName <- typeDeclaration "scalar"
-  typeDirectives <- optionalDirectives
-  pure
-    TypeDefinition
-      { typeFingerprint = DataFingerprint typeName [],
-        typeContent = DataScalar $ ScalarDefinition pure,
-        ..
-      }
+scalarTypeDefinition typeDescription =
+  label "ScalarTypeDefinition" $
+    TypeDefinition typeDescription
+      <$> typeDeclaration "scalar"
+      <*> optionalDirectives
+      <*> pure (DataScalar (ScalarDefinition pure))
 
 -- Objects : https://graphql.github.io/graphql-spec/June2018/#sec-Objects
 --
@@ -123,20 +127,17 @@
 objectTypeDefinition ::
   Parse (Value s) =>
   Maybe Description ->
-  Parser (TypeDefinition OUT s)
-objectTypeDefinition typeDescription = label "ObjectTypeDefinition" $ do
-  typeName <- typeDeclaration "type"
-  objectImplements <- optionalImplementsInterfaces
-  typeDirectives <- optionalDirectives
-  objectFields <- fieldsDefinition
-  -- build object
-  pure
-    TypeDefinition
-      { typeFingerprint = DataFingerprint typeName [],
-        typeContent = DataObject {objectImplements, objectFields},
-        ..
-      }
+  Parser (TypeDefinition ANY s)
+objectTypeDefinition typeDescription =
+  label "ObjectTypeDefinition" $
+    mkObject typeDescription
+      <$> typeDeclaration "type"
+      <*> optionalImplementsInterfaces
+      <*> optionalDirectives
+      <*> fieldsDefinition
 
+-- build object
+
 optionalImplementsInterfaces :: Parser [TypeName]
 optionalImplementsInterfaces = implements <|> pure []
   where
@@ -151,16 +152,13 @@
 interfaceTypeDefinition ::
   Parse (Value s) =>
   Maybe Description ->
-  Parser (TypeDefinition OUT s)
-interfaceTypeDefinition typeDescription = label "InterfaceTypeDefinition" $ do
-  typeName <- typeDeclaration "interface"
-  typeDirectives <- optionalDirectives
-  typeContent <- DataInterface <$> fieldsDefinition
-  pure
-    TypeDefinition
-      { typeFingerprint = DataFingerprint typeName [],
-        ..
-      }
+  Parser (TypeDefinition ANY s)
+interfaceTypeDefinition typeDescription =
+  label "InterfaceTypeDefinition" $
+    TypeDefinition typeDescription
+      <$> typeDeclaration "interface"
+      <*> optionalDirectives
+      <*> (DataInterface <$> fieldsDefinition)
 
 -- Unions : https://graphql.github.io/graphql-spec/June2018/#sec-Unions
 --
@@ -174,19 +172,16 @@
 unionTypeDefinition ::
   Parse (Value s) =>
   Maybe Description ->
-  Parser (TypeDefinition OUT s)
-unionTypeDefinition typeDescription = label "UnionTypeDefinition" $ do
-  typeName <- typeDeclaration "union"
-  typeDirectives <- optionalDirectives
-  typeContent <- DataUnion <$> unionMemberTypes
-  pure
-    TypeDefinition
-      { typeFingerprint = DataFingerprint typeName [],
-        ..
-      }
+  Parser (TypeDefinition ANY s)
+unionTypeDefinition typeDescription =
+  label "UnionTypeDefinition" $
+    TypeDefinition typeDescription
+      <$> typeDeclaration "union"
+      <*> optionalDirectives
+      <*> (DataUnion <$> unionMemberTypes)
   where
     unionMemberTypes =
-      symbol '='
+      equal
         *> pipe (mkUnionMember <$> parseTypeName)
 
 -- Enums : https://graphql.github.io/graphql-spec/June2018/#sec-Enums
@@ -204,15 +199,12 @@
   Parse (Value s) =>
   Maybe Description ->
   Parser (TypeDefinition ANY s)
-enumTypeDefinition typeDescription = label "EnumTypeDefinition" $ do
-  typeName <- typeDeclaration "enum"
-  typeDirectives <- optionalDirectives
-  typeContent <- DataEnum <$> collection enumValueDefinition
-  pure
-    TypeDefinition
-      { typeFingerprint = DataFingerprint typeName [],
-        ..
-      }
+enumTypeDefinition typeDescription =
+  label "EnumTypeDefinition" $
+    TypeDefinition typeDescription
+      <$> typeDeclaration "enum"
+      <*> optionalDirectives
+      <*> (DataEnum <$> collection enumValueDefinition)
 
 -- Input Objects : https://graphql.github.io/graphql-spec/June2018/#sec-Input-Objects
 --
@@ -225,18 +217,14 @@
 inputObjectTypeDefinition ::
   Parse (Value s) =>
   Maybe Description ->
-  Parser (TypeDefinition IN s)
+  Parser (TypeDefinition ANY s)
 inputObjectTypeDefinition typeDescription =
-  label "InputObjectTypeDefinition" $ do
-    typeName <- typeDeclaration "input"
-    typeDirectives <- optionalDirectives
-    typeContent <- DataInputObject <$> inputFieldsDefinition
-    -- build input
-    pure
-      TypeDefinition
-        { typeFingerprint = DataFingerprint typeName [],
-          ..
-        }
+  label "InputObjectTypeDefinition" $
+    TypeDefinition
+      typeDescription
+      <$> typeDeclaration "input"
+      <*> optionalDirectives
+      <*> (DataInputObject <$> inputFieldsDefinition)
 
 -- 3.13 DirectiveDefinition
 --
@@ -246,26 +234,20 @@
 --  DirectiveLocations:
 --    DirectiveLocations | DirectiveLocation
 --    |[opt] DirectiveLocation
-
 parseDirectiveDefinition ::
+  Parse (Value s) =>
   Maybe Description ->
-  Parser RawTypeDefinition
-parseDirectiveDefinition directiveDefinitionDescription = label "DirectiveDefinition" $ do
-  keyword "directive"
-  symbol '@'
-  directiveDefinitionName <- parseName
-  directiveDefinitionArgs <- optionalCollection argumentsDefinition
-  _ <- optional (keyword "repeatable")
-  keyword "on"
-  directiveDefinitionLocations <- pipe parseDirectiveLocation
-  pure
-    $ RawDirectiveDefinition
-    $ DirectiveDefinition
-      { directiveDefinitionName,
-        directiveDefinitionDescription,
-        directiveDefinitionLocations,
-        directiveDefinitionArgs
-      }
+  Parser (DirectiveDefinition s)
+parseDirectiveDefinition directiveDefinitionDescription =
+  label "DirectiveDefinition" $
+    DirectiveDefinition
+      <$> ( keyword "directive"
+              *> at
+              *> parseName
+          )
+        <*> pure directiveDefinitionDescription
+        <*> optionalCollection argumentsDefinition
+        <*> (optional (keyword "repeatable") *> keyword "on" *> pipe parseDirectiveLocation)
 
 -- 3.2 Schema
 -- SchemaDefinition:
@@ -280,21 +262,20 @@
 --     mutation :: Maybe TypeName,
 --     subscription :: Maybe TypeName
 --   }
-
-parseSchemaDefinition :: Maybe Description -> Parser RawTypeDefinition
-parseSchemaDefinition _schemaDescription = label "SchemaDefinition" $ do
-  keyword "schema"
-  schemaDirectives <- optionalDirectives
-  unSchemaDefinition <- setOf parseRootOperationTypeDefinition
-  pure
-    $ RawSchemaDefinition
-    $ SchemaDefinition {schemaDirectives, unSchemaDefinition}
+parseSchemaDefinition :: Maybe Description -> Parser SchemaDefinition
+parseSchemaDefinition _schemaDescription =
+  label "SchemaDefinition" $
+    keyword "schema"
+      *> ( SchemaDefinition
+             <$> optionalDirectives
+             <*> setOf parseRootOperationTypeDefinition
+         )
 
 parseRootOperationTypeDefinition :: Parser RootOperationTypeDefinition
-parseRootOperationTypeDefinition = do
-  operationType <- parseOperationType
-  symbol ':'
-  RootOperationTypeDefinition operationType <$> parseTypeName
+parseRootOperationTypeDefinition =
+  RootOperationTypeDefinition
+    <$> (parseOperationType <* colon)
+    <*> parseTypeName
 
 parseTypeSystemUnit ::
   Parser RawTypeDefinition
@@ -303,18 +284,18 @@
     do
       description <- optDescription
       -- scalar | enum |  input | object | union | interface
-      types description
-        <|> parseSchemaDefinition description
-        <|> parseDirectiveDefinition description
+      parseTypeDef description
+        <|> RawSchemaDefinition <$> parseSchemaDefinition description
+        <|> RawDirectiveDefinition <$> parseDirectiveDefinition description
   where
-    types description =
+    parseTypeDef description =
       RawTypeDefinition
-        <$> ( (toAny <$> inputObjectTypeDefinition description)
-                <|> (toAny <$> unionTypeDefinition description)
+        <$> ( objectTypeDefinition description
+                <|> inputObjectTypeDefinition description
+                <|> interfaceTypeDefinition description
+                <|> unionTypeDefinition description
                 <|> enumTypeDefinition description
                 <|> scalarTypeDefinition description
-                <|> (toAny <$> objectTypeDefinition description)
-                <|> (toAny <$> interfaceTypeDefinition description)
             )
 
 typePartition ::
@@ -353,12 +334,13 @@
 withSchemaDefinition (_ : xs, _, _) = failure (fmap nameCollision xs)
 
 parseTypeSystemDefinition :: Parser [RawTypeDefinition]
-parseTypeSystemDefinition = label "TypeSystemDefinitions" $ do
-  ignoredTokens
-  manyTill parseTypeSystemUnit eof
+parseTypeSystemDefinition =
+  label "TypeSystemDefinitions" $
+    ignoredTokens
+      *> manyTill parseTypeSystemUnit eof
 
 typeSystemDefinition ::
-  Text ->
+  ByteString ->
   Eventless
     ( Maybe SchemaDefinition,
       [TypeDefinition ANY CONST],
@@ -368,14 +350,14 @@
   processParser parseTypeSystemDefinition
     >=> withSchemaDefinition . typePartition
 
-parseTypeDefinitions :: Text -> Eventless [TypeDefinition ANY CONST]
+parseTypeDefinitions :: ByteString -> Eventless [TypeDefinition ANY CONST]
 parseTypeDefinitions = fmap snd3 . typeSystemDefinition
 
 snd3 :: (a, b, c) -> b
 snd3 (_, x, _) = x
 
 parseSchema ::
-  Text ->
+  ByteString ->
   Eventless (Schema CONST)
 parseSchema =
   typeSystemDefinition
diff --git a/src/Data/Morpheus/Parsing/Internal/Arguments.hs b/src/Data/Morpheus/Parsing/Internal/Arguments.hs
--- a/src/Data/Morpheus/Parsing/Internal/Arguments.hs
+++ b/src/Data/Morpheus/Parsing/Internal/Arguments.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Internal.Arguments (maybeArguments) where
 
@@ -9,8 +9,7 @@
     getLocation,
   )
 import Data.Morpheus.Parsing.Internal.Terms
-  ( parseAssignment,
-    parseName,
+  ( fieldNameColon,
     uniqTupleOpt,
   )
 import Data.Morpheus.Parsing.Internal.Value
@@ -21,6 +20,7 @@
     Arguments,
     Value,
   )
+import Relude
 import Text.Megaparsec (label)
 
 -- Arguments : https://graphql.github.io/graphql-spec/June2018/#sec-Language.Arguments
@@ -32,10 +32,11 @@
 --  Name : Value[Const]
 valueArgument :: Parse (Value s) => Parser (Argument s)
 valueArgument =
-  label "Argument" $ do
-    argumentPosition <- getLocation
-    (argumentName, argumentValue) <- parseAssignment parseName parse
-    pure $ Argument {argumentName, argumentValue, argumentPosition}
+  label "Argument" $
+    Argument
+      <$> getLocation
+      <*> fieldNameColon
+      <*> parse
 
 maybeArguments :: Parse (Value s) => Parser (Arguments s)
 maybeArguments =
diff --git a/src/Data/Morpheus/Parsing/Internal/Internal.hs b/src/Data/Morpheus/Parsing/Internal/Internal.hs
--- a/src/Data/Morpheus/Parsing/Internal/Internal.hs
+++ b/src/Data/Morpheus/Parsing/Internal/Internal.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Internal.Internal
   ( Parser,
@@ -8,6 +9,7 @@
   )
 where
 
+import Data.ByteString.Lazy (ByteString)
 import qualified Data.List.NonEmpty as NonEmpty
 import Data.Morpheus.Types.Internal.AST
   ( GQLError (..),
@@ -20,10 +22,15 @@
     Result (..),
     failure,
   )
-import Data.Text
-  ( Text,
+import Relude
+  ( ($),
+    (.),
+    Applicative (..),
+    Either (..),
+    Functor (..),
+    Void,
+    fst,
   )
-import Data.Void (Void)
 import Text.Megaparsec
   ( ParseError,
     ParseErrorBundle
@@ -51,11 +58,11 @@
 
 type MyError = Void
 
-type Parser = ParsecT MyError Text Eventless
+type Parser = ParsecT MyError ByteString Eventless
 
-type ErrorBundle = ParseErrorBundle Text MyError
+type ErrorBundle = ParseErrorBundle ByteString MyError
 
-processParser :: Parser a -> Text -> Eventless a
+processParser :: Parser a -> ByteString -> Eventless a
 processParser parser txt = case runParserT parser [] txt of
   Success {result} -> case result of
     Right root -> pure root
@@ -63,19 +70,20 @@
   Failure {errors} -> failure errors
 
 processErrorBundle :: ErrorBundle -> GQLErrors
-processErrorBundle = map parseErrorToGQLError . bundleToErrors
-  where
-    parseErrorToGQLError :: (ParseError Text MyError, SourcePos) -> GQLError
-    parseErrorToGQLError (err, position) =
-      GQLError
-        { message = msg (parseErrorPretty err),
-          locations = [toLocation position]
-        }
-    bundleToErrors ::
-      ErrorBundle -> [(ParseError Text MyError, SourcePos)]
-    bundleToErrors ParseErrorBundle {bundleErrors, bundlePosState} =
-      NonEmpty.toList $ fst $
-        attachSourcePos
-          errorOffset
-          bundleErrors
-          bundlePosState
+processErrorBundle = fmap parseErrorToGQLError . bundleToErrors
+
+parseErrorToGQLError :: (ParseError ByteString MyError, SourcePos) -> GQLError
+parseErrorToGQLError (err, position) =
+  GQLError
+    { message = msg (parseErrorPretty err),
+      locations = [toLocation position]
+    }
+
+bundleToErrors ::
+  ErrorBundle -> [(ParseError ByteString MyError, SourcePos)]
+bundleToErrors ParseErrorBundle {bundleErrors, bundlePosState} =
+  NonEmpty.toList $ fst $
+    attachSourcePos
+      errorOffset
+      bundleErrors
+      bundlePosState
diff --git a/src/Data/Morpheus/Parsing/Internal/Pattern.hs b/src/Data/Morpheus/Parsing/Internal/Pattern.hs
--- a/src/Data/Morpheus/Parsing/Internal/Pattern.hs
+++ b/src/Data/Morpheus/Parsing/Internal/Pattern.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Internal.Pattern
   ( inputValueDefinition,
@@ -15,8 +16,6 @@
   )
 where
 
-import Data.Functor (($>))
--- MORPHEUS
 import Data.Morpheus.Parsing.Internal.Arguments
   ( maybeArguments,
   )
@@ -25,14 +24,15 @@
     getLocation,
   )
 import Data.Morpheus.Parsing.Internal.Terms
-  ( ignoredTokens,
+  ( at,
+    colon,
+    ignoredTokens,
     keyword,
     optDescription,
     parseName,
     parseType,
     parseTypeName,
     setOf,
-    symbol,
     uniqTuple,
   )
 import Data.Morpheus.Parsing.Internal.Value
@@ -42,6 +42,7 @@
 import Data.Morpheus.Types.Internal.AST
   ( ArgumentsDefinition (..),
     DataEnumValue (..),
+    Description,
     Directive (..),
     DirectiveLocation (..),
     FieldContent (..),
@@ -52,18 +53,18 @@
     InputFieldsDefinition,
     OUT,
     OperationType (..),
+    TRUE,
     TypeName,
+    TypeRef,
     Value,
   )
-import Data.Text (pack)
+import Relude hiding (many)
 import Text.Megaparsec
-  ( (<|>),
-    choice,
+  ( choice,
     label,
     many,
-    optional,
   )
-import Text.Megaparsec.Char (string)
+import Text.Megaparsec.Byte (string)
 
 --  EnumValueDefinition: https://graphql.github.io/graphql-spec/June2018/#EnumValueDefinition
 --
@@ -73,11 +74,12 @@
 enumValueDefinition ::
   Parse (Value s) =>
   Parser (DataEnumValue s)
-enumValueDefinition = label "EnumValueDefinition" $ do
-  enumDescription <- optDescription
-  enumName <- parseTypeName
-  enumDirectives <- optionalDirectives
-  return DataEnumValue {..}
+enumValueDefinition =
+  label "EnumValueDefinition" $
+    DataEnumValue
+      <$> optDescription
+      <*> parseTypeName
+      <*> optionalDirectives
 
 -- InputValue : https://graphql.github.io/graphql-spec/June2018/#InputValueDefinition
 --
@@ -87,14 +89,14 @@
 inputValueDefinition ::
   Parse (Value s) =>
   Parser (FieldDefinition IN s)
-inputValueDefinition = label "InputValueDefinition" $ do
-  fieldDescription <- optDescription
-  fieldName <- parseName
-  symbol ':'
-  fieldType <- parseType
-  fieldContent <- optional (DefaultInputValue <$> parseDefaultValue)
-  fieldDirectives <- optionalDirectives
-  pure FieldDefinition {..}
+inputValueDefinition =
+  label "InputValueDefinition" $
+    FieldDefinition
+      <$> optDescription
+      <*> parseName
+      <*> (colon *> parseType)
+      <*> optional (DefaultInputValue <$> parseDefaultValue)
+      <*> optionalDirectives
 
 -- Field Arguments: https://graphql.github.io/graphql-spec/June2018/#sec-Field-Arguments
 --
@@ -122,15 +124,25 @@
 --    Description(opt) Name ArgumentsDefinition(opt) : Type Directives(Const)(opt)
 --
 fieldDefinition :: Parse (Value s) => Parser (FieldDefinition OUT s)
-fieldDefinition = label "FieldDefinition" $ do
-  fieldDescription <- optDescription
-  fieldName <- parseName
-  fieldContent <- optional (FieldArgs <$> argumentsDefinition)
-  symbol ':'
-  fieldType <- parseType
-  fieldDirectives <- optionalDirectives
-  pure FieldDefinition {..}
+fieldDefinition =
+  label "FieldDefinition" $
+    mkField
+      <$> optDescription
+      <*> parseName
+      <*> optional (FieldArgs <$> argumentsDefinition)
+      <*> (colon *> parseType)
+      <*> optionalDirectives
 
+mkField ::
+  Maybe Description ->
+  FieldName ->
+  Maybe (FieldContent TRUE cat s) ->
+  TypeRef ->
+  [Directive s] ->
+  FieldDefinition cat s
+mkField fieldDescription fieldName fieldContent fieldType fieldDirectives =
+  FieldDefinition {..}
+
 -- InputFieldsDefinition : https://graphql.github.io/graphql-spec/June2018/#sec-Language.Directives
 --   InputFieldsDefinition:
 --     { InputValueDefinition(list) }
@@ -154,12 +166,12 @@
 --
 -- @ Name Arguments[Const](opt)
 directive :: Parse (Value s) => Parser (Directive s)
-directive = label "Directive" $ do
-  directivePosition <- getLocation
-  symbol '@'
-  directiveName <- parseName
-  directiveArgs <- maybeArguments
-  pure Directive {..}
+directive =
+  label "Directive" $
+    Directive
+      <$> getLocation
+      <*> (at *> parseName)
+      <*> maybeArguments
 
 -- typDeclaration : Not in spec ,start part of type definitions
 --
@@ -167,18 +179,16 @@
 --   Description(opt) scalar Name
 --
 typeDeclaration :: FieldName -> Parser TypeName
-typeDeclaration kind = do
-  keyword kind
-  parseTypeName
+typeDeclaration kind = keyword kind *> parseTypeName
 
 parseOperationType :: Parser OperationType
-parseOperationType = label "OperationType" $ do
-  kind <-
-    (string "query" $> Query)
-      <|> (string "mutation" $> Mutation)
-      <|> (string "subscription" $> Subscription)
-  ignoredTokens
-  return kind
+parseOperationType =
+  label "OperationType" $
+    ( (string "query" $> Query)
+        <|> (string "mutation" $> Mutation)
+        <|> (string "subscription" $> Subscription)
+    )
+      <* ignoredTokens
 
 parseDirectiveLocation :: Parser DirectiveLocation
 parseDirectiveLocation =
@@ -209,4 +219,4 @@
     <* ignoredTokens
 
 toKeyword :: Show a => a -> Parser a
-toKeyword x = string (pack $ show x) $> x
+toKeyword x = string (fromString $ show x) $> x
diff --git a/src/Data/Morpheus/Parsing/Internal/Terms.hs b/src/Data/Morpheus/Parsing/Internal/Terms.hs
--- a/src/Data/Morpheus/Parsing/Internal/Terms.hs
+++ b/src/Data/Morpheus/Parsing/Internal/Terms.hs
@@ -1,13 +1,15 @@
+{-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TupleSections #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Internal.Terms
   ( name,
     variable,
+    varName,
     ignoredTokens,
     parseString,
-    -------------
     collection,
     setOf,
     uniqTuple,
@@ -15,7 +17,6 @@
     parseTypeCondition,
     spreadLiteral,
     parseNonNull,
-    parseAssignment,
     parseWrappedType,
     parseAlias,
     sepByAnd,
@@ -28,19 +29,26 @@
     parseNegativeSign,
     parseTypeName,
     pipe,
+    fieldNameColon,
+    brackets,
+    equal,
+    comma,
+    colon,
+    at,
   )
 where
 
-import Control.Monad ((>=>))
--- MORPHEUS
-import Control.Monad.Trans (lift)
-import Data.Functor (($>))
+import Data.ByteString.Lazy
+  ( pack,
+  )
 import Data.Morpheus.Internal.Utils
   ( Collection,
+    FromElems (..),
     KeyOf,
-    Listable (..),
     empty,
     fromElems,
+    fromLBS,
+    toLBS,
   )
 import Data.Morpheus.Parsing.Internal.Internal
   ( Parser,
@@ -57,26 +65,25 @@
     TypeRef (..),
     toHSWrappers,
   )
+import Data.Morpheus.Types.Internal.Resolving (Eventless)
 import Data.Text
-  ( pack,
-    strip,
+  ( strip,
   )
+import Relude hiding (empty, many)
 import Text.Megaparsec
   ( (<?>),
-    (<|>),
     between,
     choice,
     label,
     many,
     manyTill,
-    optional,
     sepBy,
     sepBy1,
     sepEndBy,
     skipManyTill,
     try,
   )
-import Text.Megaparsec.Char
+import Text.Megaparsec.Byte
   ( char,
     digitChar,
     letterChar,
@@ -88,7 +95,7 @@
   )
 
 parseNegativeSign :: Parser Bool
-parseNegativeSign = (char '-' $> True <* ignoredTokens) <|> pure False
+parseNegativeSign = (minus $> True <* ignoredTokens) <|> pure False
 
 parseName :: Parser FieldName
 parseName = FieldName <$> name
@@ -97,18 +104,57 @@
 parseTypeName = label "TypeName" $ TypeName <$> name
 
 keyword :: FieldName -> Parser ()
-keyword (FieldName word) = string word *> space1 *> ignoredTokens
+keyword (FieldName word) = string (toLBS word) *> space1 *> ignoredTokens
 
-symbol :: Char -> Parser ()
+symbol :: Word8 -> Parser ()
 symbol x = char x *> ignoredTokens
 
--- LITERALS
-braces :: Parser [a] -> Parser [a]
-braces =
-  between
-    (char '{' *> ignoredTokens)
-    (char '}' *> ignoredTokens)
+-- braces: {}
+braces :: Parser a -> Parser a
+braces = between (symbol 123) (symbol 125)
 
+-- brackets: []
+brackets :: Parser a -> Parser a
+brackets = between (symbol 91) (symbol 93)
+
+-- parens : '()'
+parens :: Parser a -> Parser a
+parens = between (symbol 40) (symbol 41)
+
+-- underscore : '_'
+underscore :: Parser Word8
+underscore = char 95
+
+comma :: Parser ()
+comma = label "," $ char 44 *> space
+
+-- dollar :: $
+dollar :: Parser ()
+dollar = label "$" $ symbol 36
+
+-- equal :: '='
+equal :: Parser ()
+equal = label "=" $ symbol 61
+
+-- colon :: ':'
+colon :: Parser ()
+colon = label ":" $ symbol 58
+
+-- minus: '-'
+minus :: Parser ()
+minus = label "-" $ symbol 45
+
+-- verticalPipe: '|'
+verticalPipe :: Parser ()
+verticalPipe = label "|" $ symbol 124
+
+ampersand :: Parser ()
+ampersand = label "&" $ symbol 38
+
+-- at: '@'
+at :: Parser ()
+at = label "@" $ symbol 64
+
 -- PRIMITIVE
 ------------------------------------
 
@@ -118,35 +164,37 @@
 --  NameStart NameContinue[list,opt]
 --
 name :: Parser Token
-name = label "Name" $ do
-  start <- nameStart
-  continue <- nameContinue
-  ignoredTokens
-  pure $ pack (start : continue)
+name =
+  label "Name" $
+    fromLBS . pack
+      <$> ((:) <$> nameStart <*> nameContinue)
+      <* ignoredTokens
 
 -- NameStart::
 --   Letter
 --   _
-nameStart :: Parser Char
-nameStart = letterChar <|> char '_'
+nameStart :: Parser Word8
+nameStart = letterChar <|> underscore
 
 --  NameContinue::
 --   Letter
 --   Digit
-nameContinue :: Parser String
-nameContinue = many (letterChar <|> char '_' <|> digitChar)
+nameContinue :: Parser [Word8]
+nameContinue = many (letterChar <|> underscore <|> digitChar)
 
+varName :: Parser FieldName
+varName = dollar *> parseName <* ignoredTokens
+
 -- Variable : https://graphql.github.io/graphql-spec/June2018/#Variable
 --
 -- Variable :  $Name
 --
 variable :: Parser Ref
-variable = label "variable" $ do
-  refPosition <- getLocation
-  _ <- char '$'
-  refName <- parseName
-  ignoredTokens
-  pure $ Ref {refName, refPosition}
+variable =
+  label "variable" $
+    flip Ref
+      <$> getLocation
+      <*> varName
 
 -- Descriptions: https://graphql.github.io/graphql-spec/June2018/#Description
 --
@@ -165,39 +213,39 @@
 blockString = stringWith (string "\"\"\"") (printChar <|> newline)
 
 singleLineString :: Parser Token
-singleLineString = stringWith (char '"') escapedChar
+singleLineString = stringWith (string "\"") escapedChar
 
-stringWith :: Parser quote -> Parser Char -> Parser Token
+stringWith :: Parser quote -> Parser Word8 -> Parser Token
 stringWith quote parser =
-  pack
+  fromLBS . pack
     <$> ( quote
             *> manyTill parser quote
             <* ignoredTokens
         )
 
-escapedChar :: Parser Char
+escapedChar :: Parser Word8
 escapedChar = label "EscapedChar" $ printChar >>= handleEscape
 
-handleEscape :: Char -> Parser Char
-handleEscape '\\' = choice escape
+handleEscape :: Word8 -> Parser Word8
+handleEscape 92 = choice escape
 handleEscape x = pure x
 
-escape :: [Parser Char]
-escape = map escapeCh escapeOptions
+escape :: [Parser Word8]
+escape = escapeCh <$> escapeOptions
   where
-    escapeCh :: (Char, Char) -> Parser Char
+    escapeCh :: (Word8, Word8) -> Parser Word8
     escapeCh (code, replacement) = char code $> replacement
 
-escapeOptions :: [(Char, Char)]
+escapeOptions :: [(Word8, Word8)]
 escapeOptions =
-  [ ('b', '\b'),
-    ('n', '\n'),
-    ('f', '\f'),
-    ('r', '\r'),
-    ('t', '\t'),
-    ('\\', '\\'),
-    ('\"', '\"'),
-    ('/', '/')
+  [ (98, 8),
+    (110, 10),
+    (102, 12),
+    (114, 13),
+    (116, 9),
+    (92, 92),
+    (34, 34),
+    (47, 47)
   ]
 
 -- Ignored Tokens : https://graphql.github.io/graphql-spec/June2018/#sec-Source-Text.Ignored-Tokens
@@ -215,61 +263,56 @@
       *> space
 
 ignored :: Parser ()
-ignored =
-  label "Ignored" $
-    comment
-      <|> comma
+ignored = label "Ignored" (comment <|> comma)
 
 comment :: Parser ()
 comment =
   label "Comment" $
-    char '#' *> skipManyTill printChar newline *> space
+    octothorpe *> skipManyTill printChar newline *> space
 
-comma :: Parser ()
-comma = label "Comma" $ char ',' *> space
+-- exclamationMark: '!'
+exclamationMark :: Parser ()
+exclamationMark = label "!" $symbol 33
 
+-- octothorpe: '#'
+octothorpe :: Parser ()
+octothorpe = label "#" $ char 35 $> ()
+
 ------------------------------------------------------------------------
 
 sepByAnd :: Parser a -> Parser [a]
-sepByAnd entry = entry `sepBy` (optional (symbol '&') *> ignoredTokens)
+sepByAnd entry = entry `sepBy` (optional ampersand *> ignoredTokens)
 
 pipe :: Parser a -> Parser [a]
-pipe x = optional (symbol '|') *> (x `sepBy1` symbol '|')
+pipe x = optional verticalPipe *> (x `sepBy1` verticalPipe)
 
 -----------------------------
 collection :: Parser a -> Parser [a]
 collection entry = braces (entry `sepEndBy` ignoredTokens)
 
-setOf :: (Listable a coll, KeyOf k a) => Parser a -> Parser coll
+setOf :: (FromElems Eventless a coll, KeyOf k a) => Parser a -> Parser coll
 setOf = collection >=> lift . fromElems
 
 optionalCollection :: Collection a c => Parser c -> Parser c
 optionalCollection x = x <|> pure empty
 
 parseNonNull :: Parser [DataTypeWrapper]
-parseNonNull = do
-  wrapper <- (char '!' $> [NonNullType]) <|> pure []
-  ignoredTokens
-  return wrapper
+parseNonNull =
+  (exclamationMark $> [NonNullType])
+    <|> pure []
 
-uniqTuple :: (Listable a coll, KeyOf k a) => Parser a -> Parser coll
+uniqTuple :: (FromElems Eventless a coll, KeyOf k a) => Parser a -> Parser coll
 uniqTuple parser =
   label "Tuple" $
-    between
-      (char '(' *> ignoredTokens)
-      (char ')' *> ignoredTokens)
+    parens
       (parser `sepBy` ignoredTokens <?> "empty Tuple value!")
       >>= lift . fromElems
 
-uniqTupleOpt :: (Listable a coll, Collection a coll, KeyOf k a) => Parser a -> Parser coll
+uniqTupleOpt :: (FromElems Eventless a coll, Collection a coll, KeyOf k a) => Parser a -> Parser coll
 uniqTupleOpt x = uniqTuple x <|> pure empty
 
-parseAssignment :: (Show a, Show b) => Parser a -> Parser b -> Parser (a, b)
-parseAssignment nameParser valueParser = label "assignment" $ do
-  name' <- nameParser
-  symbol ':'
-  value' <- valueParser
-  pure (name', value')
+fieldNameColon :: Parser FieldName
+fieldNameColon = parseName <* colon
 
 -- Type Conditions: https://graphql.github.io/graphql-spec/June2018/#sec-Type-Conditions
 --
@@ -277,16 +320,10 @@
 --    on NamedType
 --
 parseTypeCondition :: Parser TypeName
-parseTypeCondition = do
-  keyword "on"
-  parseTypeName
+parseTypeCondition = keyword "on" *> parseTypeName
 
 spreadLiteral :: Parser Position
-spreadLiteral = do
-  index <- getLocation
-  _ <- string "..."
-  space
-  return index
+spreadLiteral = getLocation <* string "..." <* space
 
 -- Field Alias : https://graphql.github.io/graphql-spec/June2018/#sec-Field-Alias
 -- Alias
@@ -294,19 +331,19 @@
 parseAlias :: Parser (Maybe FieldName)
 parseAlias = try (optional alias) <|> pure Nothing
   where
-    alias = label "alias" $ parseName <* char ':' <* ignoredTokens
+    alias = label "alias" fieldNameColon
 
 parseType :: Parser TypeRef
-parseType = do
-  (wrappers, typeConName) <- parseWrappedType
-  nonNull <- parseNonNull
-  pure
-    TypeRef
-      { typeConName,
-        typeArgs = Nothing,
-        typeWrappers = toHSWrappers $ nonNull ++ wrappers
-      }
+parseType = parseTypeW <$> parseWrappedType <*> parseNonNull
 
+parseTypeW :: ([DataTypeWrapper], TypeName) -> [DataTypeWrapper] -> TypeRef
+parseTypeW (wrappers, typeConName) nonNull =
+  TypeRef
+    { typeConName,
+      typeArgs = Nothing,
+      typeWrappers = toHSWrappers (nonNull <> wrappers)
+    }
+
 parseWrappedType :: Parser ([DataTypeWrapper], TypeName)
 parseWrappedType = (unwrapped <|> wrapped) <* ignoredTokens
   where
@@ -314,12 +351,7 @@
     unwrapped = ([],) <$> parseTypeName <* ignoredTokens
     ----------------------------------------------
     wrapped :: Parser ([DataTypeWrapper], TypeName)
-    wrapped =
-      between
-        (char '[' *> ignoredTokens)
-        (char ']' *> ignoredTokens)
-        ( do
-            (wrappers, tName) <- unwrapped <|> wrapped
-            nonNull' <- parseNonNull
-            return ((ListType : nonNull') ++ wrappers, tName)
-        )
+    wrapped = brackets (wrapAsList <$> (unwrapped <|> wrapped) <*> parseNonNull)
+
+wrapAsList :: ([DataTypeWrapper], TypeName) -> [DataTypeWrapper] -> ([DataTypeWrapper], TypeName)
+wrapAsList (wrappers, tName) nonNull = (ListType : nonNull <> wrappers, tName)
diff --git a/src/Data/Morpheus/Parsing/Internal/Value.hs b/src/Data/Morpheus/Parsing/Internal/Value.hs
--- a/src/Data/Morpheus/Parsing/Internal/Value.hs
+++ b/src/Data/Morpheus/Parsing/Internal/Value.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Internal.Value
   ( enumValue,
@@ -10,21 +10,18 @@
   )
 where
 
-import Data.Functor (($>))
---
--- MORPHEUS
 import Data.Morpheus.Parsing.Internal.Internal
   ( Parser,
   )
 import Data.Morpheus.Parsing.Internal.Terms
-  ( ignoredTokens,
-    parseAssignment,
-    parseName,
+  ( brackets,
+    equal,
+    fieldNameColon,
+    ignoredTokens,
     parseNegativeSign,
     parseString,
     parseTypeName,
     setOf,
-    symbol,
     variable,
   )
 import Data.Morpheus.Types.Internal.AST
@@ -37,18 +34,15 @@
     Value (..),
     decodeScientific,
   )
+import Relude
 import Text.Megaparsec
-  ( (<|>),
-    between,
-    label,
-    many,
+  ( label,
     sepBy,
   )
-import Text.Megaparsec.Char
-  ( char,
-    string,
+import Text.Megaparsec.Byte
+  ( string,
   )
-import Text.Megaparsec.Char.Lexer (scientific)
+import Text.Megaparsec.Byte.Lexer (scientific)
 
 valueNull :: Parser (Value a)
 valueNull = string "null" $> Null
@@ -60,35 +54,27 @@
     boolFalse = string "false" $> Scalar (Boolean False)
 
 valueNumber :: Parser (Value a)
-valueNumber = do
-  isNegative <- parseNegativeSign
-  Scalar . decodeScientific . signedNumber isNegative <$> scientific
+valueNumber =
+  Scalar . decodeScientific
+    <$> (signedNumber <$> parseNegativeSign <*> scientific)
   where
     signedNumber isNegative number
       | isNegative = - number
       | otherwise = number
 
 enumValue :: Parser (Value a)
-enumValue = do
-  enum <- Enum <$> parseTypeName
-  ignoredTokens
-  return enum
+enumValue = Enum <$> parseTypeName <* ignoredTokens
 
 stringValue :: Parser (Value a)
 stringValue = label "stringValue" $ Scalar . String <$> parseString
 
 listValue :: Parser a -> Parser [a]
-listValue parser =
-  label "ListValue" $
-    between
-      (char '[' *> ignoredTokens)
-      (char ']' *> ignoredTokens)
-      (parser `sepBy` (many (char ',') *> ignoredTokens))
+listValue parser = label "list" $ brackets (parser `sepBy` ignoredTokens)
 
 objectEntry :: Parser (Value a) -> Parser (ObjectEntry a)
-objectEntry parser = label "ObjectEntry" $ do
-  (entryName, entryValue) <- parseAssignment parseName parser
-  pure ObjectEntry {entryName, entryValue}
+objectEntry parser =
+  label "ObjectEntry" $
+    ObjectEntry <$> fieldNameColon <*> parser
 
 objectValue :: Parser (Value a) -> Parser (OrdMap FieldName (ObjectEntry a))
 objectValue = label "ObjectValue" . setOf . objectEntry
@@ -98,9 +84,7 @@
   valueNull <|> booleanValue <|> valueNumber <|> enumValue <|> stringValue
 
 parseDefaultValue :: Parser (Value s)
-parseDefaultValue = do
-  symbol '='
-  parseV
+parseDefaultValue = equal *> parseV
   where
     parseV :: Parser (Value s)
     parseV = structValue parseV
diff --git a/src/Data/Morpheus/Parsing/Request/Operation.hs b/src/Data/Morpheus/Parsing/Request/Operation.hs
--- a/src/Data/Morpheus/Parsing/Request/Operation.hs
+++ b/src/Data/Morpheus/Parsing/Request/Operation.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Request.Operation
   ( parseOperation,
@@ -18,11 +19,11 @@
     parseOperationType,
   )
 import Data.Morpheus.Parsing.Internal.Terms
-  ( parseName,
+  ( colon,
+    parseName,
     parseType,
-    symbol,
     uniqTupleOpt,
-    variable,
+    varName,
   )
 import Data.Morpheus.Parsing.Internal.Value
   ( parseDefaultValue,
@@ -34,15 +35,13 @@
   ( Operation (..),
     OperationType (..),
     RAW,
-    Ref (..),
     Variable (..),
     VariableContent (..),
   )
+import Relude hiding (empty)
 import Text.Megaparsec
   ( (<?>),
-    (<|>),
     label,
-    optional,
   )
 
 -- Variables :  https://graphql.github.io/graphql-spec/June2018/#VariableDefinition
@@ -51,12 +50,13 @@
 --    Variable : Type DefaultValue(opt)
 --
 variableDefinition :: Parser (Variable RAW)
-variableDefinition = label "VariableDefinition" $ do
-  (Ref variableName variablePosition) <- variable
-  symbol ':'
-  variableType <- parseType
-  variableValue <- DefaultValue <$> optional parseDefaultValue
-  pure Variable {..}
+variableDefinition =
+  label "VariableDefinition" $
+    Variable
+      <$> getLocation
+      <*> (varName <* colon)
+      <*> parseType
+      <*> (DefaultValue <$> optional parseDefaultValue)
 
 -- Operations : https://graphql.github.io/graphql-spec/June2018/#sec-Language.Operations
 --
@@ -66,14 +66,15 @@
 --   OperationType: one of
 --     query, mutation,    subscription
 parseOperationDefinition :: Parser (Operation RAW)
-parseOperationDefinition = label "OperationDefinition" $ do
-  operationPosition <- getLocation
-  operationType <- parseOperationType
-  operationName <- optional parseName
-  operationArguments <- uniqTupleOpt variableDefinition
-  operationDirectives <- optionalDirectives
-  operationSelection <- parseSelectionSet
-  pure Operation {..}
+parseOperationDefinition =
+  label "OperationDefinition" $
+    Operation
+      <$> getLocation
+      <*> parseOperationType
+      <*> optional parseName
+      <*> uniqTupleOpt variableDefinition
+      <*> optionalDirectives
+      <*> parseSelectionSet
 
 parseAnonymousQuery :: Parser (Operation RAW)
 parseAnonymousQuery = label "AnonymousQuery" $ do
diff --git a/src/Data/Morpheus/Parsing/Request/Parser.hs b/src/Data/Morpheus/Parsing/Request/Parser.hs
--- a/src/Data/Morpheus/Parsing/Request/Parser.hs
+++ b/src/Data/Morpheus/Parsing/Request/Parser.hs
@@ -1,17 +1,18 @@
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Request.Parser (parseGQL) where
 
 --
 -- MORPHEUS
-import Control.Monad.Trans (lift)
 import qualified Data.Aeson as Aeson
   ( Value (..),
   )
 import Data.HashMap.Lazy (toList)
 import Data.Morpheus.Internal.Utils
   ( fromElems,
+    toLBS,
   )
 import Data.Morpheus.Parsing.Internal.Internal
   ( Parser,
@@ -36,21 +37,30 @@
 import Data.Morpheus.Types.Internal.Resolving
   ( Eventless,
   )
+import Relude hiding
+  ( many,
+    toList,
+  )
 import Text.Megaparsec
   ( eof,
     label,
-    manyTill,
+    many,
   )
 
 request :: Parser GQLQuery
-request = label "GQLQuery" $ do
-  ignoredTokens
-  operation <- parseOperation
-  fragments <- manyTill parseFragmentDefinition eof >>= lift . fromElems
-  pure GQLQuery {operation, fragments, inputVariables = []}
+request =
+  label "GQLQuery" $
+    ( GQLQuery []
+        <$> (ignoredTokens *> parseOperation)
+        <*> (many parseFragmentDefinition >>= lift . fromElems)
+    )
+      <* ignoredTokens
+      <* eof
 
 parseGQL :: GQLRequest -> Eventless GQLQuery
-parseGQL GQLRequest {query, variables} = setVariables <$> processParser request query
+parseGQL GQLRequest {query, variables} =
+  setVariables
+    <$> processParser request (toLBS query)
   where
     setVariables root = root {inputVariables = toVariableMap variables}
     toVariableMap :: Maybe Aeson.Value -> [(FieldName, ResolvedValue)]
diff --git a/src/Data/Morpheus/Parsing/Request/Selection.hs b/src/Data/Morpheus/Parsing/Request/Selection.hs
--- a/src/Data/Morpheus/Parsing/Request/Selection.hs
+++ b/src/Data/Morpheus/Parsing/Request/Selection.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Parsing.Request.Selection
   ( parseSelectionSet,
@@ -39,9 +40,9 @@
     SelectionContent (..),
     SelectionSet,
   )
+import Relude
 import Text.Megaparsec
-  ( (<|>),
-    label,
+  ( label,
     try,
   )
 
@@ -61,7 +62,7 @@
     parseSelection =
       label "Selection" $
         try inlineFragment
-          <|> try spread
+          <|> spread
           <|> parseSelectionField
 
 -- Fields: https://graphql.github.io/graphql-spec/June2018/#sec-Language.Fields
@@ -72,14 +73,13 @@
 parseSelectionField :: Parser (Selection RAW)
 parseSelectionField =
   label "SelectionField" $
-    do
-      selectionPosition <- getLocation
-      selectionAlias <- parseAlias
-      selectionName <- parseName
-      selectionArguments <- maybeArguments
-      selectionDirectives <- optionalDirectives
-      selectionContent <- parseSelectionContent
-      pure Selection {..}
+    Selection
+      <$> getLocation
+      <*> parseAlias
+      <*> parseName
+      <*> maybeArguments
+      <*> optionalDirectives
+      <*> parseSelectionContent
 
 parseSelectionContent :: Parser (SelectionContent RAW)
 parseSelectionContent =
@@ -109,7 +109,7 @@
 --   fragment FragmentName TypeCondition Directives(opt) SelectionSet
 --
 parseFragmentDefinition :: Parser (Fragment RAW)
-parseFragmentDefinition = label "FragmentDefinition" $ do
+parseFragmentDefinition = label "Fragment" $ do
   keyword "fragment"
   fragmentPosition <- getLocation
   fragmentName <- parseName
diff --git a/src/Data/Morpheus/QuasiQuoter.hs b/src/Data/Morpheus/QuasiQuoter.hs
--- a/src/Data/Morpheus/QuasiQuoter.hs
+++ b/src/Data/Morpheus/QuasiQuoter.hs
@@ -4,6 +4,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.QuasiQuoter
   ( gql,
@@ -13,10 +14,18 @@
   )
 where
 
+import Data.ByteString.Lazy.Char8
+  ( ByteString,
+    pack,
+    unpack,
+  )
 import Data.Morpheus.Error
   ( gqlWarnings,
     renderGQLErrors,
   )
+import Data.Morpheus.Internal.Utils
+  ( fromLBS,
+  )
 import Data.Morpheus.Parser
   ( parseRequest,
     parseTypeSystemDefinition,
@@ -25,13 +34,9 @@
 import Data.Morpheus.Types.Internal.Resolving
   ( Result (..),
   )
-import Data.Text
-  ( Text,
-    pack,
-    unpack,
-  )
 import Language.Haskell.TH
 import Language.Haskell.TH.Quote
+import Relude hiding (ByteString)
 
 gql :: QuasiQuoter
 gql =
@@ -43,9 +48,11 @@
     }
   where
     notHandled things =
-      error $ things ++ " are not supported by the GraphQL QuasiQuoter"
+      error $
+        things
+          <> " are not supported by the GraphQL QuasiQuoter"
 
-gqlExpression :: Text -> Q Exp
+gqlExpression :: ByteString -> Q Exp
 gqlExpression queryText = case parseRequest request of
   Failure errors -> fail (renderGQLErrors errors)
   Success {result, warnings} ->
@@ -54,7 +61,7 @@
     query = unpack queryText
     request =
       GQLRequest
-        { query = queryText,
+        { query = fromLBS queryText,
           operationName = Nothing,
           variables = Nothing
         }
@@ -69,9 +76,10 @@
     }
   where
     notHandled things =
-      error $ things ++ " are not supported by the GraphQL QuasiQuoter"
+      error $
+        things <> " are not supported by the GraphQL QuasiQuoter"
 
-dslExpression :: Text -> Q Exp
+dslExpression :: ByteString -> Q Exp
 dslExpression doc = case parseTypeSystemDefinition doc of
   Failure errors -> fail (renderGQLErrors errors)
   Success {result, warnings} ->
diff --git a/src/Data/Morpheus/Rendering/RenderGQL.hs b/src/Data/Morpheus/Rendering/RenderGQL.hs
--- a/src/Data/Morpheus/Rendering/RenderGQL.hs
+++ b/src/Data/Morpheus/Rendering/RenderGQL.hs
@@ -11,36 +11,44 @@
     renderEntry,
     space,
     Rendering,
+    fromText,
+    renderGQL,
+    intercalate,
+    renderInputSeq,
   )
 where
 
 -- MORPHEUS
 
 import qualified Data.Aeson as A
-import Data.Foldable (null)
-import Data.Functor ((<$>))
-import Data.Maybe (Maybe, maybe)
-import Data.Semigroup ((<>))
-import Data.Text
-  ( Text,
+import Data.ByteString.Lazy (ByteString)
+import qualified Data.ByteString.Lazy.Char8 as LB
+import Data.Foldable (foldl)
+import qualified Data.Text as T
+import Relude hiding
+  ( ByteString,
     intercalate,
-    pack,
   )
-import Data.Text.Encoding (decodeUtf8)
-import Data.ByteString.Lazy (toStrict)
-import Prelude
-  ( (.),
-    ($),
-    Bool (..),
-    Float,
-    Int,
-    fmap,
-    otherwise,
-    show,
-  )
 
-type Rendering = Text
+renderGQL :: RenderGQL a => a -> ByteString
+renderGQL x = runRendering (render x) 0
 
+newtype Rendering = Rendering
+  { runRendering :: Int -> ByteString
+  }
+
+instance Semigroup Rendering where
+  Rendering f <> Rendering g = Rendering $ \x -> f x <> g x
+
+instance IsString Rendering where
+  fromString = Rendering . const . LB.pack
+
+fromShow :: Show a => a -> Rendering
+fromShow = fromString . show
+
+fromText :: Text -> Rendering
+fromText = fromString . T.unpack
+
 class RenderGQL a where
   render :: a -> Rendering
 
@@ -50,39 +58,49 @@
   where
   render = maybe "" render
 
+instance RenderGQL ByteString where
+  render = Rendering . const
+
 instance RenderGQL Int where
-  render = pack . show
+  render = fromShow
 
 instance RenderGQL Float where
-  render = pack . show
+  render = fromShow
 
 instance RenderGQL Text where
-  render = pack . show
+  render = fromShow
 
 instance RenderGQL Bool where
   render True = "true"
   render False = "false"
 
 instance RenderGQL A.Value where
-  render x = decodeUtf8 $ toStrict $ A.encode x
-
-indent :: Rendering
-indent = "  "
+  render = render . A.encode
 
 space :: Rendering
 space = " "
 
 newline :: Rendering
-newline = "\n"
+newline = "\n" <> Rendering indentionSize
 
-indentNewline :: Rendering
-indentNewline = newline <> indent
+indentionSize :: (Semigroup a, IsString a) => Int -> a
+indentionSize 0 = ""
+indentionSize n = stimes (n * 2) " "
 
+indent :: Rendering -> Rendering
+indent (Rendering f) = Rendering $ f . (+ 1)
+
+intercalate :: Rendering -> [Rendering] -> Rendering
+intercalate (Rendering f) fs = Rendering $ \x -> LB.intercalate (f x) (map ((x &) . runRendering) fs)
+
+indentNewline :: Rendering -> Rendering
+indentNewline rendering = indent (newline <> rendering)
+
 renderAtNewLine :: (RenderGQL a) => [a] -> Rendering
-renderAtNewLine elems = indentNewline <> intercalate indentNewline (fmap render elems)
+renderAtNewLine elems = indentNewline $ intercalate newline (fmap render elems)
 
 renderObject :: (RenderGQL a) => [a] -> Rendering
-renderObject fields = " {" <> renderAtNewLine fields <> "\n}"
+renderObject fields = space <> "{" <> renderAtNewLine fields <> newline <> "}"
 
 renderMembers :: (RenderGQL a) => [a] -> Rendering
 renderMembers members = intercalate (space <> "|" <> space) (fmap render members)
@@ -98,3 +116,13 @@
   value ->
   Rendering
 renderEntry name value = render name <> ": " <> render value
+
+renderInputSeq ::
+  (Foldable t, RenderGQL a) =>
+  t a ->
+  Rendering
+renderInputSeq = fromMaybe "" . foldl renderValue Nothing
+  where
+    renderValue :: RenderGQL a => Maybe Rendering -> a -> Maybe Rendering
+    renderValue Nothing value = Just (render value)
+    renderValue (Just txt) value = Just (txt <> ", " <> render value)
diff --git a/src/Data/Morpheus/Rendering/RenderIntrospection.hs b/src/Data/Morpheus/Rendering/RenderIntrospection.hs
--- a/src/Data/Morpheus/Rendering/RenderIntrospection.hs
+++ b/src/Data/Morpheus/Rendering/RenderIntrospection.hs
@@ -14,21 +14,14 @@
   )
 where
 
--- Morpheus
-
-import Control.Applicative (pure)
-import Control.Monad (Monad (..))
-import Data.Foldable (foldr)
-import Data.Functor ((<$>))
-import Data.List (filter)
-import Data.Maybe (Maybe (..), isJust, maybe)
 import Data.Morpheus.Internal.Utils
   ( Failure,
     elems,
     failure,
+    fromLBS,
     selectBy,
   )
-import qualified Data.Morpheus.Rendering.RenderGQL as GQL (RenderGQL (..))
+import qualified Data.Morpheus.Rendering.RenderGQL as GQL
 import Data.Morpheus.Types.Internal.AST
   ( ANY,
     ArgumentsDefinition (..),
@@ -77,15 +70,8 @@
     mkString,
     unsafeInternalContext,
   )
-import Data.Semigroup ((<>))
 import Data.Text (pack)
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    (.),
-    Bool,
-    show,
-  )
+import Relude
 
 class
   ( Monad m,
@@ -133,7 +119,7 @@
   render = pure . mkBoolean
 
 instance RenderIntrospection TypeKind where
-  render = pure . mkString . GQL.render
+  render = pure . mkString . fromLBS . GQL.renderGQL
 
 instance RenderIntrospection (DirectiveDefinition VALID) where
   render
@@ -217,7 +203,7 @@
 
 instance RenderIntrospection (Value VALID) where
   render Null = pure mkNull
-  render x = pure $ mkString $ GQL.render x
+  render x = pure $ mkString $ fromLBS $ GQL.renderGQL x
 
 instance
   RenderIntrospection
diff --git a/src/Data/Morpheus/Schema/DSL.hs b/src/Data/Morpheus/Schema/DSL.hs
--- a/src/Data/Morpheus/Schema/DSL.hs
+++ b/src/Data/Morpheus/Schema/DSL.hs
@@ -5,9 +5,14 @@
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Schema.DSL (dsl) where
 
+import Data.ByteString.Lazy.Char8
+  ( ByteString,
+    pack,
+  )
 import Data.Morpheus.Error
   ( gqlWarnings,
     renderGQLErrors,
@@ -18,12 +23,9 @@
 import Data.Morpheus.Types.Internal.Resolving
   ( Result (..),
   )
-import Data.Text
-  ( Text,
-    pack,
-  )
 import Language.Haskell.TH
 import Language.Haskell.TH.Quote
+import Relude hiding (ByteString)
 
 dsl :: QuasiQuoter
 dsl =
@@ -34,10 +36,9 @@
       quoteDec = notHandled "Declarations"
     }
   where
-    notHandled things =
-      error $ things ++ " are not supported by the GraphQL QuasiQuoter"
+    notHandled things = error $ things <> " are not supported by the GraphQL QuasiQuoter"
 
-dslExpression :: Text -> Q Exp
+dslExpression :: ByteString -> Q Exp
 dslExpression doc = case parseSchema doc of
   Failure errors -> fail (renderGQLErrors errors)
   Success {result, warnings} -> gqlWarnings warnings >> [|result|]
diff --git a/src/Data/Morpheus/Schema/Schema.hs b/src/Data/Morpheus/Schema/Schema.hs
--- a/src/Data/Morpheus/Schema/Schema.hs
+++ b/src/Data/Morpheus/Schema/Schema.hs
@@ -8,36 +8,21 @@
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Schema.Schema
   ( internalSchema,
   )
 where
 
--- MORPHEUS
-
 import Data.Morpheus.Schema.DSL (dsl)
 import Data.Morpheus.Types.Internal.AST
-  ( DataFingerprint (..),
-    Schema (..),
-    TypeDefinition (..),
-    internalFingerprint,
+  ( Schema,
   )
 
-toInternalSchema :: Schema s -> Schema s
-toInternalSchema Schema {..} = Schema {types = fmap toInternalType types, ..}
-
-toInternalType :: TypeDefinition a s -> TypeDefinition a s
-toInternalType
-  tyDef@TypeDefinition
-    { typeFingerprint = DataFingerprint name xs
-    } =
-    tyDef {typeFingerprint = internalFingerprint name xs}
-
 internalSchema :: Schema s
 internalSchema =
-  toInternalSchema
-    [dsl|
+  [dsl|
 
 """
 Directs the executor to skip this field or fragment when the `if` argument is true.
diff --git a/src/Data/Morpheus/Schema/SchemaAPI.hs b/src/Data/Morpheus/Schema/SchemaAPI.hs
--- a/src/Data/Morpheus/Schema/SchemaAPI.hs
+++ b/src/Data/Morpheus/Schema/SchemaAPI.hs
@@ -3,16 +3,16 @@
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Schema.SchemaAPI
   ( withSystemFields,
   )
 where
 
--- MORPHEUS
+import Data.Morpheus.Ext.SemigroupM ((<:>))
 import Data.Morpheus.Internal.Utils
-  ( (<.>),
-    elems,
+  ( elems,
     empty,
     selectOr,
   )
@@ -45,6 +45,7 @@
     mkObject,
     withArguments,
   )
+import Relude hiding (empty)
 
 resolveTypes ::
   Monad m => Schema VALID -> Resolver QUERY e m (ResModel QUERY e m)
@@ -103,6 +104,6 @@
 withSystemFields schema RootResModel {query, ..} =
   pure $
     RootResModel
-      { query = query >>= (<.> schemaAPI schema),
+      { query = query >>= (<:> schemaAPI schema),
         ..
       }
diff --git a/src/Data/Morpheus/Types/App.hs b/src/Data/Morpheus/Types/App.hs
--- a/src/Data/Morpheus/Types/App.hs
+++ b/src/Data/Morpheus/Types/App.hs
@@ -16,14 +16,10 @@
   )
 where
 
-import Control.Applicative (Applicative (..))
-import Control.Monad (Monad)
 import qualified Data.Aeson as A
-import qualified Data.ByteString.Lazy.Char8 as LBS
-import Data.Functor ((<$>), Functor (..))
+import Data.Morpheus.Ext.SemigroupM ((<:>))
 import Data.Morpheus.Internal.Utils
-  ( (<:>),
-    empty,
+  ( empty,
     failure,
     prop,
   )
@@ -66,15 +62,7 @@
   )
 import Data.Morpheus.Types.Internal.Stitching (Stitching (..))
 import Data.Morpheus.Validation.Document.Validation (ValidateSchema (..))
-import Data.Semigroup (Semigroup (..))
-import Data.Text (pack)
-import Prelude
-  ( ($),
-    (.),
-    Bool (..),
-    Maybe (..),
-    const,
-  )
+import Relude hiding (empty)
 
 mkApp :: ValidateSchema s => Schema s -> RootResModel e m -> App e m
 mkApp appSchema appResolvers =
@@ -89,7 +77,7 @@
 
 instance RenderGQL (App e m) where
   render App {app} = render app
-  render FailApp {appErrors} = pack $ LBS.unpack (A.encode appErrors)
+  render FailApp {appErrors} = render (A.encode appErrors)
 
 instance Monad m => Semigroup (App e m) where
   (FailApp err1) <> (FailApp err2) = FailApp (err1 <> err2)
@@ -133,7 +121,7 @@
 validateReq inputSchema config request = cleanEvents $ ResultT $ pure $ do
   validSchema <- validateSchema True config inputSchema
   schema <- internalSchema <:> validSchema
-  operation <- parseRequestWith config schema request
+  operation <- parseRequestWith config validSchema request
   pure $
     ResolverContext
       { schema,
diff --git a/src/Data/Morpheus/Types/GQLScalar.hs b/src/Data/Morpheus/Types/GQLScalar.hs
--- a/src/Data/Morpheus/Types/GQLScalar.hs
+++ b/src/Data/Morpheus/Types/GQLScalar.hs
@@ -12,9 +12,7 @@
   )
 where
 
-import Control.Monad.Fail (MonadFail (..))
 import qualified Data.Aeson as A
-import Data.Either (Either (..), either)
 import Data.Morpheus.Types.Internal.AST
   ( ScalarDefinition (..),
     ScalarValue (..),
@@ -22,18 +20,8 @@
     Value (..),
     replaceValue,
   )
-import Data.Text (Text, unpack)
-import Prelude
-  ( ($),
-    (.),
-    Bool,
-    Float,
-    Int,
-    Monad,
-    fromInteger,
-    pure,
-    toInteger,
-  )
+import Data.Text (unpack)
+import Relude
 
 toScalar :: ValidValue -> Either Text ScalarValue
 toScalar (Scalar x) = pure x
diff --git a/src/Data/Morpheus/Types/ID.hs b/src/Data/Morpheus/Types/ID.hs
--- a/src/Data/Morpheus/Types/ID.hs
+++ b/src/Data/Morpheus/Types/ID.hs
@@ -17,18 +17,8 @@
 import Data.Morpheus.Types.Internal.AST
   ( ScalarValue (..),
   )
-import Data.Text
-  ( Text,
-    pack,
-  )
-import GHC.Generics (Generic)
-import Prelude
-  ( ($),
-    Either (..),
-    Eq,
-    Show (..),
-    pure,
-  )
+import Data.Text (pack)
+import Relude
 
 -- | default GraphQL type,
 -- parses only 'String' and 'Int' values,
diff --git a/src/Data/Morpheus/Types/IO.hs b/src/Data/Morpheus/Types/IO.hs
--- a/src/Data/Morpheus/Types/IO.hs
+++ b/src/Data/Morpheus/Types/IO.hs
@@ -15,10 +15,6 @@
   )
 where
 
--- MORPHEUS
-
-import Control.Applicative (Applicative (..))
-import Control.Monad.Fail (fail)
 import Data.Aeson
   ( (.:?),
     (.=),
@@ -40,30 +36,22 @@
   ( eitherDecodeWith,
     jsonNoDup,
   )
-import Data.ByteString (ByteString)
 import qualified Data.ByteString.Lazy.Char8 as LB
   ( ByteString,
     fromStrict,
     toStrict,
   )
-import Data.Either (Either (..))
-import Data.Functor ((<$>), fmap)
 import qualified Data.HashMap.Lazy as LH
-  ( toList,
-  )
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Error.Utils (badRequestError)
 import Data.Morpheus.Types.Internal.AST
   ( FieldName,
     GQLError (..),
-    Token,
     ValidValue,
   )
 import Data.Morpheus.Types.Internal.Resolving.Core
   ( Failure (..),
     Result (..),
   )
-import Data.Text (Text)
 import qualified Data.Text.Lazy as LT
   ( Text,
     fromStrict,
@@ -73,8 +61,10 @@
   ( decodeUtf8,
     encodeUtf8,
   )
-import GHC.Generics (Generic)
-import Prelude (($), (.), Show, String)
+import Relude hiding
+  ( decodeUtf8,
+    encodeUtf8,
+  )
 
 decodeNoDup :: Failure String m => LB.ByteString -> m GQLRequest
 decodeNoDup str = case eitherDecodeWith jsonNoDup ifromJSON str of
@@ -102,7 +92,7 @@
   mapAPI api = fmap LT.toStrict . mapAPI api . LT.fromStrict
 
 renderResponse :: Result e ValidValue -> GQLResponse
-renderResponse (Failure errors) = Errors errors
+renderResponse (Failure errors) = Errors (sortOn locations errors)
 renderResponse Success {result} = Data result
 
 instance FromJSON a => FromJSON (JSONResponse a) where
@@ -118,8 +108,8 @@
 
 -- | GraphQL HTTP Request Body
 data GQLRequest = GQLRequest
-  { query :: Token,
-    operationName :: Maybe FieldName,
+  { operationName :: Maybe FieldName,
+    query :: Text,
     variables :: Maybe Aeson.Value
   }
   deriving (Show, Generic, FromJSON, ToJSON)
diff --git a/src/Data/Morpheus/Types/Internal/AST.hs b/src/Data/Morpheus/Types/Internal/AST.hs
--- a/src/Data/Morpheus/Types/Internal/AST.hs
+++ b/src/Data/Morpheus/Types/Internal/AST.hs
@@ -5,8 +5,7 @@
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Types.Internal.AST
-  ( -- BASE
-    Ref (..),
+  ( Ref (..),
     Position (..),
     Message,
     anonymousRef,
@@ -16,7 +15,6 @@
     CONST,
     VALID,
     RAW,
-    -- VALUE
     Value (..),
     ScalarValue (..),
     Object,
@@ -33,7 +31,6 @@
     ResolvedValue,
     splitDuplicates,
     removeDuplicates,
-    -- Selection
     Argument (..),
     Arguments,
     SelectionSet,
@@ -41,13 +38,11 @@
     Selection (..),
     Fragments,
     Fragment (..),
-    -- OPERATION
     Operation (..),
     Variable (..),
     VariableDefinitions,
     DefaultValue,
     getOperationName,
-    -- DSL
     ScalarDefinition (..),
     DataEnum,
     FieldsDefinition,
@@ -61,7 +56,6 @@
     Schema (..),
     DataTypeWrapper (..),
     TypeKind (..),
-    DataFingerprint (..),
     TypeWrapper (..),
     TypeRef (..),
     DataEnumValue (..),
@@ -96,9 +90,7 @@
     lookupDeprecated,
     lookupDeprecatedReason,
     lookupWith,
-    -- Template Haskell
     hsTypeName,
-    -- LOCAL
     GQLQuery (..),
     Variables,
     unsafeFromFields,
@@ -108,7 +100,6 @@
     ObjectEntry (..),
     UnionTag (..),
     __inputname,
-    internalFingerprint,
     ANY,
     IN,
     OUT,
@@ -125,7 +116,6 @@
     toFieldName,
     TypeNameRef (..),
     isEnum,
-    Fields (..),
     fieldsToArguments,
     mkCons,
     mkConsEnum,
@@ -166,18 +156,16 @@
     possibleTypes,
     possibleInterfaceTypes,
     mkField,
-    isTypeDefined,
     safeDefineType,
+    defineSchemaWith,
   )
 where
 
 import Data.HashMap.Lazy (HashMap)
--- Morpheus
-
+import Data.Morpheus.Ext.OrdMap
 import Data.Morpheus.Types.Internal.AST.Base
 import Data.Morpheus.Types.Internal.AST.DirectiveLocation (DirectiveLocation (..))
 import Data.Morpheus.Types.Internal.AST.Fields
-import Data.Morpheus.Types.Internal.AST.OrdMap
 import Data.Morpheus.Types.Internal.AST.Selection
 import Data.Morpheus.Types.Internal.AST.Stage
 import Data.Morpheus.Types.Internal.AST.TH
@@ -190,8 +178,8 @@
 type Variables = HashMap FieldName ResolvedValue
 
 data GQLQuery = GQLQuery
-  { fragments :: Fragments RAW,
+  { inputVariables :: [(FieldName, ResolvedValue)],
     operation :: Operation RAW,
-    inputVariables :: [(FieldName, ResolvedValue)]
+    fragments :: Fragments RAW
   }
   deriving (Show, Lift)
diff --git a/src/Data/Morpheus/Types/Internal/AST/Base.hs b/src/Data/Morpheus/Types/Internal/AST/Base.hs
--- a/src/Data/Morpheus/Types/Internal/AST/Base.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/Base.hs
@@ -25,7 +25,6 @@
     MUTATION,
     SUBSCRIPTION,
     TypeKind (..),
-    DataFingerprint (..),
     DataTypeWrapper (..),
     Token,
     anonymousRef,
@@ -44,7 +43,6 @@
     removeDuplicates,
     GQLError (..),
     GQLErrors,
-    internalFingerprint,
     TRUE,
     FALSE,
     TypeName (..),
@@ -72,16 +70,13 @@
     Value,
     encode,
   )
-import Data.ByteString.Lazy.Char8 (ByteString, unpack)
+import Data.ByteString.Lazy (ByteString)
 import Data.Char (toLower)
-import Data.Hashable (Hashable)
-import Data.Maybe (Maybe (..), maybeToList)
-import Data.Morpheus.Rendering.RenderGQL (RenderGQL (..))
-import Data.Semigroup (Semigroup (..))
-import Data.String (IsString (..))
-import Data.Text (Text, intercalate, pack)
+import Data.Morpheus.Rendering.RenderGQL (RenderGQL (..), Rendering, fromText, renderGQL)
+import Data.Text (intercalate, pack)
 import qualified Data.Text as T
-import GHC.Generics (Generic)
+import qualified Data.Text.Lazy as LT
+import Data.Text.Lazy.Encoding (decodeUtf8)
 import Language.Haskell.TH
   ( ExpQ,
     stringE,
@@ -92,23 +87,10 @@
     TExp,
     unsafeTExpCoerce,
   )
-import Prelude
-  ( ($),
-    (&&),
-    (.),
-    Bool (..),
-    Eq (..),
-    Functor (..),
-    Int,
-    Ord (..),
-    Show (..),
-    String,
-    elem,
-    fst,
-    id,
-    not,
-    notElem,
-    otherwise,
+import Relude hiding
+  ( ByteString,
+    decodeUtf8,
+    intercalate,
   )
 
 type TRUE = 'True
@@ -189,7 +171,7 @@
   msg = Message . pack
 
 instance Msg ByteString where
-  msg = msg . unpack
+  msg = Message . LT.toStrict . decodeUtf8
 
 instance Msg Text where
   msg = Message
@@ -219,7 +201,7 @@
   msg FieldName {readName} = Message $ "\"" <> readName <> "\""
 
 instance RenderGQL FieldName where
-  render = readName
+  render = fromText . readName
 
 intercalateName :: FieldName -> [FieldName] -> FieldName
 intercalateName (FieldName x) = FieldName . intercalate x . fmap readName
@@ -259,7 +241,7 @@
   msg TypeName {readTypeName} = Message $ "\"" <> readTypeName <> "\""
 
 instance RenderGQL TypeName where
-  render = readTypeName
+  render = fromText . readTypeName
 
 -- Description
 type Description = Text
@@ -270,6 +252,9 @@
   }
   deriving (Show, Generic, FromJSON, ToJSON, Lift)
 
+instance Ord Position where
+  compare x y = compare (line x) (line y)
+
 -- Positions 2 Value withs same structire
 -- but different Positions should be Equal
 instance Eq Position where
@@ -283,11 +268,6 @@
 
 type GQLErrors = [GQLError]
 
-data DataFingerprint = DataFingerprint TypeName [String] deriving (Show, Eq, Ord, Lift)
-
-internalFingerprint :: TypeName -> [String] -> DataFingerprint
-internalFingerprint name = DataFingerprint ("SYSTEM.INTERNAL." <> name)
-
 data OperationType
   = Query
   | Subscription
@@ -295,7 +275,7 @@
   deriving (Show, Eq, Lift, Generic, Hashable)
 
 instance RenderGQL OperationType where
-  render = pack . fmap toLower . show
+  render = fromString . fmap toLower . show
 
 instance Msg OperationType where
   msg Query = msg ("query" :: TypeName)
@@ -351,7 +331,7 @@
   render TypeRef {typeConName, typeWrappers} = renderWrapped typeConName typeWrappers
 
 instance Msg TypeRef where
-  msg = msg . FieldName . render
+  msg = msg . FieldName . LT.toStrict . decodeUtf8 . renderGQL
 
 -- Kind
 -----------------------------------------------------------------------------------
@@ -438,7 +418,7 @@
 toHSWrappers [] = [TypeMaybe]
 toHSWrappers [NonNullType] = []
 
-renderWrapped :: RenderGQL a => a -> [TypeWrapper] -> Token
+renderWrapped :: RenderGQL a => a -> [TypeWrapper] -> Rendering
 renderWrapped x wrappers = showGQLWrapper (toGQLWrapper wrappers)
   where
     showGQLWrapper [] = render x
diff --git a/src/Data/Morpheus/Types/Internal/AST/DirectiveLocation.hs b/src/Data/Morpheus/Types/Internal/AST/DirectiveLocation.hs
--- a/src/Data/Morpheus/Types/Internal/AST/DirectiveLocation.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/DirectiveLocation.hs
@@ -8,7 +8,8 @@
 
 import Data.Morpheus.Types.Internal.AST.Base (Msg (..))
 import Language.Haskell.TH.Syntax (Lift)
-import Prelude ((.), Eq, Show (..))
+import Relude hiding (Show, show)
+import Prelude (Show (..))
 
 data DirectiveLocation
   = QUERY
diff --git a/src/Data/Morpheus/Types/Internal/AST/Fields.hs b/src/Data/Morpheus/Types/Internal/AST/Fields.hs
--- a/src/Data/Morpheus/Types/Internal/AST/Fields.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/Fields.hs
@@ -1,10 +1,8 @@
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE DeriveLift #-}
-{-# LANGUAGE DeriveTraversable #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GADTs #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
@@ -13,7 +11,6 @@
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Types.Internal.AST.Fields
@@ -23,7 +20,6 @@
     ArgumentsDefinition (..),
     FieldDefinition (..),
     FieldsDefinition,
-    Fields (..),
     FieldContent (..),
     InputFieldsDefinition,
     DirectiveDefinitions,
@@ -39,31 +35,35 @@
     mkInputValue,
     mkObjectField,
     mkField,
+    renderArgumentValues,
+    renderDirectives,
   )
 where
 
--- MORPHEUS
-
-import Data.Foldable (Foldable)
-import Data.Functor ((<$>), Functor (..))
-import Data.List (find)
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Error.NameCollision
   ( NameCollision (..),
   )
+import Data.Morpheus.Ext.OrdMap
+  ( OrdMap,
+    unsafeFromList,
+  )
 import Data.Morpheus.Internal.Utils
   ( Collection (..),
+    Elems (..),
+    Failure,
+    FromElems (..),
     KeyOf (..),
-    Listable (..),
-    Merge (..),
     Selectable (..),
-    elems,
+    toPair,
   )
 import Data.Morpheus.Rendering.RenderGQL
   ( RenderGQL (..),
+    Rendering,
+    intercalate,
     renderArguments,
     renderEntry,
     renderObject,
+    space,
   )
 import Data.Morpheus.Types.Internal.AST.Base
   ( Description,
@@ -77,14 +77,11 @@
     TypeRef (..),
     TypeWrapper (..),
     ValidationError (..),
+    ValidationErrors,
     msgValidation,
     sysFields,
   )
 import Data.Morpheus.Types.Internal.AST.DirectiveLocation (DirectiveLocation)
-import Data.Morpheus.Types.Internal.AST.OrdMap
-  ( OrdMap,
-    unsafeFromValues,
-  )
 import Data.Morpheus.Types.Internal.AST.Stage
   ( Stage,
   )
@@ -101,25 +98,15 @@
   ( ScalarValue (..),
     Value (..),
   )
-import Data.Semigroup (Semigroup ((<>)))
-import Data.Traversable (Traversable)
 import Instances.TH.Lift ()
 import Language.Haskell.TH.Syntax (Lift (..))
-import Prelude
-  ( ($),
-    (.),
-    Bool (..),
-    Eq,
-    Show,
-    filter,
-    notElem,
-  )
+import Relude hiding (empty, intercalate)
 
 -- scalar
 ------------------------------------------------------------------
 data Argument (valid :: Stage) = Argument
-  { argumentName :: FieldName,
-    argumentPosition :: Position,
+  { argumentPosition :: Position,
+    argumentName :: FieldName,
     argumentValue :: Value valid
   }
   deriving (Show, Eq, Lift)
@@ -140,11 +127,17 @@
 
 type Arguments (s :: Stage) = OrdMap FieldName (Argument s)
 
+renderArgumentValues :: Arguments s -> Rendering
+renderArgumentValues = renderArguments . filter notNull . elems
+  where
+    notNull Argument {argumentValue = Null} = False
+    notNull _ = True
+
 -- directive
 ------------------------------------------------------------------
 data Directive (s :: Stage) = Directive
-  { directiveName :: FieldName,
-    directivePosition :: Position,
+  { directivePosition :: Position,
+    directiveName :: FieldName,
     directiveArgs :: Arguments s
   }
   deriving (Show, Lift, Eq)
@@ -152,13 +145,28 @@
 instance KeyOf FieldName (Directive s) where
   keyOf = directiveName
 
+instance RenderGQL (Directive s) where
+  render Directive {..} =
+    "@" <> render directiveName
+      <> renderArgumentValues directiveArgs
+
 type Directives s = [Directive s]
 
+renderDirectives :: Directives s -> Rendering
+renderDirectives xs
+  | null dirs = ""
+  | otherwise = space <> intercalate space (fmap render dirs)
+  where
+    dirs = filter notSystem xs
+    notSystem Directive {directiveName = "include"} = False
+    notSystem Directive {directiveName = "skip"} = False
+    notSystem _ = True
+
 data DirectiveDefinition s = DirectiveDefinition
   { directiveDefinitionName :: FieldName,
     directiveDefinitionDescription :: Maybe Description,
-    directiveDefinitionLocations :: [DirectiveLocation],
-    directiveDefinitionArgs :: ArgumentsDefinition s
+    directiveDefinitionArgs :: ArgumentsDefinition s,
+    directiveDefinitionLocations :: [DirectiveLocation]
   }
   deriving (Show, Lift)
 
@@ -197,33 +205,11 @@
   toCategory (FieldArgs x) = FieldArgs x
   toCategory (DefaultInputValue x) = DefaultInputValue x
 
-newtype Fields def = Fields
-  {unFields :: OrdMap FieldName def}
-  deriving
-    ( Show,
-      Lift,
-      Functor,
-      Foldable,
-      Traversable
-    )
-
-deriving instance (KeyOf FieldName def) => Collection def (Fields def)
-
-instance Merge (FieldsDefinition cat s) where
-  merge path (Fields x) (Fields y) = Fields <$> merge path x y
-
-instance Selectable FieldName (FieldDefinition cat s) (Fields (FieldDefinition cat s)) where
-  selectOr fb f name (Fields lib) = selectOr fb f name lib
-
 unsafeFromFields :: [FieldDefinition cat s] -> FieldsDefinition cat s
-unsafeFromFields = Fields . unsafeFromValues
+unsafeFromFields = unsafeFromList . fmap toPair
 
 fieldsToArguments :: FieldsDefinition IN s -> ArgumentsDefinition s
-fieldsToArguments = ArgumentsDefinition Nothing . unFields
-
-instance (KeyOf FieldName def, NameCollision def) => Listable def (Fields def) where
-  fromElems = fmap Fields . fromElems
-  elems = elems . unFields
+fieldsToArguments = ArgumentsDefinition Nothing
 
 -- 3.6 Objects : https://graphql.github.io/graphql-spec/June2018/#sec-Objects
 ------------------------------------------------------------------------------
@@ -237,7 +223,7 @@
 --  FieldsDefinition
 --    { FieldDefinition(list) }
 --
-type FieldsDefinition cat s = Fields (FieldDefinition cat s)
+type FieldsDefinition cat s = OrdMap FieldName (FieldDefinition cat s)
 
 --  FieldDefinition
 --    Description(opt) Name ArgumentsDefinition(opt) : Type Directives(Const)(opt)
@@ -246,11 +232,11 @@
 --   Description(opt) Name: Type DefaultValue(opt) Directives[Const](opt)
 
 data FieldDefinition (cat :: TypeCategory) (s :: Stage) = FieldDefinition
-  { fieldName :: FieldName,
-    fieldDescription :: Maybe Description,
+  { fieldDescription :: Maybe Description,
+    fieldName :: FieldName,
     fieldType :: TypeRef,
-    fieldDirectives :: [Directive s],
-    fieldContent :: Maybe (FieldContent TRUE cat s)
+    fieldContent :: Maybe (FieldContent TRUE cat s),
+    fieldDirectives :: [Directive s]
   }
   deriving (Show, Lift, Eq)
 
@@ -286,8 +272,8 @@
     "There can Be only One field Named " <> msgValidation fieldName
 
 instance RenderGQL (FieldDefinition cat s) where
-  render FieldDefinition {fieldName = FieldName name, fieldType, fieldContent = Just (FieldArgs args)} =
-    name <> render args <> ": " <> render fieldType
+  render FieldDefinition {fieldName, fieldType, fieldContent = Just (FieldArgs args)} =
+    render fieldName <> render args <> ": " <> render fieldType
   render FieldDefinition {fieldName, fieldType} =
     renderEntry fieldName fieldType
 
@@ -339,7 +325,7 @@
 --- InputFieldsDefinition
 -- { InputValueDefinition(list) }
 
-type InputFieldsDefinition s = Fields (InputValueDefinition s)
+type InputFieldsDefinition s = OrdMap FieldName (InputValueDefinition s)
 
 type InputValueDefinition = FieldDefinition IN
 
@@ -366,6 +352,8 @@
   empty = ArgumentsDefinition Nothing empty
   singleton = ArgumentsDefinition Nothing . singleton
 
-instance Listable (ArgumentDefinition s) (ArgumentsDefinition s) where
-  elems (ArgumentsDefinition _ args) = elems args
+instance (Monad m, Failure ValidationErrors m) => FromElems m (ArgumentDefinition s) (ArgumentsDefinition s) where
   fromElems args = ArgumentsDefinition Nothing <$> fromElems args
+
+instance Elems (ArgumentDefinition s) (ArgumentsDefinition s) where
+  elems (ArgumentsDefinition _ args) = elems args
diff --git a/src/Data/Morpheus/Types/Internal/AST/MergeSet.hs b/src/Data/Morpheus/Types/Internal/AST/MergeSet.hs
deleted file mode 100644
--- a/src/Data/Morpheus/Types/Internal/AST/MergeSet.hs
+++ /dev/null
@@ -1,152 +0,0 @@
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveLift #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE GADTs #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE KindSignatures #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE UndecidableInstances #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Data.Morpheus.Types.Internal.AST.MergeSet
-  ( MergeSet,
-    toOrdMap,
-    concatTraverse,
-    join,
-  )
-where
-
--- MORPHEUS
-
-import Control.Applicative (Applicative (..))
-import Control.Monad (Monad (..))
-import Data.Foldable (Foldable (..))
-import Data.Functor (Functor (..))
-import Data.List (find)
-import Data.Maybe (maybe)
-import Data.Morpheus.Internal.Utils
-  ( (<:>),
-    Collection (..),
-    Failure (..),
-    KeyOf (..),
-    Listable (..),
-    Merge (..),
-    Selectable (..),
-    elems,
-    fromListT,
-    mergeT,
-    resolveWith,
-    runResolutionT,
-  )
-import Data.Morpheus.Types.Internal.AST.Base
-  ( Ref,
-    ValidationErrors,
-  )
-import Data.Morpheus.Types.Internal.AST.OrdMap
-  ( OrdMap (..),
-  )
-import qualified Data.Morpheus.Types.Internal.AST.OrdMap as OM
-import Data.Morpheus.Types.Internal.AST.Stage
-  ( RAW,
-    Stage,
-    VALID,
-  )
-import Data.Semigroup (Semigroup (..))
-import Data.Traversable (Traversable (..))
-import Language.Haskell.TH.Syntax (Lift (..))
-import Prelude
-  ( ($),
-    (.),
-    Eq (..),
-    Show,
-    otherwise,
-  )
-
--- set with mergeable components
-newtype MergeSet (dups :: Stage) a = MergeSet
-  { unpack :: [a]
-  }
-  deriving
-    ( Show,
-      Eq,
-      Functor,
-      Foldable,
-      Lift,
-      Traversable,
-      Collection a
-    )
-
-concatTraverse ::
-  ( Eq a,
-    Eq b,
-    Merge a,
-    Merge b,
-    KeyOf k b,
-    Monad m,
-    Failure ValidationErrors m
-  ) =>
-  (a -> m (MergeSet VALID b)) ->
-  MergeSet RAW a ->
-  m (MergeSet VALID b)
-concatTraverse f smap =
-  traverse f (elems smap)
-    >>= join
-
-join ::
-  ( Eq a,
-    KeyOf k a,
-    Merge a,
-    Monad m,
-    Failure ValidationErrors m,
-    Listable a (MergeSet opt a),
-    Merge (MergeSet opt a)
-  ) =>
-  [MergeSet opt a] ->
-  m (MergeSet opt a)
-join = __join empty
-  where
-    __join acc [] = pure acc
-    __join acc (x : xs) = acc <:> x >>= (`__join` xs)
-
-toOrdMap :: (KeyOf k a) => MergeSet opt a -> OrdMap k a
-toOrdMap = OM.unsafeFromValues . unpack
-
-instance (KeyOf k a) => Selectable k a (MergeSet opt a) where
-  selectOr fb f key (MergeSet ls) = maybe fb f (find ((key ==) . keyOf) ls)
-
--- must merge files on collision
-
-instance
-  ( KeyOf k a,
-    Listable a (MergeSet VALID a),
-    Merge a,
-    Eq a
-  ) =>
-  Merge (MergeSet VALID a)
-  where
-  merge path x y = runResolutionT (mergeT x y) MergeSet (resolveWith (resolveConflict path))
-
-instance
-  ( Listable a (MergeSet VALID a),
-    KeyOf k a,
-    Merge a,
-    Eq a
-  ) =>
-  Listable a (MergeSet VALID a)
-  where
-  fromElems xs = runResolutionT (fromListT xs) MergeSet (resolveWith (resolveConflict []))
-  elems = unpack
-
-instance Merge (MergeSet RAW a) where
-  merge _ (MergeSet x) (MergeSet y) = pure $ MergeSet $ x <> y
-
-instance Listable a (MergeSet RAW a) where
-  fromElems = pure . MergeSet
-  elems = unpack
-
-resolveConflict :: (Monad m, Eq a, KeyOf k a, Merge a, Failure ValidationErrors m) => [Ref] -> a -> a -> m a
-resolveConflict path oldValue newValue
-  | oldValue == newValue = pure oldValue
-  | otherwise = merge path oldValue newValue
diff --git a/src/Data/Morpheus/Types/Internal/AST/OrdMap.hs b/src/Data/Morpheus/Types/Internal/AST/OrdMap.hs
deleted file mode 100644
--- a/src/Data/Morpheus/Types/Internal/AST/OrdMap.hs
+++ /dev/null
@@ -1,100 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE GADTs #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE NamedFieldPuns #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Data.Morpheus.Types.Internal.AST.OrdMap
-  ( OrdMap (..),
-    unsafeFromValues,
-  )
-where
-
--- MORPHEUS
-import Data.Foldable (Foldable (..))
-import Data.Functor ((<$>), Functor (..))
-import Data.HashMap.Lazy (HashMap)
-import qualified Data.HashMap.Lazy as HM
-import Data.Hashable (Hashable)
-import Data.Maybe (fromMaybe, maybe)
-import Data.Morpheus.Error.NameCollision (NameCollision (..))
-import Data.Morpheus.Internal.Utils
-  ( Collection (..),
-    KeyOf (..),
-    Listable (..),
-    Merge (..),
-    Selectable (..),
-    toPair,
-  )
-import Data.Semigroup ((<>))
-import Data.Traversable (Traversable (..))
-import Language.Haskell.TH.Syntax (Lift (..))
-import Prelude
-  ( ($),
-    (.),
-    Eq,
-    Show,
-    error,
-  )
-
--- OrdMap
-data OrdMap k a = OrdMap
-  { mapKeys :: [k],
-    mapEntries :: HashMap k a
-  }
-  deriving
-    ( Show,
-      Eq,
-      Functor
-    )
-
-instance (Lift a, Lift k, Eq k, Hashable k) => Lift (OrdMap k a) where
-  lift (OrdMap names x) = [|OrdMap names (HM.fromList ls)|]
-    where
-      ls = HM.toList x
-
-#if MIN_VERSION_template_haskell(2,16,0)
-  liftTyped (OrdMap names x) = [||OrdMap names (HM.fromList ls)||]
-    where
-      ls = HM.toList x
-#endif
-
-instance (Eq k, Hashable k) => Foldable (OrdMap k) where
-  foldMap f = foldMap f . getElements
-
-getElements :: (Eq k, Hashable k) => OrdMap k b -> [b]
-getElements OrdMap {mapKeys, mapEntries} = fmap takeValue mapKeys
-  where
-    takeValue key = fromMaybe (error "TODO: invalid Ordered Map") (key `HM.lookup` mapEntries)
-
-instance (Eq k, Hashable k) => Traversable (OrdMap k) where
-  traverse f (OrdMap names values) = OrdMap names <$> traverse f values
-
-instance (KeyOf k a, Hashable k) => Collection a (OrdMap k a) where
-  empty = OrdMap [] HM.empty
-  singleton x = OrdMap [keyOf x] $ HM.singleton (keyOf x) x
-
-instance (Eq k, Hashable k) => Selectable k a (OrdMap k a) where
-  selectOr fb f key OrdMap {mapEntries} = maybe fb f (HM.lookup key mapEntries)
-
-instance (NameCollision a, KeyOf k a) => Merge (OrdMap k a) where
-  merge ref (OrdMap k1 x) (OrdMap k2 y) = OrdMap (k1 <> k2) <$> merge ref x y
-
-instance (NameCollision a, KeyOf k a, Hashable k) => Listable a (OrdMap k a) where
-  fromElems values = OrdMap (fmap keyOf values) <$> fromElems values
-  elems = getElements
-
-unsafeFromValues ::
-  ( KeyOf k a,
-    Hashable k
-  ) =>
-  [a] ->
-  OrdMap k a
-unsafeFromValues x = OrdMap (fmap keyOf x) $ HM.fromList $ fmap toPair x
diff --git a/src/Data/Morpheus/Types/Internal/AST/SafeHashMap.hs b/src/Data/Morpheus/Types/Internal/AST/SafeHashMap.hs
deleted file mode 100644
--- a/src/Data/Morpheus/Types/Internal/AST/SafeHashMap.hs
+++ /dev/null
@@ -1,91 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE DerivingStrategies #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE GADTs #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Data.Morpheus.Types.Internal.AST.SafeHashMap
-  ( SafeHashMap,
-    unsafeFromValues,
-    insert,
-  )
-where
-
--- MORPHEUS
-import Control.Monad (Monad)
-import Data.Foldable (Foldable (..))
-import Data.Functor ((<$>), Functor (..))
-import Data.HashMap.Lazy (HashMap)
-import qualified Data.HashMap.Lazy as HM
-import Data.Hashable (Hashable)
-import Data.Morpheus.Error.NameCollision (NameCollision (..))
-import Data.Morpheus.Internal.Utils
-  ( (<:>),
-    Collection (..),
-    Failure (..),
-    KeyOf (..),
-    Listable (..),
-    Merge (..),
-    Selectable (..),
-    toPair,
-  )
-import Data.Morpheus.Types.Internal.AST.Base (ValidationErrors)
-import Data.Traversable (Traversable (..))
-import Language.Haskell.TH.Syntax (Lift (..))
-import Prelude
-  ( (.),
-    Eq,
-    Show,
-  )
-
-newtype SafeHashMap k a = SafeHashMap
-  { unpackSafeHashMap :: HashMap k a
-  }
-  deriving
-    ( Show,
-      Eq,
-      Functor,
-      Foldable,
-      Traversable
-    )
-  deriving newtype
-    ( Collection a,
-      Selectable k a
-    )
-
-instance (Lift a, Lift k, Eq k, Hashable k) => Lift (SafeHashMap k a) where
-  lift (SafeHashMap x) = let ls = HM.toList x in [|SafeHashMap (HM.fromList ls)|]
-
-#if MIN_VERSION_template_haskell(2,16,0)
-  liftTyped (SafeHashMap x) = let ls = HM.toList x in [||SafeHashMap (HM.fromList ls)||]
-#endif
-
-instance (NameCollision a, KeyOf k a) => Merge (SafeHashMap k a) where
-  merge ref (SafeHashMap x) (SafeHashMap y) = SafeHashMap <$> merge ref x y
-
-instance (NameCollision a, KeyOf k a, Hashable k) => Listable a (SafeHashMap k a) where
-  fromElems = fmap SafeHashMap . fromElems
-  elems = elems . unpackSafeHashMap
-
-unsafeFromValues :: (Eq k, KeyOf k a) => [a] -> SafeHashMap k a
-unsafeFromValues = SafeHashMap . HM.fromList . fmap toPair
-
-insert ::
-  ( NameCollision a,
-    KeyOf k a,
-    Monad m,
-    Failure ValidationErrors m
-  ) =>
-  a ->
-  SafeHashMap k a ->
-  m (SafeHashMap k a)
-insert x = (<:> singleton x)
diff --git a/src/Data/Morpheus/Types/Internal/AST/Selection.hs b/src/Data/Morpheus/Types/Internal/AST/Selection.hs
--- a/src/Data/Morpheus/Types/Internal/AST/Selection.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/Selection.hs
@@ -29,10 +29,6 @@
   )
 where
 
-import Control.Applicative (pure)
-import Data.Foldable (all, foldr)
-import Data.Functor ((<$>), fmap)
-import Data.Maybe (Maybe (..), fromMaybe, isJust, maybe)
 import Data.Morpheus.Error.NameCollision
   ( NameCollision (..),
   )
@@ -40,16 +36,22 @@
   ( mutationIsNotDefined,
     subscriptionIsNotDefined,
   )
+import Data.Morpheus.Ext.MergeSet
+  ( MergeSet,
+  )
+import Data.Morpheus.Ext.OrdMap
+  ( OrdMap,
+  )
+import Data.Morpheus.Ext.SemigroupM (SemigroupM (..))
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
     KeyOf (..),
-    Merge (..),
     elems,
   )
 import Data.Morpheus.Rendering.RenderGQL
   ( RenderGQL (..),
     Rendering,
-    renderArguments,
+    newline,
     renderObject,
     space,
   )
@@ -71,12 +73,8 @@
 import Data.Morpheus.Types.Internal.AST.Fields
   ( Arguments,
     Directives,
-  )
-import Data.Morpheus.Types.Internal.AST.MergeSet
-  ( MergeSet,
-  )
-import Data.Morpheus.Types.Internal.AST.OrdMap
-  ( OrdMap,
+    renderArgumentValues,
+    renderDirectives,
   )
 import Data.Morpheus.Types.Internal.AST.Stage
   ( RAW,
@@ -95,15 +93,8 @@
     Variable (..),
     VariableDefinitions,
   )
-import Data.Semigroup ((<>))
 import Language.Haskell.TH.Syntax (Lift (..))
-import Prelude
-  ( ($),
-    (.),
-    Eq (..),
-    Show (..),
-    otherwise,
-  )
+import Relude
 
 data Fragment (stage :: Stage) = Fragment
   { fragmentName :: FieldName,
@@ -140,12 +131,15 @@
   render (UnionSelection unionSets) = renderObject (elems unionSets)
 
 instance
-  Merge (SelectionSet s) =>
-  Merge (SelectionContent s)
+  ( Monad m,
+    Failure ValidationErrors m,
+    SemigroupM m (SelectionSet s)
+  ) =>
+  SemigroupM m (SelectionContent s)
   where
-  merge path (SelectionSet s1) (SelectionSet s2) = SelectionSet <$> merge path s1 s2
-  merge path (UnionSelection u1) (UnionSelection u2) = UnionSelection <$> merge path u1 u2
-  merge path oldC currentC
+  mergeM path (SelectionSet s1) (SelectionSet s2) = SelectionSet <$> mergeM path s1 s2
+  mergeM path (UnionSelection u1) (UnionSelection u2) = UnionSelection <$> mergeM path u1 u2
+  mergeM path oldC currentC
     | oldC == currentC = pure oldC
     | otherwise =
       failure
@@ -174,7 +168,6 @@
   render UnionTag {unionTagName, unionTagSelection} =
     "... on "
       <> render unionTagName
-      <> space
       <> renderSelectionSet unionTagSelection
 
 mergeConflict :: [Ref] -> ValidationError -> ValidationErrors
@@ -195,22 +188,22 @@
         renderStart
         xs
 
-instance Merge UnionTag where
-  merge path (UnionTag oldTag oldSel) (UnionTag _ currentSel) =
-    UnionTag oldTag <$> merge path oldSel currentSel
+instance (Monad m, Failure ValidationErrors m) => SemigroupM m UnionTag where
+  mergeM path (UnionTag oldTag oldSel) (UnionTag _ currentSel) =
+    UnionTag oldTag <$> mergeM path oldSel currentSel
 
-type UnionSelection (s :: Stage) = MergeSet s UnionTag
+type UnionSelection (s :: Stage) = MergeSet s TypeName UnionTag
 
-type SelectionSet (s :: Stage) = MergeSet s (Selection s)
+type SelectionSet (s :: Stage) = MergeSet s FieldName (Selection s)
 
 data Selection (s :: Stage) where
   Selection ::
-    { selectionName :: FieldName,
+    { selectionPosition :: Position,
       selectionAlias :: Maybe FieldName,
-      selectionPosition :: Position,
+      selectionName :: FieldName,
       selectionArguments :: Arguments s,
-      selectionContent :: SelectionContent s,
-      selectionDirectives :: Directives s
+      selectionDirectives :: Directives s,
+      selectionContent :: SelectionContent s
     } ->
     Selection s
   InlineFragment :: Fragment RAW -> Selection RAW
@@ -222,7 +215,8 @@
       { ..
       } =
       render (fromMaybe selectionName selectionAlias)
-        <> renderArguments (elems selectionArguments)
+        <> renderArgumentValues selectionArguments
+        <> renderDirectives selectionDirectives
         <> render selectionContent
 
 instance KeyOf FieldName (Selection s) where
@@ -239,10 +233,13 @@
     <> "fields to fetch both if this was intentional."
 
 instance
-  Merge (SelectionSet a) =>
-  Merge (Selection a)
+  ( Monad m,
+    SemigroupM m (SelectionSet a),
+    Failure ValidationErrors m
+  ) =>
+  SemigroupM m (Selection a)
   where
-  merge
+  mergeM
     path
     old@Selection {selectionPosition = pos1}
     current@Selection {selectionPosition = pos2} =
@@ -250,7 +247,7 @@
         selectionName <- mergeName
         let currentPath = path <> [Ref selectionName pos1]
         selectionArguments <- mergeArguments currentPath
-        selectionContent <- merge currentPath (selectionContent old) (selectionContent current)
+        selectionContent <- mergeM currentPath (selectionContent old) (selectionContent current)
         pure $
           Selection
             { selectionAlias = mergeAlias,
@@ -295,7 +292,7 @@
                 { validationMessage = "they have differing arguments. " <> useDifferentAliases,
                   validationLocations = [pos1, pos2]
                 }
-  merge path _ _ =
+  mergeM path _ _ =
     failure $
       mergeConflict
         path
@@ -310,12 +307,12 @@
 type DefaultValue = Maybe ResolvedValue
 
 data Operation (s :: Stage) = Operation
-  { operationName :: Maybe FieldName,
+  { operationPosition :: Position,
     operationType :: OperationType,
+    operationName :: Maybe FieldName,
     operationArguments :: VariableDefinitions s,
-    operationSelection :: SelectionSet s,
-    operationPosition :: Position,
-    operationDirectives :: Directives s
+    operationDirectives :: Directives s,
+    operationSelection :: SelectionSet s
   }
   deriving (Show, Lift)
 
@@ -324,13 +321,14 @@
     Operation
       { operationName,
         operationType,
+        operationDirectives,
         operationSelection
       } =
       render operationType
-        <> space
-        <> render operationName
-        <> space
+        <> maybe "" ((space <>) . render) operationName
+        <> renderDirectives operationDirectives
         <> renderSelectionSet operationSelection
+        <> newline
 
 getOperationName :: Maybe FieldName -> TypeName
 getOperationName = maybe "AnonymousOperation" (TypeName . readName)
diff --git a/src/Data/Morpheus/Types/Internal/AST/TH.hs b/src/Data/Morpheus/Types/Internal/AST/TH.hs
--- a/src/Data/Morpheus/Types/Internal/AST/TH.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/TH.hs
@@ -25,14 +25,7 @@
 import Data.Morpheus.Types.Internal.AST.TypeSystem
   ( DataEnumValue (..),
   )
-import Prelude
-  ( (.),
-    Bool (..),
-    Show,
-    all,
-    fmap,
-    null,
-  )
+import Relude
 
 toHSFieldDefinition :: FieldDefinition cat s -> FieldDefinition cat s
 toHSFieldDefinition field@FieldDefinition {fieldType = tyRef@TypeRef {typeConName}} =
diff --git a/src/Data/Morpheus/Types/Internal/AST/TypeCategory.hs b/src/Data/Morpheus/Types/Internal/AST/TypeCategory.hs
--- a/src/Data/Morpheus/Types/Internal/AST/TypeCategory.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/TypeCategory.hs
@@ -22,13 +22,12 @@
   )
 where
 
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Types.Internal.AST.Base
   ( FALSE,
     TRUE,
   )
 import Data.Morpheus.Types.Internal.AST.Stage (Stage)
-import Prelude (Bool (..))
+import Relude
 
 data TypeCategory
   = IN
diff --git a/src/Data/Morpheus/Types/Internal/AST/TypeSystem.hs b/src/Data/Morpheus/Types/Internal/AST/TypeSystem.hs
--- a/src/Data/Morpheus/Types/Internal/AST/TypeSystem.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/TypeSystem.hs
@@ -51,44 +51,46 @@
     typed,
     possibleTypes,
     possibleInterfaceTypes,
-    isTypeDefined,
     safeDefineType,
+    defineSchemaWith,
   )
 where
 
 -- MORPHEUS
-
-import Control.Applicative ((<|>), Applicative (..))
-import Control.Monad (Monad (..), foldM)
-import Data.Either (Either (..))
-import Data.Foldable (concatMap)
-import Data.Functor ((<$>), fmap)
-import Data.List (elem, filter, find, notElem)
-import Data.Maybe (Maybe (..), catMaybes, mapMaybe, maybe)
+import Control.Monad (foldM)
 import Data.Morpheus.Error.NameCollision
   ( NameCollision (..),
   )
-import Data.Morpheus.Internal.Utils
+import Data.Morpheus.Ext.OrdMap
+  ( OrdMap,
+  )
+import Data.Morpheus.Ext.SafeHashMap
+  ( SafeHashMap,
+    insert,
+  )
+import Data.Morpheus.Ext.SemigroupM
   ( (<:>),
-    Collection (..),
+    SemigroupM (..),
+  )
+import Data.Morpheus.Internal.Utils
+  ( Collection (..),
+    Elems (..),
     Failure (..),
+    FromElems (..),
     KeyOf (..),
-    Listable (..),
-    Merge (..),
     Selectable (..),
-    elems,
   )
 import Data.Morpheus.Rendering.RenderGQL
   ( RenderGQL (..),
     Rendering,
+    intercalate,
     newline,
     renderEntry,
     renderMembers,
     renderObject,
   )
 import Data.Morpheus.Types.Internal.AST.Base
-  ( DataFingerprint (..),
-    Description,
+  ( Description,
     FieldName,
     FieldName (..),
     Msg (..),
@@ -116,13 +118,6 @@
     FieldsDefinition,
     unsafeFromFields,
   )
-import Data.Morpheus.Types.Internal.AST.OrdMap
-  ( OrdMap,
-  )
-import Data.Morpheus.Types.Internal.AST.SafeHashMap
-  ( SafeHashMap,
-    insert,
-  )
 import Data.Morpheus.Types.Internal.AST.Stage
   ( CONST,
     Stage,
@@ -145,19 +140,14 @@
 import Data.Morpheus.Types.Internal.AST.Value
   ( Value (..),
   )
-import Data.Semigroup (Semigroup (..))
-import Data.Text (intercalate)
 import Instances.TH.Lift ()
 import Language.Haskell.TH.Syntax (Lift (..))
-import Prelude
-  ( ($),
-    (.),
-    Bool (..),
-    Eq (..),
-    Show (..),
-    flip,
-    otherwise,
+import Relude hiding
+  ( empty,
+    intercalate,
+    show,
   )
+import Prelude (Show (..))
 
 type DataEnum s = [DataEnumValue s]
 
@@ -216,8 +206,8 @@
 
 -- ENUM VALUE
 data DataEnumValue s = DataEnumValue
-  { enumName :: TypeName,
-    enumDescription :: Maybe Description,
+  { enumDescription :: Maybe Description,
+    enumName :: TypeName,
     enumDirectives :: [Directive s]
   }
   deriving (Show, Lift)
@@ -242,8 +232,15 @@
   }
   deriving (Show, Lift)
 
-instance Merge (Schema s) where
-  merge _ s1 s2 =
+instance
+  ( Monad m,
+    Failure ValidationErrors m
+  ) =>
+  SemigroupM
+    m
+    (Schema s)
+  where
+  mergeM _ s1 s2 =
     Schema
       <$> (types s1 <:> types s2)
       <*> mergeOperation (query s1) (query s2)
@@ -325,10 +322,17 @@
 instance Selectable TypeName (TypeDefinition ANY s) (Schema s) where
   selectOr fb f name lib = maybe fb f (lookupDataType name lib)
 
-instance Listable (TypeDefinition ANY s) (Schema s) where
+instance Elems (TypeDefinition ANY s) (Schema s) where
   elems Schema {..} =
     elems types
       <> concatMap fromOperation [Just query, mutation, subscription]
+
+instance
+  ( Monad m,
+    Failure ValidationErrors m
+  ) =>
+  FromElems m (TypeDefinition ANY s) (Schema s)
+  where
   fromElems types =
     traverse3
       (popByKey types)
@@ -336,9 +340,9 @@
         RootOperationTypeDefinition Mutation "Mutation",
         RootOperationTypeDefinition Subscription "Subscription"
       )
-      >>= buildWith types
+      >>= defineSchemaWith types
 
-buildWith ::
+defineSchemaWith ::
   ( Monad f,
     Failure ValidationErrors f
   ) =>
@@ -348,11 +352,11 @@
     Maybe (TypeDefinition OBJECT s)
   ) ->
   f (Schema s)
-buildWith oTypes (Just query, mutation, subscription) = do
+defineSchemaWith oTypes (Just query, mutation, subscription) = do
   let types = excludeTypes [Just query, mutation, subscription] oTypes
   let schema = (initTypeLib query) {mutation, subscription}
   foldM (flip safeDefineType) schema types
-buildWith _ (Nothing, _, _) = failure ["Query root type must be provided." :: ValidationError]
+defineSchemaWith _ (Nothing, _, _) = failure ["Query root type must be provided." :: ValidationError]
 
 excludeTypes :: [Maybe (TypeDefinition c1 s)] -> [TypeDefinition c2 s] -> [TypeDefinition c2 s]
 excludeTypes exclusionTypes = filter ((`notElem` blacklist) . typeName)
@@ -382,7 +386,7 @@
   withDirectives
     dirs
     <$> ( traverse3 selectOp (Query, Mutation, Subscription)
-            >>= buildWith types
+            >>= defineSchemaWith types
         )
   where
     selectOp op = selectOperation schemaDef op types
@@ -434,9 +438,6 @@
     <|> (subscription >>= isType name)
     <|> selectOr Nothing Just name types
 
-isTypeDefined :: TypeName -> Schema s -> Maybe DataFingerprint
-isTypeDefined name lib = typeFingerprint <$> lookupDataType name lib
-
 -- 3.4 Types : https://graphql.github.io/graphql-spec/June2018/#sec-Types
 -------------------------------------------------------------------------
 -- TypeDefinition :
@@ -448,9 +449,8 @@
 --   InputObjectTypeDefinition
 
 data TypeDefinition (a :: TypeCategory) (s :: Stage) = TypeDefinition
-  { typeName :: TypeName,
-    typeFingerprint :: DataFingerprint,
-    typeDescription :: Maybe Description,
+  { typeDescription :: Maybe Description,
+    typeName :: TypeName,
     typeDirectives :: Directives s,
     typeContent :: TypeContent TRUE a s
   }
@@ -586,7 +586,6 @@
   TypeDefinition
     { typeName,
       typeDescription = Nothing,
-      typeFingerprint = DataFingerprint typeName [],
       typeDirectives = [],
       typeContent
     }
@@ -635,14 +634,13 @@
   TypeDefinition cat s ->
   Schema s ->
   m (Schema s)
-safeDefineType dt@TypeDefinition {typeName, typeContent = DataInputUnion enumKeys, typeFingerprint} lib = do
+safeDefineType dt@TypeDefinition {typeName, typeContent = DataInputUnion enumKeys} lib = do
   types <- insert unionTags (types lib) >>= insert (toAny dt)
   pure lib {types}
   where
     unionTags =
       TypeDefinition
         { typeName = typeName <> "Tags",
-          typeFingerprint,
           typeDescription = Nothing,
           typeDirectives = [],
           typeContent = mkEnumContent (fmap memberName enumKeys)
diff --git a/src/Data/Morpheus/Types/Internal/AST/Value.hs b/src/Data/Morpheus/Types/Internal/AST/Value.hs
--- a/src/Data/Morpheus/Types/Internal/AST/Value.hs
+++ b/src/Data/Morpheus/Types/Internal/AST/Value.hs
@@ -34,9 +34,6 @@
 where
 
 -- MORPHEUS
-
-import Control.Applicative (pure)
-import Control.Monad.Fail (MonadFail (fail))
 import qualified Data.Aeson as A
   ( (.=),
     FromJSON (..),
@@ -45,22 +42,27 @@
     object,
     pairs,
   )
-import Data.Either (Either (..))
-import Data.Foldable (foldl, foldl1, null)
-import Data.Functor (fmap)
+import Data.Foldable (foldl1)
 import qualified Data.HashMap.Lazy as M
-  ( toList,
-  )
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Error.NameCollision
   ( NameCollision (..),
   )
+import Data.Morpheus.Ext.OrdMap
+  ( OrdMap,
+    unsafeFromList,
+  )
 import Data.Morpheus.Internal.Utils
   ( KeyOf (..),
     elems,
     mapTuple,
   )
-import Data.Morpheus.Rendering.RenderGQL (RenderGQL (..))
+import Data.Morpheus.Rendering.RenderGQL
+  ( RenderGQL (..),
+    fromText,
+    renderGQL,
+    renderInputSeq,
+    space,
+  )
 import Data.Morpheus.Types.Internal.AST.Base
   ( FieldName,
     FieldName (..),
@@ -72,10 +74,6 @@
     ValidationError (..),
     msgValidation,
   )
-import Data.Morpheus.Types.Internal.AST.OrdMap
-  ( OrdMap,
-    unsafeFromValues,
-  )
 import Data.Morpheus.Types.Internal.AST.Stage
   ( CONST,
     CONST_OR_VALID,
@@ -87,26 +85,10 @@
   ( Scientific,
     floatingOrInteger,
   )
-import Data.Semigroup ((<>))
-import Data.Text
-  ( Text,
-  )
 import qualified Data.Vector as V
-  ( toList,
-  )
-import GHC.Generics (Generic)
 import Instances.TH.Lift ()
 import Language.Haskell.TH.Syntax (Lift (..))
-import Prelude
-  ( ($),
-    (.),
-    Bool,
-    Eq,
-    Float,
-    Int,
-    Show (..),
-    otherwise,
-  )
+import Relude
 
 -- | Primitive Values for GQLScalar: 'Int', 'Float', 'String', 'Boolean'.
 -- for performance reason type 'Text' represents GraphQl 'String' value
@@ -155,9 +137,9 @@
 deriving instance Eq (VariableContent a)
 
 data Variable (stage :: Stage) = Variable
-  { variableName :: FieldName,
+  { variablePosition :: Position,
+    variableName :: FieldName,
     variableType :: TypeRef,
-    variablePosition :: Position,
     variableValue :: VariableContent (CONST_OR_VALID stage)
   }
   deriving (Show, Eq, Lift)
@@ -194,7 +176,7 @@
   deriving (Eq, Show)
 
 instance RenderGQL (ObjectEntry a) where
-  render (ObjectEntry (FieldName name) value) = name <> ": " <> render value
+  render (ObjectEntry (FieldName name) value) = fromText name <> ": " <> render value
 
 instance NameCollision (ObjectEntry s) where
   nameCollision ObjectEntry {entryName} =
@@ -222,27 +204,22 @@
 deriving instance Lift (ObjectEntry a)
 
 instance RenderGQL (Value a) where
-  render (ResolvedVariable Ref {refName} _) =
-    "$" <> readName refName
-  render (VariableValue Ref {refName}) = "$" <> readName refName <> " "
+  render (ResolvedVariable Ref {refName} _) = "$" <> render refName
+  render (VariableValue Ref {refName}) = "$" <> render refName <> " "
   render Null = "null"
-  render (Enum x) = readTypeName x
+  render (Enum x) = render x
   render (Scalar x) = render x
-  render (Object keys) = "{" <> foldl toEntry "" (elems keys) <> "}"
-    where
-      toEntry :: Text -> ObjectEntry a -> Text
-      toEntry "" value = render value
-      toEntry txt value = txt <> ", " <> render value
-  render (List list) = "[" <> foldl toEntry "" list <> "]"
+  render (Object xs) = "{" <> entries <> "}"
     where
-      toEntry :: Text -> Value a -> Text
-      toEntry "" value = render value
-      toEntry txt value = txt <> ", " <> render value
+      entries
+        | null (elems xs) = ""
+        | otherwise = space <> renderInputSeq (elems xs) <> space
+  render (List list) = "[" <> renderInputSeq list <> "]"
 
 -- render = pack . BS.unpack . A.encode
 
 instance Msg (Value a) where
-  msg = msg . render
+  msg = msg . renderGQL
 
 instance A.ToJSON (Value a) where
   toJSON (ResolvedVariable _ Variable {variableValue = ValidVariableValue x}) =
@@ -308,6 +285,6 @@
   gqlBoolean = Scalar . Boolean
   gqlString = Scalar . String
   gqlList = List
-  gqlObject = Object . unsafeFromValues . fmap toEntry
+  gqlObject = Object . unsafeFromList . fmap toEntry
     where
-      toEntry (key, value) = ObjectEntry key value
+      toEntry (key, value) = (key, ObjectEntry key value)
diff --git a/src/Data/Morpheus/Types/Internal/Config.hs b/src/Data/Morpheus/Types/Internal/Config.hs
--- a/src/Data/Morpheus/Types/Internal/Config.hs
+++ b/src/Data/Morpheus/Types/Internal/Config.hs
@@ -8,11 +8,7 @@
   )
 where
 
-import Prelude
-  ( Bool (..),
-    Eq,
-    Show,
-  )
+import Relude
 
 data VALIDATION_MODE
   = WITHOUT_VARIABLES
diff --git a/src/Data/Morpheus/Types/Internal/Resolving.hs b/src/Data/Morpheus/Types/Internal/Resolving.hs
--- a/src/Data/Morpheus/Types/Internal/Resolving.hs
+++ b/src/Data/Morpheus/Types/Internal/Resolving.hs
@@ -3,15 +3,12 @@
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Types.Internal.Resolving
-  ( Event (..),
-    Resolver,
+  ( Resolver,
     LiftOperation,
     runRootResModel,
     lift,
-    SubEvent,
     Eventless,
     Failure (..),
-    eventChannels,
     ResponseEvent (..),
     ResponseStream,
     cleanEvents,
@@ -40,20 +37,17 @@
     mkString,
     SubscriptionField (..),
     getArguments,
-    Channel (..),
     ResolverState,
     liftResolverState,
     mkValue,
     FieldResModel,
+    sortErrors,
+    EventHandler (..),
   )
 where
 
-import Control.Applicative (pure)
-import Control.Monad (Monad)
 import qualified Data.Aeson as A
-import Data.Functor (fmap)
 import qualified Data.HashMap.Lazy as HM
-import Data.Maybe (maybe)
 import Data.Morpheus.Internal.Utils
   ( mapTuple,
   )
@@ -71,13 +65,7 @@
 import qualified Data.Vector as V
   ( toList,
   )
-import Prelude
-  ( ($),
-    (.),
-    Bool,
-    Float,
-    Int,
-  )
+import Relude
 
 mkString :: Token -> ResModel o e m
 mkString = ResScalar . String
diff --git a/src/Data/Morpheus/Types/Internal/Resolving/Core.hs b/src/Data/Morpheus/Types/Internal/Resolving/Core.hs
--- a/src/Data/Morpheus/Types/Internal/Resolving/Core.hs
+++ b/src/Data/Morpheus/Types/Internal/Resolving/Core.hs
@@ -16,13 +16,10 @@
     cleanEvents,
     PushEvents (..),
     resultOr,
+    sortErrors,
   )
 where
 
-import Control.Applicative (Applicative (..), liftA2)
-import Control.Monad (Monad (..))
-import Control.Monad.Trans.Class (MonadTrans (..))
-import Data.Functor ((<$>), Functor (..))
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
   )
@@ -32,11 +29,7 @@
     ValidationError (..),
     toGQLError,
   )
-import Data.Semigroup ((<>))
-import Prelude
-  ( ($),
-    (.),
-  )
+import Relude
 
 type Eventless = Result ()
 
@@ -84,6 +77,10 @@
 resultOr _ f (Success x _ _) = f x
 resultOr f _ (Failure e) = f e
 
+sortErrors :: Result e a -> Result e a
+sortErrors (Failure errors) = Failure (sortOn locations errors)
+sortErrors x = x
+
 -- ResultT
 newtype ResultT event (m :: * -> *) a = ResultT
   { runResultT :: m (Result event a)
@@ -104,7 +101,7 @@
         result2 <- runResultT (mFunc value1)
         case result2 of
           Failure errors -> pure $ Failure (errors <> w1)
-          Success v2 w2 e2 -> return $ Success v2 (w1 <> w2) (e1 <> e2)
+          Success v2 w2 e2 -> pure $ Success v2 (w1 <> w2) (e1 <> e2)
 
 instance MonadTrans (ResultT event) where
   lift = ResultT . fmap pure
diff --git a/src/Data/Morpheus/Types/Internal/Resolving/Event.hs b/src/Data/Morpheus/Types/Internal/Resolving/Event.hs
--- a/src/Data/Morpheus/Types/Internal/Resolving/Event.hs
+++ b/src/Data/Morpheus/Types/Internal/Resolving/Event.hs
@@ -1,32 +1,25 @@
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GADTs #-}
-{-# LANGUAGE KindSignatures #-}
-{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE TypeFamilies #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Types.Internal.Resolving.Event
-  ( Event (..),
-    Channel (..),
-    eventChannels,
+  ( EventHandler (..),
+    ResponseEvent (..),
   )
 where
 
-import Prelude
-  ( Eq (..),
-    fmap,
+import Data.Morpheus.Types.IO
+  ( GQLResponse,
   )
 
--- Channel
-data Channel (event :: *) where
-  Channel :: a -> Channel (Event a c)
-
-data Event e c = Event
-  { channels :: [e],
-    content :: c
-  }
-
-eventChannels :: Event e c -> [Channel (Event e c)]
-eventChannels Event {channels} = fmap Channel channels
+class EventHandler e where
+  type Channel e
+  getChannels :: e -> [Channel e]
 
-instance (Eq ch) => Eq (Channel (Event ch con)) where
-  Channel x == Channel y = x == y
+data ResponseEvent event (m :: * -> *)
+  = Publish event
+  | Subscribe
+      { subChannel :: Channel event,
+        subRes :: event -> m GQLResponse
+      }
diff --git a/src/Data/Morpheus/Types/Internal/Resolving/Resolver.hs b/src/Data/Morpheus/Types/Internal/Resolving/Resolver.hs
--- a/src/Data/Morpheus/Types/Internal/Resolving/Resolver.hs
+++ b/src/Data/Morpheus/Types/Internal/Resolving/Resolver.hs
@@ -14,16 +14,13 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Types.Internal.Resolving.Resolver
-  ( Event (..),
-    Resolver,
+  ( Resolver,
     LiftOperation,
     lift,
     subscribe,
-    SubEvent,
     ResponseEvent (..),
     ResponseStream,
     ObjectResModel (..),
@@ -40,26 +37,15 @@
   )
 where
 
-import Control.Applicative (Applicative (..))
-import Control.Monad (Monad (..), join)
-import Control.Monad.Fail (MonadFail (..))
-import Control.Monad.IO.Class (MonadIO (..))
-import Control.Monad.Reader (MonadReader (..), asks)
-import Control.Monad.Trans.Class (MonadTrans (..))
-import Control.Monad.Trans.Reader
-  ( ReaderT (..),
-    mapReaderT,
-  )
-import Data.Functor ((<$>), Functor (..))
-import Data.HashMap.Lazy (HashMap)
+import Control.Monad.Trans.Reader (mapReaderT)
 import qualified Data.HashMap.Lazy as HM
-import Data.Maybe (Maybe (..), maybe)
 import Data.Morpheus.Error.Selection (subfieldsNotSelected)
+import Data.Morpheus.Ext.SemigroupM (SemigroupM (..))
 import Data.Morpheus.Internal.Utils
-  ( SemigroupM (..),
-    empty,
+  ( empty,
     keyOf,
     selectOr,
+    traverseCollection,
   )
 import Data.Morpheus.Types.IO
   ( GQLResponse,
@@ -68,7 +54,6 @@
 import Data.Morpheus.Types.Internal.AST
   ( Arguments,
     FieldName,
-    GQLErrors,
     GQLValue (..),
     InternalError,
     MUTATION,
@@ -93,9 +78,6 @@
     msg,
     toGQLError,
   )
-import Data.Morpheus.Types.Internal.AST.MergeSet
-  ( toOrdMap,
-  )
 import Data.Morpheus.Types.Internal.Resolving.Core
   ( Eventless,
     Failure (..),
@@ -106,8 +88,8 @@
     mapEvent,
   )
 import Data.Morpheus.Types.Internal.Resolving.Event
-  ( Channel (..),
-    Event (..),
+  ( EventHandler (..),
+    ResponseEvent (..),
   )
 import Data.Morpheus.Types.Internal.Resolving.ResolverState
   ( ResolverContext (..),
@@ -120,28 +102,17 @@
     runResolverStateT,
     toResolverStateT,
   )
-import Data.Semigroup
-  ( Semigroup (..),
-  )
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    (.),
-    Eq (..),
-    Show (..),
-    otherwise,
+import Relude hiding
+  ( Show,
+    empty,
+    show,
   )
+import Prelude (Show (..))
 
 type WithOperation (o :: OperationType) = LiftOperation o
 
 type ResponseStream event (m :: * -> *) = ResultT (ResponseEvent event m) m
 
-data ResponseEvent event (m :: * -> *)
-  = Publish event
-  | Subscribe (SubEvent event m)
-
-type SubEvent event m = Event (Channel event) (event -> m GQLResponse)
-
 data SubscriptionField (a :: *) where
   SubscriptionField ::
     { channel :: forall e m v. a ~ Resolver SUBSCRIPTION e m v => Channel e,
@@ -181,10 +152,6 @@
   (ResolverM x) >>= m2 = ResolverM (x >>= runResolverM . m2)
   (ResolverS res) >>= m2 = ResolverS (liftSubResolver m2 <$> res)
 
-#if __GLASGOW_HASKELL__ < 808
-  fail = failure . msg
-# endif
-
 liftSubResolver ::
   (Monad m) =>
   (t -> Resolver SUBSCRIPTION r m a) ->
@@ -204,10 +171,7 @@
   lift = packResolver . lift
 
 -- Failure
-instance (LiftOperation o, Monad m) => Failure Message (Resolver o e m) where
-  failure = packResolver . failure
-
-instance (LiftOperation o, Monad m) => Failure GQLErrors (Resolver o e m) where
+instance (LiftOperation o, Monad m, Failure err (ResolverStateT e m)) => Failure err (Resolver o e m) where
   failure = packResolver . failure
 
 instance (Monad m, LiftOperation o) => MonadFail (Resolver o e m) where
@@ -249,17 +213,16 @@
   packResolver = ResolverS . pure . lift . clearStateResolverEvents
 
 subscribe ::
-  forall e channel cont m a.
-  (Monad m, Event channel cont ~ e) =>
-  channel ->
+  (Monad m) =>
+  Channel e ->
   Resolver QUERY e m (e -> Resolver SUBSCRIPTION e m a) ->
   SubscriptionField (Resolver SUBSCRIPTION e m a)
 subscribe ch res =
-  SubscriptionField (Channel ch)
+  SubscriptionField ch
     $ ResolverS
     $ fromSub <$> runResolverQ res
   where
-    fromSub :: (e -> Resolver SUBSCRIPTION e m a) -> ReaderT e (ResolverStateT () m) a
+    fromSub :: Monad m => (e -> Resolver SUBSCRIPTION e m a) -> ReaderT e (ResolverStateT () m) a
     fromSub f = join (ReaderT (runResolverS . f))
 
 withArguments ::
@@ -311,7 +274,7 @@
   ResModel o e m ->
   Resolver o e m ValidValue
 resolveObject selectionSet (ResObject drv@ObjectResModel {__typename}) =
-  Object . toOrdMap <$> traverse resolver selectionSet
+  Object <$> traverseCollection resolver selectionSet
   where
     resolver :: Selection VALID -> Resolver o e m (ObjectEntry VALID)
     resolver currentSelection =
@@ -385,7 +348,7 @@
   where
     handle = do
       channel <- channelGenerator currentSelection
-      pure $ Subscribe (Event [channel] res)
+      pure $ Subscribe channel res
 subscriptionEvents ctx Nothing _ = failure [resolverFailureMessage ctx "channel Resolver is not defined"]
 
 -- Resolver Models -------------------------------------------------------------------
diff --git a/src/Data/Morpheus/Types/Internal/Resolving/ResolverState.hs b/src/Data/Morpheus/Types/Internal/Resolving/ResolverState.hs
--- a/src/Data/Morpheus/Types/Internal/Resolving/ResolverState.hs
+++ b/src/Data/Morpheus/Types/Internal/Resolving/ResolverState.hs
@@ -13,7 +13,6 @@
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Types.Internal.Resolving.ResolverState
@@ -29,29 +28,22 @@
   )
 where
 
-import Control.Applicative (Applicative (..))
-import Control.Monad (Monad (..))
-import Control.Monad.Reader (MonadReader (..), asks)
-import Control.Monad.Trans.Class (MonadTrans (..))
-import Control.Monad.Trans.Reader
-  ( ReaderT (..),
-    mapReaderT,
-  )
-import Data.Functor (Functor (..))
-import Data.Functor.Identity (Identity (..))
+import Control.Monad.Trans.Reader (mapReaderT)
 import Data.Morpheus.Rendering.RenderGQL
   ( RenderGQL (..),
+    renderGQL,
   )
 import Data.Morpheus.Types.Internal.AST
   ( GQLError (..),
     GQLErrors,
-    InternalError,
+    InternalError (..),
     Message,
     Operation,
     Schema,
     Selection (..),
     TypeName,
     VALID,
+    ValidationError (..),
     msg,
   )
 import Data.Morpheus.Types.Internal.Config (Config (..))
@@ -63,17 +55,7 @@
     ResultT (..),
     cleanEvents,
   )
-import Data.Semigroup
-  ( Semigroup (..),
-  )
-import Prelude
-  ( ($),
-    (.),
-    Bool (..),
-    Int,
-    Show (..),
-    id,
-  )
+import Relude
 
 data ResolverContext = ResolverContext
   { currentSelection :: Selection VALID,
@@ -119,6 +101,11 @@
     ctx <- asks id
     failure [renderInternalResolverError ctx message]
 
+instance Monad m => Failure [ValidationError] (ResolverStateT e m) where
+  failure messages = do
+    ctx <- asks id
+    failure $ fmap (resolverFailureMessage ctx . validationMessage) messages
+
 instance (Monad m) => Failure GQLErrors (ResolverStateT e m) where
   failure = ResolverStateT . lift . failure
 
@@ -196,7 +183,7 @@
 renderSection label content =
   "\n\n" <> label <> ":\n" <> line
     <> "\n\n"
-    <> msg (render content)
+    <> msg (renderGQL content)
     <> "\n\n"
   where
     line = stimes (50 :: Int) "-"
diff --git a/src/Data/Morpheus/Types/Internal/Stitching.hs b/src/Data/Morpheus/Types/Internal/Stitching.hs
--- a/src/Data/Morpheus/Types/Internal/Stitching.hs
+++ b/src/Data/Morpheus/Types/Internal/Stitching.hs
@@ -11,24 +11,23 @@
   )
 where
 
-import Control.Applicative (Applicative (..))
-import Control.Monad (Monad (..))
-import Data.Functor ((<$>))
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Error.NameCollision (NameCollision (..))
+import Data.Morpheus.Ext.Map
+  ( resolveWith,
+    runResolutionT,
+  )
+import qualified Data.Morpheus.Ext.OrdMap as OM
+import qualified Data.Morpheus.Ext.SafeHashMap as SHM
+import Data.Morpheus.Ext.SemigroupM (SemigroupM (..))
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
-    SemigroupM (..),
     mergeT,
     prop,
-    resolveWith,
-    runResolutionT,
   )
 import Data.Morpheus.Types.Internal.AST
   ( Directive,
     DirectiveDefinition,
     FieldDefinition,
-    Fields (..),
     FieldsDefinition,
     Schema (..),
     TRUE,
@@ -37,17 +36,9 @@
     TypeLib,
     ValidationErrors,
   )
-import qualified Data.Morpheus.Types.Internal.AST.OrdMap as OM (unsafeFromValues)
-import qualified Data.Morpheus.Types.Internal.AST.SafeHashMap as SHM (unsafeFromValues)
 import Data.Morpheus.Types.Internal.Resolving (RootResModel)
 import qualified Data.Morpheus.Types.Internal.Resolving as R (RootResModel (..))
-import Data.Semigroup (Semigroup (..))
-import Prelude
-  ( ($),
-    (.),
-    Eq (..),
-    otherwise,
-  )
+import Relude hiding (optional)
 
 equal :: (Eq a, Applicative m, Failure ValidationErrors m) => ValidationErrors -> a -> a -> m a
 equal err p1 p2
@@ -76,7 +67,7 @@
       <*> prop stitch directiveDefinitions s1 s2
 
 instance Stitching (TypeLib s) where
-  stitch x y = runResolutionT (mergeT x y) SHM.unsafeFromValues (resolveWith stitch)
+  stitch x y = runResolutionT (mergeT x y) SHM.unsafeFromList (resolveWith stitch)
 
 instance Stitching [DirectiveDefinition s] where
   stitch = concatM
@@ -96,18 +87,16 @@
   m (TypeDefinition c s)
 stitchOperation x y =
   TypeDefinition
-    <$> prop fstM typeName x y
-    <*> prop fstM typeFingerprint x y
-    <*> prop concatM typeDescription x y
+    <$> prop concatM typeDescription x y
+    <*> prop fstM typeName x y
     <*> prop stitch typeDirectives x y
     <*> prop stitch typeContent x y
 
 instance Stitching (TypeDefinition cat s) where
   stitch x y =
     TypeDefinition
-      <$> prop (equal [nameCollision y]) typeName x y
-      <*> prop (equal [nameCollision y]) typeFingerprint x y
-      <*> prop concatM typeDescription x y
+      <$> prop concatM typeDescription x y
+      <*> prop (equal [nameCollision y]) typeName x y
       <*> prop stitch typeDirectives x y
       <*> prop stitch typeContent x y
 
@@ -117,7 +106,7 @@
   stitch _ _ = failure (["Schema Stitching works only for objects"] :: ValidationErrors)
 
 instance Stitching (FieldsDefinition cat s) where
-  stitch (Fields x) (Fields y) = Fields <$> runResolutionT (mergeT x y) OM.unsafeFromValues (resolveWith stitch)
+  stitch x y = runResolutionT (mergeT x y) OM.unsafeFromList (resolveWith stitch)
 
 instance Stitching (FieldDefinition cat s) where
   stitch old new
diff --git a/src/Data/Morpheus/Types/Internal/Validation.hs b/src/Data/Morpheus/Types/Internal/Validation.hs
--- a/src/Data/Morpheus/Types/Internal/Validation.hs
+++ b/src/Data/Morpheus/Types/Internal/Validation.hs
@@ -57,18 +57,6 @@
   )
 where
 
--- MORPHEUS
-
-import Control.Applicative (pure)
-import Control.Monad ((>>=))
-import Control.Monad.Trans.Reader
-  ( ask,
-  )
-import Data.Either (Either)
-import Data.Foldable (null)
-import Data.Functor ((<$>), fmap)
-import Data.List (filter)
-import Data.Maybe (Maybe (..), fromMaybe, maybe)
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
     KeyOf (..),
@@ -152,14 +140,9 @@
     withScope,
     withScopeType,
   )
-import Data.Semigroup
-  ( (<>),
-  )
-import Prelude
-  ( ($),
-    (.),
-    not,
-    otherwise,
+import Relude hiding
+  ( Constraint,
+    asks,
   )
 
 getUnused :: (KeyOf k b, Selectable k a c) => c -> [b] -> [b]
diff --git a/src/Data/Morpheus/Types/Internal/Validation/Error.hs b/src/Data/Morpheus/Types/Internal/Validation/Error.hs
--- a/src/Data/Morpheus/Types/Internal/Validation/Error.hs
+++ b/src/Data/Morpheus/Types/Internal/Validation/Error.hs
@@ -16,8 +16,6 @@
   )
 where
 
--- MORPHEUS
-import Data.Maybe (maybeToList)
 import Data.Morpheus.Error.Selection (unknownSelectionField)
 import Data.Morpheus.Types.Internal.AST
   ( Argument (..),
@@ -55,8 +53,7 @@
     Target (..),
     renderInputPrefix,
   )
-import Data.Semigroup ((<>))
-import Prelude (($))
+import Relude
 
 class Unused ctx c where
   unused :: ctx -> c -> ValidationError
diff --git a/src/Data/Morpheus/Types/Internal/Validation/Internal.hs b/src/Data/Morpheus/Types/Internal/Validation/Internal.hs
--- a/src/Data/Morpheus/Types/Internal/Validation/Internal.hs
+++ b/src/Data/Morpheus/Types/Internal/Validation/Internal.hs
@@ -20,12 +20,6 @@
   )
 where
 
--- MORPHEUS
-
-import Control.Applicative (Applicative, pure)
-import Control.Monad ((>=>), Monad ((>>=)))
-import Data.Functor ((<$>))
-import Data.Maybe (Maybe (..), maybe)
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
     selectBy,
@@ -67,14 +61,7 @@
     SelectionValidator,
     askSchema,
   )
-import Data.Semigroup
-  ( (<>),
-  )
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    (.),
-  )
+import Relude
 
 askType ::
   Constraints m c cat s =>
diff --git a/src/Data/Morpheus/Types/Internal/Validation/SchemaValidator.hs b/src/Data/Morpheus/Types/Internal/Validation/SchemaValidator.hs
--- a/src/Data/Morpheus/Types/Internal/Validation/SchemaValidator.hs
+++ b/src/Data/Morpheus/Types/Internal/Validation/SchemaValidator.hs
@@ -26,11 +26,6 @@
   )
 where
 
---import Data.Morpheus.Error.Document.Interface (unknownInterface)
-
--- MORPHEUS
-
-import Control.Applicative (pure)
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
   )
@@ -51,15 +46,7 @@
     renderField,
     withContext,
   )
-import Data.Semigroup
-  ( (<>),
-    Semigroup (..),
-  )
-import Prelude
-  ( (.),
-    Show (..),
-    const,
-  )
+import Relude hiding (local)
 
 newtype TypeSystemContext c = TypeSystemContext
   {local :: c}
diff --git a/src/Data/Morpheus/Types/Internal/Validation/Validator.hs b/src/Data/Morpheus/Types/Internal/Validation/Validator.hs
--- a/src/Data/Morpheus/Types/Internal/Validation/Validator.hs
+++ b/src/Data/Morpheus/Types/Internal/Validation/Validator.hs
@@ -56,25 +56,13 @@
   )
 where
 
--- MORPHEUS
-
-import Control.Applicative (Applicative)
-import Control.Monad (Monad)
-import Control.Monad.Reader (MonadReader (..))
-import Control.Monad.Trans.Class (MonadTrans (..))
-import Control.Monad.Trans.Reader
-  ( ReaderT (..),
-    withReaderT,
-  )
-import Data.Functor ((<$>), Functor (..))
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Error.Utils
   ( validationErrorMessage,
   )
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
   )
-import Data.Morpheus.Rendering.RenderGQL (RenderGQL (..))
+import Data.Morpheus.Rendering.RenderGQL (RenderGQL (..), renderGQL)
 import Data.Morpheus.Types.Internal.AST
   ( Directive (..),
     FieldDefinition (..),
@@ -109,17 +97,10 @@
 import Data.Morpheus.Types.Internal.Resolving
   ( Eventless,
   )
-import Data.Semigroup
-  ( (<>),
-    stimes,
-  )
-import Prelude
-  ( ($),
-    (.),
-    Bool,
-    Int,
-    Show,
-    otherwise,
+import Relude hiding
+  ( Constraint,
+    asks,
+    get,
   )
 
 data Prop = Prop
@@ -528,18 +509,18 @@
     renderSection
       "Scope"
       ( "referenced by type "
-          <> render currentTypeName
+          <> renderGQL currentTypeName
           <> " of kind "
-          <> render currentTypeKind
+          <> renderGQL currentTypeKind
           <> " in field "
-          <> render fieldname
+          <> renderGQL fieldname
       )
 
 renderSection :: RenderGQL a => Message -> a -> Message
 renderSection label content =
   "\n\n" <> label <> ":\n" <> line
     <> "\n\n"
-    <> msg (render content)
+    <> msg (renderGQL content)
     <> "\n\n"
   where
     line = stimes (50 :: Int) "-"
diff --git a/src/Data/Morpheus/Types/SelectionTree.hs b/src/Data/Morpheus/Types/SelectionTree.hs
--- a/src/Data/Morpheus/Types/SelectionTree.hs
+++ b/src/Data/Morpheus/Types/SelectionTree.hs
@@ -8,9 +8,6 @@
 -- Description : A simple interface for Morpheus internal Selection Set's representation.
 module Data.Morpheus.Types.SelectionTree where
 
-import Data.Bool (Bool (..))
-import Data.Foldable (concatMap)
-import Data.Monoid (mempty)
 import Data.Morpheus.Internal.Utils (elems, keyOf)
 import Data.Morpheus.Types.Internal.AST
   ( FieldName (..),
@@ -20,11 +17,8 @@
     UnionTag (..),
     VALID,
   )
-import Data.String
-  ( IsString (..),
-  )
 import Data.Text (unpack)
-import Prelude ((.))
+import Relude
 
 -- | The 'SelectionTree' instance is a simple interface for interacting
 -- with morpheus's internal AST while keeping the ability to safely change the concrete
diff --git a/src/Data/Morpheus/Validation/Document/Validation.hs b/src/Data/Morpheus/Validation/Document/Validation.hs
--- a/src/Data/Morpheus/Validation/Document/Validation.hs
+++ b/src/Data/Morpheus/Validation/Document/Validation.hs
@@ -18,24 +18,19 @@
   )
 where
 
-import Control.Applicative ((*>), (<*>), Applicative (..), pure)
-import Control.Monad ((>=>))
-import Control.Monad.Reader (asks)
-import Data.Foldable (traverse_)
-import Data.Functor ((<$>), fmap)
-import Data.Maybe (Maybe (..), maybe)
 import Data.Morpheus.Error.Document.Interface
   ( ImplementsError (..),
     PartialImplements (..),
   )
-import Data.Morpheus.Internal.Utils
+import Data.Morpheus.Ext.SemigroupM
   ( (<:>),
-    KeyOf (..),
+  )
+import Data.Morpheus.Internal.Utils
+  ( KeyOf (..),
     Selectable (..),
     elems,
     empty,
     failure,
-    ordTraverse,
   )
 import Data.Morpheus.Schema.Schema
   ( internalSchema,
@@ -98,17 +93,7 @@
 import Data.Morpheus.Validation.Internal.Value
   ( validateInputByTypeRef,
   )
-import Data.Proxy (Proxy (..))
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    (&&),
-    (.),
-    (==),
-    Bool,
-    not,
-    otherwise,
-  )
+import Relude hiding (empty, local)
 
 class ValidateSchema s where
   validateSchema :: Bool -> Config -> Schema s -> Eventless (Schema VALID)
@@ -165,16 +150,14 @@
 validateType
   TypeDefinition
     { typeName,
-      typeFingerprint,
       typeDescription,
       typeDirectives,
       typeContent
     } =
     inType typeName $
       TypeDefinition
-        typeName
-        typeFingerprint
         typeDescription
+        typeName
         <$> validateDirectives (typeDirectiveLocation typeContent) typeDirectives
         <*> validateTypeContent typeContent
 
@@ -195,24 +178,24 @@
     { objectImplements,
       objectFields
     } =
-    do
-      validateImplements objectImplements objectFields
-      DataObject objectImplements <$> ordTraverse validateField objectFields
+    DataObject
+      <$> validateImplements objectImplements objectFields
+      <*> traverse validateField objectFields
 validateTypeContent DataInputObject {inputObjectFields} =
-  DataInputObject <$> ordTraverse validateField inputObjectFields
+  DataInputObject <$> traverse validateField inputObjectFields
 validateTypeContent DataScalar {..} = pure DataScalar {..}
 validateTypeContent DataEnum {enumMembers} = DataEnum <$> traverse validateEnumMember enumMembers
 validateTypeContent DataInputUnion {inputUnionMembers} =
   DataInputUnion <$> traverse validateUnionMember inputUnionMembers
 validateTypeContent DataUnion {unionMembers} = DataUnion <$> traverse validateUnionMember unionMembers
 validateTypeContent (DataInterface fields) =
-  DataInterface <$> ordTraverse validateField fields
+  DataInterface <$> traverse validateField fields
 
 validateEnumMember ::
   DataEnumValue CONST -> SchemaValidator TypeName (DataEnumValue VALID)
-validateEnumMember DataEnumValue {enumDirectives = directives, ..} = do
-  enumDirectives <- validateDirectives ENUM_VALUE directives
-  pure DataEnumValue {..}
+validateEnumMember DataEnumValue {enumDirectives = directives, ..} =
+  DataEnumValue enumDescription enumName
+    <$> validateDirectives ENUM_VALUE directives
 
 validateUnionMember ::
   UnionMember cat CONST -> SchemaValidator TypeName (UnionMember cat VALID)
@@ -236,11 +219,11 @@
   inField
     fieldName
     ( FieldDefinition
-        fieldName
         fieldDescription
+        fieldName
         fieldType
-        <$> validateDirectives (directiveLocation (Proxy @cat)) fieldDirectives
-          <*> validateOptional (checkFieldContent field) fieldContent
+        <$> validateOptional (checkFieldContent field) fieldContent
+        <*> validateDirectives (directiveLocation (Proxy @cat)) fieldDirectives
     )
 
 checkFieldContent ::
@@ -260,7 +243,7 @@
   SchemaValidator (TypeName, FieldName) (ArgumentsDefinition VALID)
 validateArgumentsDefinition (ArgumentsDefinition meta args) =
   ArgumentsDefinition meta
-    <$> ordTraverse
+    <$> traverse
       validateArgumentDefinition
       args
 
@@ -269,11 +252,11 @@
   SchemaValidator (TypeName, FieldName) (ArgumentDefinition VALID)
 validateArgumentDefinition FieldDefinition {..} =
   FieldDefinition
-    fieldName
     fieldDescription
+    fieldName
     fieldType
-    <$> validateDirectives ARGUMENT_DEFINITION fieldDirectives
-    <*> validateOptional (validateArgumentDefaultValue fieldName fieldType) fieldContent
+    <$> validateOptional (validateArgumentDefaultValue fieldName fieldType) fieldContent
+    <*> validateDirectives ARGUMENT_DEFINITION fieldDirectives
 
 validateArgumentDefaultValue ::
   FieldName ->
@@ -294,10 +277,12 @@
 validateImplements ::
   [TypeName] ->
   FieldsDefinition OUT CONST ->
-  SchemaValidator TypeName ()
-validateImplements objectImplements objectFields = do
-  interface <- traverse selectInterface objectImplements
-  traverse_ (mustBeSubset objectFields) interface
+  SchemaValidator TypeName [TypeName]
+validateImplements objectImplements objectFields =
+  ( traverse selectInterface objectImplements
+      >>= traverse_ (mustBeSubset objectFields)
+  )
+    $> objectImplements
 
 mustBeSubset ::
   FieldsDefinition OUT CONST ->
@@ -318,9 +303,8 @@
       fieldDirectives
     } =
     inField fieldName $
-      do
-        _ <- validateDirectives FIELD_DEFINITION fieldDirectives
-        selectOr err (isSuptype interfaceField) fieldName objFields
+      validateDirectives FIELD_DEFINITION fieldDirectives
+        *> selectOr err (isSuptype interfaceField) fieldName objFields
     where
       err = failImplements Missing
 
@@ -401,7 +385,6 @@
 validateDefaultValue typeRef =
   validateInputByTypeRef (Typed typeRef)
 
--- TODO: validate directives
 validateDirectiveDefinition :: DirectiveDefinition CONST -> SchemaValidator () (DirectiveDefinition VALID)
 validateDirectiveDefinition DirectiveDefinition {directiveDefinitionArgs = args, ..} =
   inType "Directive" $ inField directiveDefinitionName $ do
diff --git a/src/Data/Morpheus/Validation/Internal/Arguments.hs b/src/Data/Morpheus/Validation/Internal/Arguments.hs
--- a/src/Data/Morpheus/Validation/Internal/Arguments.hs
+++ b/src/Data/Morpheus/Validation/Internal/Arguments.hs
@@ -18,14 +18,8 @@
   )
 where
 
-import Control.Applicative ((*>), pure)
-import Control.Monad ((>=>), (>>=))
-import Data.Functor ((<$>), fmap)
-import Data.Maybe (fromMaybe, maybe)
 import Data.Morpheus.Internal.Utils
   ( empty,
-    ordTraverse,
-    ordTraverse_,
   )
 import Data.Morpheus.Types.Internal.AST
   ( Argument (..),
@@ -66,12 +60,7 @@
   ( ValidateWithDefault,
     validateInputByTypeRef,
   )
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    (.),
-    flip,
-  )
+import Relude hiding (empty)
 
 type VariableConstraints ctx =
   ( GetWith ctx (VariableDefinitions VALID),
@@ -103,7 +92,9 @@
 toArgument :: FieldDefinition IN s -> Value schemaS -> Validator schemaStage ctx (Argument schemaS)
 toArgument
   FieldDefinition {fieldName}
-  value = flip (Argument fieldName) value . fromMaybe (Position 0 0) <$> asksScope position
+  value = mkArg . fromMaybe (Position 0 0) <$> asksScope position
+    where
+      mkArg pos = Argument pos fieldName value
 
 validateArgumentValue ::
   (ValidateWithDefault ctx schemaS valueS) =>
@@ -116,8 +107,8 @@
     withPosition argumentPosition
       $ startInput (SourceArgument argumentName)
       $ Argument
-        argumentName
         argumentPosition
+        argumentName
         <$> validateInputByTypeRef (typed fieldType field) argumentValue
 
 validateFieldArguments ::
@@ -151,9 +142,9 @@
   Arguments s ->
   Validator schemaStage ctx (Arguments VALID)
 validateArguments checkUnknown argsDef rawArgs = do
-  args <- ordTraverse resolve rawArgs
-  ordTraverse_ checkUnknown args
-    *> ordTraverse (validateArgument args) (arguments argsDef)
+  args <- traverse resolve rawArgs
+  traverse_ checkUnknown args
+    *> traverse (validateArgument args) (arguments argsDef)
 
 class Resolve f s ctx where
   resolve :: f s -> Validator schemaS ctx (f CONST)
diff --git a/src/Data/Morpheus/Validation/Internal/Directive.hs b/src/Data/Morpheus/Validation/Internal/Directive.hs
--- a/src/Data/Morpheus/Validation/Internal/Directive.hs
+++ b/src/Data/Morpheus/Validation/Internal/Directive.hs
@@ -9,7 +9,6 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Validation.Internal.Directive
@@ -18,10 +17,6 @@
   )
 where
 
-import Control.Applicative ((*>), pure)
-import Control.Monad ((>>=))
-import Data.Functor ((<$>))
-import Data.List (elem)
 import Data.Morpheus.Error.Utils
   ( validationErrorMessage,
   )
@@ -54,16 +49,7 @@
   ( ArgumentsConstraints,
     validateDirectiveArguments,
   )
-import Data.Semigroup ((<>))
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    (&&),
-    (==),
-    Bool (..),
-    Maybe (..),
-    otherwise,
-  )
+import Relude
 
 validateDirectives ::
   ArgumentsConstraints ctx schemaS s =>
@@ -81,7 +67,7 @@
   withDirective directive $ do
     Schema {directiveDefinitions} <- askSchema
     directiveDef <- selectKnown directive directiveDefinitions
-    Directive directiveName directivePosition
+    Directive directivePosition directiveName
       <$> ( validateDirectiveLocation location directive directiveDef
               *> validateDirectiveArguments directiveDef directiveArgs
           )
diff --git a/src/Data/Morpheus/Validation/Internal/Value.hs b/src/Data/Morpheus/Validation/Internal/Value.hs
--- a/src/Data/Morpheus/Validation/Internal/Value.hs
+++ b/src/Data/Morpheus/Validation/Internal/Value.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE LambdaCase #-}
@@ -13,18 +14,11 @@
   )
 where
 
-import Control.Applicative ((*>), pure)
-import Data.Either (Either (..))
-import Data.Function ((&))
-import Data.Functor ((<$>), fmap)
-import Data.List (any, elem)
-import Data.Maybe (Maybe (..), maybe)
 import Data.Morpheus.Error.Input (typeViolation)
 import Data.Morpheus.Error.Variable (incompatibleVariableType)
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
-    ordTraverse_,
-    traverseCollection,
+    fromElems,
   )
 import Data.Morpheus.Types.Internal.AST
   ( CONST,
@@ -49,6 +43,7 @@
     UnionMember (..),
     VALID,
     ValidValue,
+    ValidationErrors,
     Value (..),
     Variable (..),
     Variable (..),
@@ -62,9 +57,6 @@
     untyped,
     withPosition,
   )
-import Data.Morpheus.Types.Internal.AST.OrdMap
-  ( unsafeFromValues,
-  )
 import Data.Morpheus.Types.Internal.Validation
   ( InputContext,
     InputSource (..),
@@ -82,20 +74,7 @@
     selectWithDefaultValue,
     withScopeType,
   )
-import Data.Semigroup ((<>))
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    (&&),
-    (.),
-    Bool (..),
-    Eq (..),
-    const,
-    fst,
-    id,
-    not,
-    otherwise,
-  )
+import Relude
 
 violation ::
   Maybe Message ->
@@ -224,7 +203,7 @@
 validatInputUnion inputUnion rawFields =
   case constraintInputUnion inputUnion rawFields of
     Left message -> violation (Just message) (Object rawFields)
-    Right (UnionMember {memberName}, Nothing) -> pure (mkInputObject memberName [])
+    Right (UnionMember {memberName}, Nothing) -> mkInputObject memberName []
     Right (name, Just value) -> validatInputUnionMember name value
 
 validatInputUnionMember ::
@@ -235,10 +214,10 @@
 validatInputUnionMember member@UnionMember {memberName} value = do
   inputDef <- fst <$> askTypeMember member
   validValue <- validateInputByType [TypeMaybe] inputDef value
-  pure $ mkInputObject memberName [ObjectEntry (toFieldName memberName) validValue]
+  mkInputObject memberName [ObjectEntry (toFieldName memberName) validValue]
 
-mkInputObject :: TypeName -> [ObjectEntry s] -> Value s
-mkInputObject name xs = Object $ unsafeFromValues $ ObjectEntry "__typename" (Enum name) : xs
+mkInputObject :: (Monad m, Failure ValidationErrors m) => TypeName -> [ObjectEntry s] -> m (Value s)
+mkInputObject name xs = Object <$> fromElems (ObjectEntry "__typename" (Enum name) : xs)
 
 -- INUT Object
 validateInputObject ::
@@ -247,8 +226,8 @@
   Object valueS ->
   InputValidator schemaS ctx (Object VALID)
 validateInputObject fieldsDef object =
-  ordTraverse_ (`selectKnown` fieldsDef) object
-    *> traverseCollection (validateWithDefault object) fieldsDef
+  traverse_ (`selectKnown` fieldsDef) object
+    *> traverse (validateWithDefault object) fieldsDef
 
 class ValidateWithDefault c schemaS s where
   validateWithDefault ::
diff --git a/src/Data/Morpheus/Validation/Query/Fragment.hs b/src/Data/Morpheus/Validation/Query/Fragment.hs
--- a/src/Data/Morpheus/Validation/Query/Fragment.hs
+++ b/src/Data/Morpheus/Validation/Query/Fragment.hs
@@ -18,12 +18,6 @@
   )
 where
 
-import Control.Applicative ((<*>), pure)
-import Control.Monad ((>>=))
-import Data.Functor ((<$>))
-import Data.List (elem)
-import Data.Maybe (Maybe (..))
--- MORPHEUS
 import Data.Morpheus.Error.Fragment
   ( cannotBeSpreadOnType,
   )
@@ -57,11 +51,7 @@
     constraint,
     selectKnown,
   )
-import Data.Traversable (traverse)
-import Prelude
-  ( ($),
-    otherwise,
-  )
+import Relude
 
 class ResolveFragment (s :: Stage) where
   resolveValidFragment ::
diff --git a/src/Data/Morpheus/Validation/Query/FragmentPreconditions.hs b/src/Data/Morpheus/Validation/Query/FragmentPreconditions.hs
--- a/src/Data/Morpheus/Validation/Query/FragmentPreconditions.hs
+++ b/src/Data/Morpheus/Validation/Query/FragmentPreconditions.hs
@@ -12,11 +12,6 @@
   )
 where
 
-import Control.Applicative ((*>))
-import Control.Monad ((>>=))
-import Data.Foldable (concatMap)
-import Data.Functor ((<$>), fmap)
--- MORPHEUS
 import Data.Morpheus.Error.Fragment
   ( cannotSpreadWithinItself,
   )
@@ -45,10 +40,7 @@
     askFragments,
     checkUnused,
   )
-import Data.Semigroup ((<>))
-import Prelude
-  ( (.),
-  )
+import Relude
 
 checkUnusedFragments :: SelectionSet RAW -> BaseValidator ()
 checkUnusedFragments selectionSet = do
diff --git a/src/Data/Morpheus/Validation/Query/Selection.hs b/src/Data/Morpheus/Validation/Query/Selection.hs
--- a/src/Data/Morpheus/Validation/Query/Selection.hs
+++ b/src/Data/Morpheus/Validation/Query/Selection.hs
@@ -14,15 +14,13 @@
   )
 where
 
-import Control.Applicative ((<*>), pure)
-import Data.Foldable (null)
-import Data.Functor ((<$>), fmap)
-import Data.List (filter)
-import Data.Maybe (Maybe (..), maybe)
 import Data.Morpheus.Error.Selection
   ( hasNoSubfields,
     subfieldsNotSelected,
   )
+import Data.Morpheus.Ext.SemigroupM
+  ( concatTraverse,
+  )
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
     elems,
@@ -60,9 +58,6 @@
     typed,
     withPosition,
   )
-import Data.Morpheus.Types.Internal.AST.MergeSet
-  ( concatTraverse,
-  )
 import Data.Morpheus.Types.Internal.Validation
   ( FragmentValidator,
     SelectionValidator,
@@ -89,16 +84,7 @@
   ( validateInterfaceSelection,
     validateUnionSelection,
   )
-import Data.Semigroup ((<>))
-import Prelude
-  ( ($),
-    (&&),
-    (.),
-    Eq (..),
-    const,
-    not,
-    otherwise,
-  )
+import Relude hiding (empty)
 
 selectionsWitoutTypename :: SelectionSet VALID -> [Selection VALID]
 selectionsWitoutTypename = filter (("__typename" /=) . keyOf) . elems
diff --git a/src/Data/Morpheus/Validation/Query/UnionSelection.hs b/src/Data/Morpheus/Validation/Query/UnionSelection.hs
--- a/src/Data/Morpheus/Validation/Query/UnionSelection.hs
+++ b/src/Data/Morpheus/Validation/Query/UnionSelection.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TupleSections #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Validation.Query.UnionSelection
   ( validateUnionSelection,
@@ -13,12 +14,13 @@
   )
 where
 
-import Control.Monad ((>=>))
-import Data.Maybe (fromMaybe, isJust)
--- MORPHEUS
-import Data.Morpheus.Internal.Utils
+import Data.List (lookup)
+import Data.Morpheus.Ext.SemigroupM
   ( (<:>),
-    elems,
+    join,
+  )
+import Data.Morpheus.Internal.Utils
+  ( elems,
     empty,
     fromElems,
     singleton,
@@ -41,9 +43,6 @@
     mkType,
     toCategory,
   )
-import qualified Data.Morpheus.Types.Internal.AST.MergeSet as MS
-  ( join,
-  )
 import Data.Morpheus.Types.Internal.Validation
   ( FragmentValidator,
     Scope (..),
@@ -55,6 +54,7 @@
   ( ResolveFragment (resolveValidFragment),
     castFragmentType,
   )
+import Relude hiding (empty, join)
 
 -- returns all Fragments used for Possible Types
 splitFragment ::
@@ -104,8 +104,7 @@
   [TypeDefinition IMPLEMENTABLE VALID] ->
   [UnionTag] ->
   [(TypeName, [SelectionSet VALID])]
-tagUnionFragments types fragments =
-  filter notEmpty (map categorizeType types)
+tagUnionFragments types fragments = filter notEmpty (categorizeType <$> types)
   where
     notEmpty = not . null . snd
     categorizeType ::
@@ -140,7 +139,7 @@
   traverse joinCluster
     >=> fmap UnionSelection . fromElems
   where
-    joinCluster (typeName, fragmets) = UnionTag typeName <$> MS.join (selSet : fragmets)
+    joinCluster (typeName, fragmets) = UnionTag typeName <$> join (selSet : fragmets)
 
 withTypename ::
   SelectionSet VALID ->
diff --git a/src/Data/Morpheus/Validation/Query/Validation.hs b/src/Data/Morpheus/Validation/Query/Validation.hs
--- a/src/Data/Morpheus/Validation/Query/Validation.hs
+++ b/src/Data/Morpheus/Validation/Query/Validation.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE NoImplicitPrelude #-}
 
 module Data.Morpheus.Validation.Query.Validation
   ( validateRequest,
@@ -41,6 +42,10 @@
   )
 import Data.Morpheus.Validation.Query.Variable
   ( resolveOperationVariables,
+  )
+import Relude hiding
+  ( empty,
+    fromList,
   )
 
 validateRequest ::
diff --git a/src/Data/Morpheus/Validation/Query/Variable.hs b/src/Data/Morpheus/Validation/Query/Variable.hs
--- a/src/Data/Morpheus/Validation/Query/Variable.hs
+++ b/src/Data/Morpheus/Validation/Query/Variable.hs
@@ -9,14 +9,7 @@
   )
 where
 
-import Control.Applicative ((*>), pure)
-import Control.Monad (Monad ((>>=)))
-import Data.Foldable (concat, concatMap)
-import Data.Functor ((<$>), fmap)
 import qualified Data.HashMap.Lazy as M
-  ( lookup,
-  )
-import Data.Maybe (Maybe (..), maybe)
 import Data.Morpheus.Error.Variable (uninitializedVariable)
 import Data.Morpheus.Internal.Utils
   ( Failure (..),
@@ -68,19 +61,7 @@
 import Data.Morpheus.Validation.Internal.Value
   ( validateInputByType,
   )
-import Data.Semigroup ((<>))
-import Data.Traversable
-  ( traverse,
-  )
-import Prelude
-  ( ($),
-    (&&),
-    (.),
-    Bool (..),
-    Eq (..),
-    not,
-    otherwise,
-  )
+import Relude
 
 class ExploreRefs a where
   exploreRefs :: a -> [Ref]
@@ -108,10 +89,11 @@
     exploreSelectionContent (SelectionSet selSet) = mapSelection searchRefs selSet
     ---------------------------------------
     searchRefs :: Selection RAW -> BaseValidator [Ref]
-    searchRefs Selection {selectionArguments, selectionDirectives, selectionContent} = do
-      let directiveRefs = concatMap exploreRefs selectionDirectives
-      contentRefs <- exploreSelectionContent selectionContent
-      pure $ directiveRefs <> contentRefs <> concatMap exploreRefs selectionArguments
+    searchRefs Selection {selectionArguments, selectionDirectives, selectionContent} =
+      ((directiveRefs <> argumentRefs) <>) <$> exploreSelectionContent selectionContent
+      where
+        directiveRefs = concatMap exploreRefs selectionDirectives
+        argumentRefs = concatMap exploreRefs selectionArguments
     searchRefs (InlineFragment Fragment {fragmentSelection, fragmentDirectives}) =
       (concatMap exploreRefs fragmentDirectives <>)
         <$> mapSelection searchRefs fragmentSelection
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -6,6 +6,7 @@
   )
 where
 
+import Relude
 import Test.Tasty
   ( defaultMain,
     testGroup,
@@ -14,13 +15,10 @@
   ( apiTest,
   )
 import qualified Utils.MergeSchema as MergeSchema
+import qualified Utils.Rendering as Rendering
 import Utils.Schema
   ( testSchema,
   )
-import Prelude
-  ( ($),
-    IO,
-  )
 
 main :: IO ()
 main = do
@@ -42,5 +40,27 @@
             "on-interface-type-casting",
             "on-interface-type-casting-inline",
             "on-interface-fail-without-casting"
+          ],
+        Rendering.test
+          "rendering/simple"
+          [ "simple",
+            "nested",
+            "query",
+            "mutation",
+            "subscription",
+            "directive"
+          ],
+        Rendering.test
+          "rendering/union"
+          [ "interface",
+            "union"
+          ],
+        Rendering.test
+          "rendering/variable"
+          [ "simple",
+            "input",
+            "enum",
+            "list",
+            "include-exclude"
           ]
       ]
diff --git a/test/Utils/Api.hs b/test/Utils/Api.hs
--- a/test/Utils/Api.hs
+++ b/test/Utils/Api.hs
@@ -8,13 +8,8 @@
   )
 where
 
-import Control.Applicative (pure)
 import qualified Data.Aeson as A
 import Data.Aeson (decode, encode)
-import qualified Data.ByteString.Lazy.Char8 as LB (unpack)
-import Data.Functor ((<$>), fmap)
-import Data.Functor.Identity (Identity (..))
-import Data.Maybe (Maybe (..))
 import Data.Morpheus.Core (mkApp, runAppStream)
 import Data.Morpheus.Types.IO
 import Data.Morpheus.Types.Internal.AST
@@ -26,36 +21,27 @@
   ( ResponseStream,
     ResultT (..),
   )
-import Data.Semigroup ((<>))
 import Data.Text (unpack)
+import Relude
 import Test.Tasty
   ( TestTree,
     testGroup,
   )
 import Test.Tasty.HUnit
-  ( assertFailure,
-    testCase,
+  ( testCase,
   )
 import Utils.Utils
   ( assertValidSchema,
+    caseFailure,
     expectedResponse,
     getRequest,
     getResolvers,
   )
-import Prelude
-  ( ($),
-    (==),
-    IO,
-    otherwise,
-  )
 
 assertion :: A.Value -> ResponseStream e Identity (Value VALID) -> IO ()
 assertion expected (ResultT (Identity actual))
   | Just expected == decode actualValue = pure ()
-  | otherwise =
-    assertFailure $
-      LB.unpack
-        ("expected: \n\n " <> encode expected <> " \n\n but got: \n\n " <> actualValue)
+  | otherwise = caseFailure (encode expected) actualValue
   where
     actualValue = encode (renderResponse actual)
 
diff --git a/test/Utils/MergeSchema.hs b/test/Utils/MergeSchema.hs
--- a/test/Utils/MergeSchema.hs
+++ b/test/Utils/MergeSchema.hs
@@ -8,15 +8,9 @@
   )
 where
 
-import Control.Applicative (pure)
-import Control.Monad ((>>=))
-import Control.Monad.Fail (fail)
 import Data.Aeson (decode, encode)
 import qualified Data.Aeson as A
 import qualified Data.ByteString.Lazy as L (readFile)
-import qualified Data.ByteString.Lazy.Char8 as LB (unpack)
-import Data.Functor ((<$>), fmap)
-import Data.Functor.Identity (Identity (..))
 import Data.Morpheus.Core
   ( App (..),
     AppData (..),
@@ -38,9 +32,8 @@
     ResultT (..),
     resultOr,
   )
-import Data.Semigroup ((<>))
 import Data.Text (unpack)
-import Data.Traversable (traverse)
+import Relude
 import Test.Tasty
   ( TestTree,
     testGroup,
@@ -50,19 +43,11 @@
     testCase,
   )
 import Utils.Utils
-  ( expectedResponse,
+  ( caseFailure,
+    expectedResponse,
     getRequest,
     getResolver,
   )
-import Prelude
-  ( ($),
-    (.),
-    Eq (..),
-    IO,
-    Maybe (..),
-    otherwise,
-    show,
-  )
 
 readSchema :: FieldName -> IO (Schema VALID)
 readSchema (FieldName p) = L.readFile (unpack p) >>= (resultOr (fail . show) pure . parseGQLDocument)
@@ -76,10 +61,7 @@
 schemaAssertion :: App () Identity -> Schema VALID -> IO ()
 schemaAssertion (App AppData {appSchema}) expectedSchema
   | render expectedSchema == render appSchema = pure ()
-  | otherwise =
-    assertFailure
-      $ unpack
-      $ "expected: \n " <> render expectedSchema <> " \n but got: \n " <> render appSchema
+  | otherwise = caseFailure (render expectedSchema) (render appSchema)
 schemaAssertion (FailApp gqlerror) _ = assertFailure $ " error: " <> show gqlerror
 
 schemaCase :: (FieldName, [FieldName]) -> IO TestTree
@@ -111,10 +93,7 @@
 assertion :: A.Value -> ResponseStream e Identity (Value VALID) -> IO ()
 assertion expected (ResultT (Identity actual))
   | Just expected == decode actualValue = pure ()
-  | otherwise =
-    assertFailure $
-      LB.unpack
-        ("expected: \n\n " <> encode expected <> " \n\n but got: \n\n " <> actualValue)
+  | otherwise = caseFailure (encode expected) actualValue
   where
     actualValue = encode (renderResponse actual)
 
diff --git a/test/Utils/Rendering.hs b/test/Utils/Rendering.hs
new file mode 100644
--- /dev/null
+++ b/test/Utils/Rendering.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+
+module Utils.Rendering
+  ( test,
+  )
+where
+
+import Data.Aeson (encode)
+import Data.ByteString.Lazy.Char8
+  ( ByteString,
+  )
+import qualified Data.ByteString.Lazy.Char8 as LB
+import Data.Morpheus.Core
+  ( defaultConfig,
+    parseRequestWith,
+    render,
+  )
+import Data.Morpheus.Types.Internal.AST
+  ( FieldName (..),
+    Operation,
+    VALID,
+  )
+import Data.Morpheus.Types.Internal.Resolving
+  ( Eventless,
+    Result (..),
+  )
+import qualified Data.Text as T
+import Relude hiding (ByteString)
+import Test.Tasty
+  ( TestTree,
+    testGroup,
+  )
+import Test.Tasty.HUnit
+  ( assertFailure,
+    testCase,
+  )
+import Utils.Utils
+  ( assertValidSchema,
+    getRequest,
+    readSource,
+  )
+
+assertion :: ByteString -> Eventless (Operation VALID) -> IO ()
+assertion expected Success {result = actual}
+  | expected == actualValue = pure ()
+  | otherwise =
+    assertFailure
+      ("expected: \n\n " <> show expected <> " \n\n but got: \n\n " <> show actualValue)
+  where
+    actualValue = render actual
+assertion _ Failure {errors} = assertFailure $ LB.unpack (encode errors)
+
+test :: FieldName -> [FieldName] -> TestTree
+test apiPath requestPath =
+  testGroup (T.unpack $ readName apiPath) $
+    fmap (testRendering apiPath) requestPath
+
+getExpectedRendering :: FieldName -> IO ByteString
+getExpectedRendering = readSource . (<> "/rendering.gql")
+
+testRendering ::
+  FieldName ->
+  FieldName ->
+  TestTree
+testRendering apiPath path = testCase (T.unpack $ readName path) $ do
+  schema <- assertValidSchema apiPath
+  let fullPath = apiPath <> "/" <> path
+  actual <- parseRequestWith defaultConfig schema <$> getRequest fullPath
+  expected <- getExpectedRendering fullPath
+  assertion expected actual
diff --git a/test/Utils/Schema.hs b/test/Utils/Schema.hs
--- a/test/Utils/Schema.hs
+++ b/test/Utils/Schema.hs
@@ -9,13 +9,9 @@
   )
 where
 
-import Control.Applicative (pure)
 import Data.Aeson ((.:), (.=), FromJSON (..), ToJSON (..), Value (..), eitherDecode, encode, object)
 import qualified Data.ByteString.Lazy as L (readFile)
-import qualified Data.ByteString.Lazy.Char8 as LB (unpack)
 import Data.ByteString.Lazy.Char8 (ByteString)
-import Data.Either (Either (..), either)
-import Data.Functor ((<$>), fmap)
 import Data.Morpheus.Core (parseFullGQLDocument)
 import Data.Morpheus.Types.Internal.AST
   ( GQLErrors,
@@ -26,27 +22,17 @@
   ( Eventless,
     Result (..),
   )
-import Data.Semigroup ((<>))
 import Data.Text (pack)
-import GHC.Generics (Generic)
+import Relude hiding (ByteString, toString)
 import Test.Tasty (TestTree, testGroup)
-import Test.Tasty.HUnit (assertFailure, testCase)
+import Test.Tasty.HUnit (testCase)
 import Utils.Utils
   ( CaseTree (..),
     FileUrl (..),
+    caseFailure,
     scanSchemaTests,
     toString,
   )
-import Prelude
-  ( ($),
-    (.),
-    Eq (..),
-    FilePath,
-    IO,
-    String,
-    id,
-    show,
-  )
 
 readSource :: FilePath -> IO ByteString
 readSource = L.readFile
@@ -96,11 +82,8 @@
   | err == errors =
     pure
       ()
-assertion expected Success {} =
-  assertFailure $
-    LB.unpack
-      ("expected: \n " <> encode expected <> " \n but got: \n OK")
+assertion expected Success {} = caseFailure (encode expected) "OK"
 assertion expected Failure {errors} =
-  assertFailure $
-    LB.unpack
-      ("expected: \n " <> encode expected <> " \n but got: \n " <> encode (Errors errors))
+  caseFailure
+    (encode expected)
+    (encode (Errors errors))
diff --git a/test/Utils/Utils.hs b/test/Utils/Utils.hs
--- a/test/Utils/Utils.hs
+++ b/test/Utils/Utils.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE NamedFieldPuns #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE RecordWildCards #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -19,24 +18,25 @@
     getSchema,
     getResolvers,
     getResolver,
+    caseFailure,
   )
 where
 
-import Control.Applicative ((<|>), pure)
-import Control.Monad ((>=>), Monad)
 import Data.Aeson (FromJSON, Value (..), decode)
 import qualified Data.ByteString.Lazy as L (readFile)
+import qualified Data.ByteString.Lazy.Char8 as LB (unpack)
 import Data.ByteString.Lazy.Char8 (ByteString)
-import Data.Either (Either (..))
 import Data.Foldable (foldl)
-import Data.Functor ((<$>))
 import Data.HashMap.Lazy (lookup)
-import Data.Maybe (Maybe (..), fromMaybe, maybe)
 import Data.Morpheus.Core (parseGQLDocument)
 import Data.Morpheus.Types.IO
   ( GQLRequest (..),
   )
-import Data.Morpheus.Types.Internal.AST (FieldName (..), Schema (..), VALID)
+import Data.Morpheus.Types.Internal.AST
+  ( FieldName (..),
+    Schema (..),
+    VALID,
+  )
 import Data.Morpheus.Types.Internal.Resolving
   ( Eventless,
     ResModel,
@@ -46,26 +46,13 @@
     mkValue,
     resultOr,
   )
-import Data.Semigroup ((<>))
-import Data.Text (Text, unpack)
-import qualified Data.Text.Lazy as LT (toStrict)
-import Data.Text.Lazy.Encoding (decodeUtf8)
-import Data.Traversable (traverse)
+import Data.Text (unpack)
+import qualified Data.Text.IO as T
+import Relude hiding (ByteString, toString)
 import System.Directory (doesDirectoryExist, listDirectory)
 import Test.Tasty.HUnit
   ( assertFailure,
   )
-import Prelude
-  ( ($),
-    (.),
-    Bool,
-    FilePath,
-    IO,
-    Show,
-    and,
-    map,
-    show,
-  )
 
 readSource :: FieldName -> IO ByteString
 readSource = L.readFile . path . readName
@@ -146,15 +133,11 @@
 expectedResponse (FieldName p) = fromMaybe Null . decode <$> L.readFile (resLib p)
 
 getRequest :: FieldName -> IO GQLRequest
-getRequest p = do
-  queryBS <- LT.toStrict . decodeUtf8 <$> getGQLBody p
-  variables <- maybeVariables p
-  pure $
-    GQLRequest
-      { operationName = Nothing,
-        query = queryBS,
-        variables
-      }
+getRequest p =
+  GQLRequest
+    Nothing
+    <$> T.readFile (gqlLib $ readName p)
+    <*> maybeVariables p
 
 getResolvers :: Monad m => FieldName -> IO (RootResModel e m)
 getResolvers p = getResolver ("test/" <> p <> "/resolvers.json")
@@ -179,3 +162,9 @@
   ResModel o e m
 lookupRes name (Object fields) = maybe mkNull mkValue (lookup name fields)
 lookupRes _ _ = mkNull
+
+caseFailure :: ByteString -> ByteString -> IO a
+caseFailure expected actualValue =
+  assertFailure $
+    LB.unpack
+      ("expected: \n\n " <> expected <> " \n\n but got: \n\n " <> actualValue)
diff --git a/test/rendering/simple/directive/query.gql b/test/rendering/simple/directive/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/directive/query.gql
@@ -0,0 +1,5 @@
+query MyQuery @MyDirective {
+  deity @MyDirective {
+    name @MyDirective(name: "Some Name")
+  }
+}
diff --git a/test/rendering/simple/directive/rendering.gql b/test/rendering/simple/directive/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/directive/rendering.gql
@@ -0,0 +1,5 @@
+query MyQuery @MyDirective {
+  deity @MyDirective {
+    name @MyDirective(name: "Some Name")
+  }
+}
diff --git a/test/rendering/simple/fragment/query.gql b/test/rendering/simple/fragment/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/fragment/query.gql
@@ -0,0 +1,12 @@
+query {
+  character {
+    ...OnCharacter
+    ... on Hero {
+      hobby
+    }
+  }
+}
+
+fragment OnCharacter on Character {
+  name
+}
diff --git a/test/rendering/simple/fragment/rendering.gql b/test/rendering/simple/fragment/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/fragment/rendering.gql
@@ -0,0 +1,17 @@
+query {
+  character {
+    ... on Character {
+      __typename
+      name
+    }
+    ... on Deity {
+      __typename
+      name
+    }
+    ... on Hero {
+      __typename
+      name
+      hobby
+    }
+  }
+}
diff --git a/test/rendering/simple/fragment/variables.json b/test/rendering/simple/fragment/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/fragment/variables.json
@@ -0,0 +1,3 @@
+{
+  "name": "value 1"
+}
diff --git a/test/rendering/simple/mutation/query.gql b/test/rendering/simple/mutation/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/mutation/query.gql
@@ -0,0 +1,9 @@
+mutation MyMutation {
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/simple/mutation/rendering.gql b/test/rendering/simple/mutation/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/mutation/rendering.gql
@@ -0,0 +1,9 @@
+mutation MyMutation {
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/simple/nested/query.gql b/test/rendering/simple/nested/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/nested/query.gql
@@ -0,0 +1,22 @@
+{
+  deity {
+    name
+    power
+    friends {
+      name
+      friends {
+        power
+        name
+        friends {
+          name
+          friends {
+            name
+            friends {
+              name
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/test/rendering/simple/nested/rendering.gql b/test/rendering/simple/nested/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/nested/rendering.gql
@@ -0,0 +1,22 @@
+query {
+  deity {
+    name
+    power
+    friends {
+      name
+      friends {
+        power
+        name
+        friends {
+          name
+          friends {
+            name
+            friends {
+              name
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/test/rendering/simple/query/query.gql b/test/rendering/simple/query/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/query/query.gql
@@ -0,0 +1,9 @@
+query MyQuery {
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/simple/query/rendering.gql b/test/rendering/simple/query/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/query/rendering.gql
@@ -0,0 +1,9 @@
+query MyQuery {
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/simple/schema.gql b/test/rendering/simple/schema.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/schema.gql
@@ -0,0 +1,17 @@
+directive @MyDirective(name: String) on FIELD | QUERY
+
+type Deity {
+  name: String!
+  power: [String!]!
+  friends: [Deity!]!
+}
+
+type Query {
+  deity(name: String): Deity!
+}
+
+schema {
+  query: Query
+  mutation: Query
+  subscription: Query
+}
diff --git a/test/rendering/simple/simple/query.gql b/test/rendering/simple/simple/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/simple/query.gql
@@ -0,0 +1,9 @@
+{
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/simple/simple/rendering.gql b/test/rendering/simple/simple/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/simple/rendering.gql
@@ -0,0 +1,9 @@
+query {
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/simple/subscription/query.gql b/test/rendering/simple/subscription/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/subscription/query.gql
@@ -0,0 +1,9 @@
+subscription MySubscription {
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/simple/subscription/rendering.gql b/test/rendering/simple/subscription/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/simple/subscription/rendering.gql
@@ -0,0 +1,9 @@
+subscription MySubscription {
+  deity {
+    name
+    power
+    friends {
+      name
+    }
+  }
+}
diff --git a/test/rendering/union/interface/query.gql b/test/rendering/union/interface/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/union/interface/query.gql
@@ -0,0 +1,12 @@
+query {
+  character {
+    ...OnCharacter
+    ... on Hero {
+      hobby
+    }
+  }
+}
+
+fragment OnCharacter on Character {
+  name
+}
diff --git a/test/rendering/union/interface/rendering.gql b/test/rendering/union/interface/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/union/interface/rendering.gql
@@ -0,0 +1,17 @@
+query {
+  character {
+    ... on Character {
+      __typename
+      name
+    }
+    ... on Deity {
+      __typename
+      name
+    }
+    ... on Hero {
+      __typename
+      name
+      hobby
+    }
+  }
+}
diff --git a/test/rendering/union/interface/variables.json b/test/rendering/union/interface/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/union/interface/variables.json
@@ -0,0 +1,3 @@
+{
+  "name": "value 1"
+}
diff --git a/test/rendering/union/schema.gql b/test/rendering/union/schema.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/union/schema.gql
@@ -0,0 +1,46 @@
+directive @Turbo(name: String) on FIELD | QUERY
+
+directive @Speed(name: String) on FIELD | QUERY
+
+interface Character {
+  name: String
+}
+
+interface Supernatural {
+  power: [String!]!
+}
+
+type Hero implements Character {
+  name: String
+  hobby: String
+}
+
+type Deity implements Character & Supernatural {
+  name: String!
+  power: [String!]!
+  friends: [Deity!]!
+}
+
+type Animal {
+  name: String
+  weight: Int
+}
+
+type Human {
+  name: String
+  age: Int
+}
+
+union Mortal = Human | Animal
+
+type Query {
+  deity: Deity!
+  mortal: Mortal!
+  character: Character!
+}
+
+schema {
+  query: Query
+  mutation: Query
+  subscription: Query
+}
diff --git a/test/rendering/union/union/query.gql b/test/rendering/union/union/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/union/union/query.gql
@@ -0,0 +1,14 @@
+query {
+  mortal {
+    ...OnHuman
+    ...onAnimal
+  }
+}
+
+fragment OnHuman on Human {
+  name
+}
+
+fragment onAnimal on Animal {
+  weight
+}
diff --git a/test/rendering/union/union/rendering.gql b/test/rendering/union/union/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/union/union/rendering.gql
@@ -0,0 +1,10 @@
+query {
+  mortal {
+    ... on Human {
+      name
+    }
+    ... on Animal {
+      weight
+    }
+  }
+}
diff --git a/test/rendering/union/union/variables.json b/test/rendering/union/union/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/union/union/variables.json
@@ -0,0 +1,3 @@
+{
+  "name": "value 1"
+}
diff --git a/test/rendering/variable/enum/query.gql b/test/rendering/variable/enum/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/enum/query.gql
@@ -0,0 +1,6 @@
+query($enum: MyEnum!) {
+  simple {
+    name(enum: $enum)
+    power
+  }
+}
diff --git a/test/rendering/variable/enum/rendering.gql b/test/rendering/variable/enum/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/enum/rendering.gql
@@ -0,0 +1,6 @@
+query {
+  simple {
+    name(enum: A)
+    power
+  }
+}
diff --git a/test/rendering/variable/enum/variables.json b/test/rendering/variable/enum/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/enum/variables.json
@@ -0,0 +1,3 @@
+{
+  "enum": "A"
+}
diff --git a/test/rendering/variable/include-exclude/query.gql b/test/rendering/variable/include-exclude/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/include-exclude/query.gql
@@ -0,0 +1,10 @@
+query($isTrue: Boolean!, $isFalse: Boolean!) {
+  a: simple {
+    value: name @include(if: $isTrue)
+    skip: name @skip(if: $isTrue)
+  }
+  b: simple {
+    skip: name @include(if: $isFalse)
+    value: name @skip(if: $isFalse)
+  }
+}
diff --git a/test/rendering/variable/include-exclude/rendering.gql b/test/rendering/variable/include-exclude/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/include-exclude/rendering.gql
@@ -0,0 +1,8 @@
+query {
+  a {
+    value
+  }
+  b {
+    value
+  }
+}
diff --git a/test/rendering/variable/include-exclude/variables.json b/test/rendering/variable/include-exclude/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/include-exclude/variables.json
@@ -0,0 +1,4 @@
+{
+  "isTrue": true,
+  "isFalse": false
+}
diff --git a/test/rendering/variable/input/query.gql b/test/rendering/variable/input/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/input/query.gql
@@ -0,0 +1,6 @@
+query($input: Input!) {
+  simple {
+    name(i: $input)
+    power
+  }
+}
diff --git a/test/rendering/variable/input/rendering.gql b/test/rendering/variable/input/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/input/rendering.gql
@@ -0,0 +1,6 @@
+query {
+  simple {
+    name(i: { id: "def value", int: 5 })
+    power
+  }
+}
diff --git a/test/rendering/variable/input/variables.json b/test/rendering/variable/input/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/input/variables.json
@@ -0,0 +1,3 @@
+{
+  "input": { "int": 5 }
+}
diff --git a/test/rendering/variable/list/query.gql b/test/rendering/variable/list/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/list/query.gql
@@ -0,0 +1,6 @@
+query($list: [Input!]!) {
+  simple {
+    name(list: $list)
+    power
+  }
+}
diff --git a/test/rendering/variable/list/rendering.gql b/test/rendering/variable/list/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/list/rendering.gql
@@ -0,0 +1,6 @@
+query {
+  simple {
+    name(list: [{ id: "def value", int: 1 }, { id: "some-id", int: 2 }])
+    power
+  }
+}
diff --git a/test/rendering/variable/list/variables.json b/test/rendering/variable/list/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/list/variables.json
@@ -0,0 +1,3 @@
+{
+  "list": [{ "int": 1 }, { "id": "some-id", "int": 2 }]
+}
diff --git a/test/rendering/variable/schema.gql b/test/rendering/variable/schema.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/schema.gql
@@ -0,0 +1,26 @@
+scalar MyScalar
+
+enum MyEnum {
+  A
+  B
+}
+
+input Input {
+  id: String = "def value"
+  int: MyScalar!
+}
+
+type Deity {
+  name(i: Input, enum: MyEnum, list: [Input]): String!
+  power: [String!]!
+}
+
+type Query {
+  simple(name: String): Deity!
+}
+
+schema {
+  query: Query
+  mutation: Query
+  subscription: Query
+}
diff --git a/test/rendering/variable/simple/query.gql b/test/rendering/variable/simple/query.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/simple/query.gql
@@ -0,0 +1,6 @@
+query($name: String!) {
+  simple(name: $name) {
+    name
+    power
+  }
+}
diff --git a/test/rendering/variable/simple/rendering.gql b/test/rendering/variable/simple/rendering.gql
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/simple/rendering.gql
@@ -0,0 +1,6 @@
+query {
+  simple(name: "value 1") {
+    name
+    power
+  }
+}
diff --git a/test/rendering/variable/simple/variables.json b/test/rendering/variable/simple/variables.json
new file mode 100644
--- /dev/null
+++ b/test/rendering/variable/simple/variables.json
@@ -0,0 +1,3 @@
+{
+  "name": "value 1"
+}
diff --git a/test/schema/validation/default-value/argument/missing-field/response.json b/test/schema/validation/default-value/argument/missing-field/response.json
--- a/test/schema/validation/default-value/argument/missing-field/response.json
+++ b/test/schema/validation/default-value/argument/missing-field/response.json
@@ -9,15 +9,15 @@
       "locations": []
     },
     {
-      "message": "Field Query.field(i2:) got invalid default value. Undefined Field \"field\".",
+      "message": "Field Query.field(i3:) got invalid default value. in field \"field.field\": Undefined Field \"field\".",
       "locations": []
     },
     {
-      "message": "Field Query.field(i3:) got invalid default value. in field \"field.field\": Undefined Field \"field\".",
+      "message": "Field Query.field(i3:) got invalid default value. in field \"field\": Undefined Field \"field2\".",
       "locations": []
     },
     {
-      "message": "Field Query.field(i3:) got invalid default value. in field \"field\": Undefined Field \"field2\".",
+      "message": "Field Query.field(i2:) got invalid default value. Undefined Field \"field\".",
       "locations": []
     }
   ]
diff --git a/test/schema/validation/default-value/argument/unexpected-value/response.json b/test/schema/validation/default-value/argument/unexpected-value/response.json
--- a/test/schema/validation/default-value/argument/unexpected-value/response.json
+++ b/test/schema/validation/default-value/argument/unexpected-value/response.json
@@ -9,23 +9,23 @@
       "locations": []
     },
     {
-      "message": "Field Query.field(i2:) got invalid default value. in field \"field1\": Expected type \"ID\" found {field3: 2344}.",
+      "message": "Field Query.field(i5:) got invalid default value. Expected type \"Int\" found \"some text\".",
       "locations": []
     },
     {
-      "message": "Field Query.field(i2:) got invalid default value. in field \"field2\": Expected type \"String\" found 123.",
+      "message": "Field Query.field(i3:) got invalid default value. Expected type \"TestEnum\" found EnumBB.",
       "locations": []
     },
     {
-      "message": "Field Query.field(i3:) got invalid default value. Expected type \"TestEnum\" found EnumBB.",
+      "message": "Field Query.field(i4:) got invalid default value. Expected type \"ID\" found true.",
       "locations": []
     },
     {
-      "message": "Field Query.field(i4:) got invalid default value. Expected type \"ID\" found true.",
+      "message": "Field Query.field(i2:) got invalid default value. in field \"field1\": Expected type \"ID\" found { field3: 2344 }.",
       "locations": []
     },
     {
-      "message": "Field Query.field(i5:) got invalid default value. Expected type \"Int\" found \"some text\".",
+      "message": "Field Query.field(i2:) got invalid default value. in field \"field2\": Expected type \"String\" found 123.",
       "locations": []
     }
   ]
diff --git a/test/schema/validation/default-value/field/unexpected-value/response.json b/test/schema/validation/default-value/field/unexpected-value/response.json
--- a/test/schema/validation/default-value/field/unexpected-value/response.json
+++ b/test/schema/validation/default-value/field/unexpected-value/response.json
@@ -5,19 +5,19 @@
       "locations": []
     },
     {
-      "message": "Field Input2.objectField got invalid default value. in field \"field2\": Expected type \"String!\" found true.",
+      "message": "Field Input2.objectField got invalid default value. in field \"field4\": Expected type \"TestEnum!\" found 1.",
       "locations": []
     },
     {
-      "message": "Field Input2.objectField got invalid default value. in field \"field3\": Expected type \"TestEnum\" found true.",
+      "message": "Field Input2.objectField got invalid default value. in field \"field5\": Expected type \"TestEnum\" found \"some text\".",
       "locations": []
     },
     {
-      "message": "Field Input2.objectField got invalid default value. in field \"field4\": Expected type \"TestEnum!\" found 1.",
+      "message": "Field Input2.objectField got invalid default value. in field \"field2\": Expected type \"String!\" found true.",
       "locations": []
     },
     {
-      "message": "Field Input2.objectField got invalid default value. in field \"field5\": Expected type \"TestEnum\" found \"some text\".",
+      "message": "Field Input2.objectField got invalid default value. in field \"field3\": Expected type \"TestEnum\" found true.",
       "locations": []
     },
     {
@@ -25,19 +25,19 @@
       "locations": []
     },
     {
-      "message": "Field Input1.field2 got invalid default value. Expected type \"String!\" found EnumA.",
+      "message": "Field Input1.field4 got invalid default value. Expected type \"TestEnum!\" found 1.",
       "locations": []
     },
     {
-      "message": "Field Input1.field3 got invalid default value. Expected type \"TestEnum\" found UnknownEnum.",
+      "message": "Field Input1.field5 got invalid default value. Expected type \"TestEnum\" found \"some text\".",
       "locations": []
     },
     {
-      "message": "Field Input1.field4 got invalid default value. Expected type \"TestEnum!\" found 1.",
+      "message": "Field Input1.field2 got invalid default value. Expected type \"String!\" found EnumA.",
       "locations": []
     },
     {
-      "message": "Field Input1.field5 got invalid default value. Expected type \"TestEnum\" found \"some text\".",
+      "message": "Field Input1.field3 got invalid default value. Expected type \"TestEnum\" found UnknownEnum.",
       "locations": []
     }
   ]
diff --git a/test/schema/validation/directive/fail/at-invalid-place/response.json b/test/schema/validation/directive/fail/at-invalid-place/response.json
--- a/test/schema/validation/directive/fail/at-invalid-place/response.json
+++ b/test/schema/validation/directive/fail/at-invalid-place/response.json
@@ -25,12 +25,12 @@
       "locations": [{ "line": 21, "column": 12 }]
     },
     {
-      "message": "Directive \"include\" may not to be used on FIELD_DEFINITION",
-      "locations": [{ "line": 22, "column": 35 }]
-    },
-    {
       "message": "Directive \"DirectiveD\" may not to be used on ARGUMENT_DEFINITION",
       "locations": [{ "line": 22, "column": 17 }]
+    },
+    {
+      "message": "Directive \"include\" may not to be used on FIELD_DEFINITION",
+      "locations": [{ "line": 22, "column": 35 }]
     }
   ]
 }
diff --git a/test/schema/validation/directive/fail/missing-argument/response.json b/test/schema/validation/directive/fail/missing-argument/response.json
--- a/test/schema/validation/directive/fail/missing-argument/response.json
+++ b/test/schema/validation/directive/fail/missing-argument/response.json
@@ -1,24 +1,16 @@
 {
   "errors": [
     {
-      "message": "Directive \"@DirectiveA\" argument \"a1\" is required but not provided.",
-      "locations": [{ "line": 9, "column": 17 }]
-    },
-    {
       "message": "Directive \"@DirectiveA\" argument \"a2\" is required but not provided.",
       "locations": [{ "line": 9, "column": 17 }]
     },
     {
-      "message": "Directive \"@DirectiveC\" argument \"arg\" is required but not provided.",
-      "locations": [{ "line": 19, "column": 13 }]
-    },
-    {
-      "message": "Directive \"@DirectiveC\" argument \"arg\" is required but not provided.",
-      "locations": [{ "line": 20, "column": 38 }]
+      "message": "Directive \"@DirectiveA\" argument \"a1\" is required but not provided.",
+      "locations": [{ "line": 9, "column": 17 }]
     },
     {
-      "message": "Directive \"@DirectiveC\" argument \"arg\" is required but not provided.",
-      "locations": [{ "line": 20, "column": 17 }]
+      "message": "Directive \"@DirectiveA\" argument \"a2\" is required but not provided.",
+      "locations": [{ "line": 11, "column": 13 }]
     },
     {
       "message": "Directive \"@DirectiveA\" argument \"a1\" is required but not provided.",
@@ -26,14 +18,10 @@
     },
     {
       "message": "Directive \"@DirectiveA\" argument \"a2\" is required but not provided.",
-      "locations": [{ "line": 11, "column": 13 }]
-    },
-    {
-      "message": "Directive \"@DirectiveA\" argument \"a1\" is required but not provided.",
       "locations": [{ "line": 12, "column": 9 }]
     },
     {
-      "message": "Directive \"@DirectiveA\" argument \"a2\" is required but not provided.",
+      "message": "Directive \"@DirectiveA\" argument \"a1\" is required but not provided.",
       "locations": [{ "line": 12, "column": 9 }]
     },
     {
@@ -43,6 +31,18 @@
     {
       "message": "Directive \"@DirectiveB\" argument \"a1\" is required but not provided.",
       "locations": [{ "line": 16, "column": 17 }]
+    },
+    {
+      "message": "Directive \"@DirectiveC\" argument \"arg\" is required but not provided.",
+      "locations": [{ "line": 19, "column": 13 }]
+    },
+    {
+      "message": "Directive \"@DirectiveC\" argument \"arg\" is required but not provided.",
+      "locations": [{ "line": 20, "column": 17 }]
+    },
+    {
+      "message": "Directive \"@DirectiveC\" argument \"arg\" is required but not provided.",
+      "locations": [{ "line": 20, "column": 38 }]
     }
   ]
 }
diff --git a/test/schema/validation/directive/fail/sopthisticated/response.json b/test/schema/validation/directive/fail/sopthisticated/response.json
--- a/test/schema/validation/directive/fail/sopthisticated/response.json
+++ b/test/schema/validation/directive/fail/sopthisticated/response.json
@@ -1,24 +1,24 @@
 {
   "errors": [
     {
-      "message": "Directive \"include\" may not to be used on INPUT_OBJECT",
-      "locations": [{ "line": 13, "column": 13 }]
+      "message": "Directive \"DirectiveA\" may not to be used on ENUM_VALUE",
+      "locations": [{ "line": 6, "column": 9 }]
     },
     {
-      "message": "Directive \"@include\" argument \"if\" is required but not provided.",
-      "locations": [{ "line": 13, "column": 13 }]
+      "message": "Directive \"@DirectiveA\" argument \"a1\" is required but not provided.",
+      "locations": [{ "line": 6, "column": 9 }]
     },
     {
-      "message": "Directive \"skip\" may not to be used on INPUT_FIELD_DEFINITION",
-      "locations": [{ "line": 14, "column": 13 }]
+      "message": "Unknown Directive \"SomeDirective\".",
+      "locations": [{ "line": 9, "column": 13 }]
     },
     {
-      "message": "Directive \"@skip\" argument \"if\" is required but not provided.",
-      "locations": [{ "line": 14, "column": 13 }]
+      "message": "Unknown Argument \"someargs\" on Directive \"DirectiveC\".",
+      "locations": [{ "line": 10, "column": 40 }]
     },
     {
-      "message": "Unknown Directive \"SomeDirective\".",
-      "locations": [{ "line": 9, "column": 13 }]
+      "message": "Argument \"arg\" got invalid value. Expected type \"Int!\" found True.",
+      "locations": [{ "line": 10, "column": 29 }]
     },
     {
       "message": "Directive \"DirectiveC\" may not to be used on FIELD_DEFINITION",
@@ -29,20 +29,20 @@
       "locations": [{ "line": 10, "column": 62 }]
     },
     {
-      "message": "Unknown Argument \"someargs\" on Directive \"DirectiveC\".",
-      "locations": [{ "line": 10, "column": 40 }]
+      "message": "Directive \"include\" may not to be used on INPUT_OBJECT",
+      "locations": [{ "line": 13, "column": 13 }]
     },
     {
-      "message": "Argument \"arg\" got invalid value. Expected type \"Int!\" found True.",
-      "locations": [{ "line": 10, "column": 29 }]
+      "message": "Directive \"@include\" argument \"if\" is required but not provided.",
+      "locations": [{ "line": 13, "column": 13 }]
     },
     {
-      "message": "Directive \"DirectiveA\" may not to be used on ENUM_VALUE",
-      "locations": [{ "line": 6, "column": 9 }]
+      "message": "Directive \"skip\" may not to be used on INPUT_FIELD_DEFINITION",
+      "locations": [{ "line": 14, "column": 13 }]
     },
     {
-      "message": "Directive \"@DirectiveA\" argument \"a1\" is required but not provided.",
-      "locations": [{ "line": 6, "column": 9 }]
+      "message": "Directive \"@skip\" argument \"if\" is required but not provided.",
+      "locations": [{ "line": 14, "column": 13 }]
     },
     {
       "message": "Directive \"DirectiveC\" may not to be used on OBJECT",
diff --git a/test/schema/validation/directive/fail/unexpected-value/response.json b/test/schema/validation/directive/fail/unexpected-value/response.json
--- a/test/schema/validation/directive/fail/unexpected-value/response.json
+++ b/test/schema/validation/directive/fail/unexpected-value/response.json
@@ -5,6 +5,14 @@
       "locations": [{ "line": 9, "column": 29 }]
     },
     {
+      "message": "Argument \"a1\" got invalid value. Expected type \"Int!\" found \"some string\".",
+      "locations": [{ "line": 10, "column": 30 }]
+    },
+    {
+      "message": "Argument \"a1\" got invalid value. Expected type \"Int!\" found True.",
+      "locations": [{ "line": 11, "column": 30 }]
+    },
+    {
       "message": "Argument \"reason\" got invalid value. Expected type \"String\" found EnumA.",
       "locations": [{ "line": 14, "column": 21 }]
     },
@@ -23,14 +31,6 @@
     {
       "message": "Argument \"a1\" got invalid value. Expected type \"MyInput!\" found [\"some deprication\"].",
       "locations": [{ "line": 21, "column": 30 }]
-    },
-    {
-      "message": "Argument \"a1\" got invalid value. Expected type \"Int!\" found \"some string\".",
-      "locations": [{ "line": 10, "column": 30 }]
-    },
-    {
-      "message": "Argument \"a1\" got invalid value. Expected type \"Int!\" found True.",
-      "locations": [{ "line": 11, "column": 30 }]
     }
   ]
 }
diff --git a/test/schema/validation/directive/fail/unknown-directive/response.json b/test/schema/validation/directive/fail/unknown-directive/response.json
--- a/test/schema/validation/directive/fail/unknown-directive/response.json
+++ b/test/schema/validation/directive/fail/unknown-directive/response.json
@@ -1,10 +1,6 @@
 {
   "errors": [
     {
-      "message": "Unknown Directive \"DirectveD\".",
-      "locations": [{ "line": 15, "column": 15 }]
-    },
-    {
       "message": "Unknown Directive \"DirectveA\".",
       "locations": [{ "line": 1, "column": 17 }]
     },
@@ -25,14 +21,6 @@
       "locations": [{ "line": 8, "column": 17 }]
     },
     {
-      "message": "Unknown Directive \"DirectveE\".",
-      "locations": [{ "line": 17, "column": 14 }]
-    },
-    {
-      "message": "Unknown Directive \"DirectveE\".",
-      "locations": [{ "line": 18, "column": 14 }]
-    },
-    {
       "message": "Unknown Directive \"DirectveC\".",
       "locations": [{ "line": 11, "column": 8 }]
     },
@@ -40,6 +28,19 @@
       "message": "Unknown Directive \"DirectveC\".",
       "locations": [{ "line": 12, "column": 17 }]
     },
+    {
+      "message": "Unknown Directive \"DirectveD\".",
+      "locations": [{ "line": 15, "column": 15 }]
+    },
+    {
+      "message": "Unknown Directive \"DirectveE\".",
+      "locations": [{ "line": 17, "column": 14 }]
+    },
+    {
+      "message": "Unknown Directive \"DirectveE\".",
+      "locations": [{ "line": 18, "column": 14 }]
+    },
+
     {
       "message": "Unknown Directive \"DirectveF\".",
       "locations": [{ "line": 22, "column": 12 }]
diff --git a/test/schema/validation/performance-check/response.json b/test/schema/validation/performance-check/response.json
new file mode 100644
--- /dev/null
+++ b/test/schema/validation/performance-check/response.json
@@ -0,0 +1,1 @@
+"OK"
diff --git a/test/schema/validation/performance-check/schema.gql b/test/schema/validation/performance-check/schema.gql
new file mode 100644
--- /dev/null
+++ b/test/schema/validation/performance-check/schema.gql
@@ -0,0 +1,38947 @@
+"""
+Defines what type of global IDs are accepted for a mutation argument of type ID.
+"""
+directive @possibleTypes(
+  """
+  Abstract type of accepted global ID
+  """
+  abstractType: String
+
+  """
+  Accepted types of global IDs.
+  """
+  concreteTypes: [String!]!
+) on INPUT_FIELD_DEFINITION
+
+"""
+Marks an element of a GraphQL schema as only available via a preview header
+"""
+directive @preview(
+  """
+  The identifier of the API preview that toggles this field.
+  """
+  toggledBy: String!
+) on SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION
+
+"""
+Autogenerated input type of AcceptEnterpriseAdministratorInvitation
+"""
+input AcceptEnterpriseAdministratorInvitationInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The id of the invitation being accepted
+  """
+  invitationId: ID!
+  @possibleTypes(concreteTypes: ["EnterpriseAdministratorInvitation"])
+}
+
+"""
+Autogenerated return type of AcceptEnterpriseAdministratorInvitation
+"""
+type AcceptEnterpriseAdministratorInvitationPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The invitation that was accepted.
+  """
+  invitation: EnterpriseAdministratorInvitation
+
+  """
+  A message confirming the result of accepting an administrator invitation.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of AcceptTopicSuggestion
+"""
+input AcceptTopicSuggestionInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of the suggested topic.
+  """
+  name: String!
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of AcceptTopicSuggestion
+"""
+type AcceptTopicSuggestionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The accepted topic.
+  """
+  topic: Topic
+}
+
+"""
+The possible capabilities for action executions setting.
+"""
+enum ActionExecutionCapabilitySetting {
+  """
+  All action executions are enabled.
+  """
+  ALL_ACTIONS
+
+  """
+  All action executions are disabled.
+  """
+  DISABLED
+
+  """
+  Only actions defined within the repo are allowed.
+  """
+  LOCAL_ACTIONS_ONLY
+
+  """
+  Organization administrators action execution capabilities.
+  """
+  NO_POLICY
+}
+
+"""
+Represents an object which can take actions on GitHub. Typically a User or Bot.
+"""
+interface Actor {
+  """
+  A URL pointing to the actor's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  The username of the actor.
+  """
+  login: String!
+
+  """
+  The HTTP path for this actor.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this actor.
+  """
+  url: URI!
+}
+
+"""
+Location information for an actor
+"""
+type ActorLocation {
+  """
+  City
+  """
+  city: String
+
+  """
+  Country name
+  """
+  country: String
+
+  """
+  Country code
+  """
+  countryCode: String
+
+  """
+  Region name
+  """
+  region: String
+
+  """
+  Region or state code
+  """
+  regionCode: String
+}
+
+"""
+Autogenerated input type of AddAssigneesToAssignable
+"""
+input AddAssigneesToAssignableInput {
+  """
+  The id of the assignable object to add assignees to.
+  """
+  assignableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "Assignable"
+  )
+
+  """
+  The id of users to add as assignees.
+  """
+  assigneeIds: [ID!]! @possibleTypes(concreteTypes: ["User"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated return type of AddAssigneesToAssignable
+"""
+type AddAssigneesToAssignablePayload {
+  """
+  The item that was assigned.
+  """
+  assignable: Assignable
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of AddComment
+"""
+input AddCommentInput {
+  """
+  The contents of the comment.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the subject to modify.
+  """
+  subjectId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "IssueOrPullRequest"
+  )
+}
+
+"""
+Autogenerated return type of AddComment
+"""
+type AddCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The edge from the subject's comment connection.
+  """
+  commentEdge: IssueCommentEdge
+
+  """
+  The subject
+  """
+  subject: Node
+
+  """
+  The edge from the subject's timeline connection.
+  """
+  timelineEdge: IssueTimelineItemEdge
+}
+
+"""
+Autogenerated input type of AddLabelsToLabelable
+"""
+input AddLabelsToLabelableInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ids of the labels to add.
+  """
+  labelIds: [ID!]! @possibleTypes(concreteTypes: ["Label"])
+
+  """
+  The id of the labelable object to add labels to.
+  """
+  labelableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "Labelable"
+  )
+}
+
+"""
+Autogenerated return type of AddLabelsToLabelable
+"""
+type AddLabelsToLabelablePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The item that was labeled.
+  """
+  labelable: Labelable
+}
+
+"""
+Autogenerated input type of AddProjectCard
+"""
+input AddProjectCardInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The content of the card. Must be a member of the ProjectCardItem union
+  """
+  contentId: ID
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "ProjectCardItem"
+  )
+
+  """
+  The note on the card.
+  """
+  note: String
+
+  """
+  The Node ID of the ProjectColumn.
+  """
+  projectColumnId: ID! @possibleTypes(concreteTypes: ["ProjectColumn"])
+}
+
+"""
+Autogenerated return type of AddProjectCard
+"""
+type AddProjectCardPayload {
+  """
+  The edge from the ProjectColumn's card connection.
+  """
+  cardEdge: ProjectCardEdge
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ProjectColumn
+  """
+  projectColumn: ProjectColumn
+}
+
+"""
+Autogenerated input type of AddProjectColumn
+"""
+input AddProjectColumnInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of the column.
+  """
+  name: String!
+
+  """
+  The Node ID of the project.
+  """
+  projectId: ID! @possibleTypes(concreteTypes: ["Project"])
+}
+
+"""
+Autogenerated return type of AddProjectColumn
+"""
+type AddProjectColumnPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The edge from the project's column connection.
+  """
+  columnEdge: ProjectColumnEdge
+
+  """
+  The project
+  """
+  project: Project
+}
+
+"""
+Autogenerated input type of AddPullRequestReviewComment
+"""
+input AddPullRequestReviewCommentInput {
+  """
+  The text of the comment.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The SHA of the commit to comment on.
+  """
+  commitOID: GitObjectID
+
+  """
+  The comment id to reply to.
+  """
+  inReplyTo: ID @possibleTypes(concreteTypes: ["PullRequestReviewComment"])
+
+  """
+  The relative path of the file to comment on.
+  """
+  path: String
+
+  """
+  The line index in the diff to comment on.
+  """
+  position: Int
+
+  """
+  The node ID of the pull request reviewing
+  """
+  pullRequestId: ID @possibleTypes(concreteTypes: ["PullRequest"])
+
+  """
+  The Node ID of the review to modify.
+  """
+  pullRequestReviewId: ID @possibleTypes(concreteTypes: ["PullRequestReview"])
+}
+
+"""
+Autogenerated return type of AddPullRequestReviewComment
+"""
+type AddPullRequestReviewCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The newly created comment.
+  """
+  comment: PullRequestReviewComment
+
+  """
+  The edge from the review's comment connection.
+  """
+  commentEdge: PullRequestReviewCommentEdge
+}
+
+"""
+Autogenerated input type of AddPullRequestReview
+"""
+input AddPullRequestReviewInput {
+  """
+  The contents of the review body comment.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The review line comments.
+  """
+  comments: [DraftPullRequestReviewComment]
+
+  """
+  The commit OID the review pertains to.
+  """
+  commitOID: GitObjectID
+
+  """
+  The event to perform on the pull request review.
+  """
+  event: PullRequestReviewEvent
+
+  """
+  The Node ID of the pull request to modify.
+  """
+  pullRequestId: ID! @possibleTypes(concreteTypes: ["PullRequest"])
+
+  """
+  The review line comment threads.
+  """
+  threads: [DraftPullRequestReviewThread]
+}
+
+"""
+Autogenerated return type of AddPullRequestReview
+"""
+type AddPullRequestReviewPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The newly created pull request review.
+  """
+  pullRequestReview: PullRequestReview
+
+  """
+  The edge from the pull request's review connection.
+  """
+  reviewEdge: PullRequestReviewEdge
+}
+
+"""
+Autogenerated input type of AddPullRequestReviewThread
+"""
+input AddPullRequestReviewThreadInput {
+  """
+  Body of the thread's first comment.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The line of the blob to which the thread refers. The end of the line range for multi-line comments.
+  """
+  line: Int!
+
+  """
+  Path to the file being commented on.
+  """
+  path: String!
+
+  """
+  The node ID of the pull request reviewing
+  """
+  pullRequestId: ID @possibleTypes(concreteTypes: ["PullRequest"])
+
+  """
+  The Node ID of the review to modify.
+  """
+  pullRequestReviewId: ID @possibleTypes(concreteTypes: ["PullRequestReview"])
+
+  """
+  The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range.
+  """
+  side: DiffSide = RIGHT
+
+  """
+  The first line of the range to which the comment refers.
+  """
+  startLine: Int
+
+  """
+  The side of the diff on which the start line resides.
+  """
+  startSide: DiffSide = RIGHT
+}
+
+"""
+Autogenerated return type of AddPullRequestReviewThread
+"""
+type AddPullRequestReviewThreadPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The newly created thread.
+  """
+  thread: PullRequestReviewThread
+}
+
+"""
+Autogenerated input type of AddReaction
+"""
+input AddReactionInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of the emoji to react with.
+  """
+  content: ReactionContent!
+
+  """
+  The Node ID of the subject to modify.
+  """
+  subjectId: ID!
+  @possibleTypes(
+    concreteTypes: [
+      "CommitComment"
+      "Issue"
+      "IssueComment"
+      "PullRequest"
+      "PullRequestReview"
+      "PullRequestReviewComment"
+      "TeamDiscussion"
+      "TeamDiscussionComment"
+    ]
+    abstractType: "Reactable"
+  )
+}
+
+"""
+Autogenerated return type of AddReaction
+"""
+type AddReactionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The reaction object.
+  """
+  reaction: Reaction
+
+  """
+  The reactable subject.
+  """
+  subject: Reactable
+}
+
+"""
+Autogenerated input type of AddStar
+"""
+input AddStarInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Starrable ID to star.
+  """
+  starrableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Gist", "Repository", "Topic"]
+    abstractType: "Starrable"
+  )
+}
+
+"""
+Autogenerated return type of AddStar
+"""
+type AddStarPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The starrable.
+  """
+  starrable: Starrable
+}
+
+"""
+Represents a 'added_to_project' event on a given issue or pull request.
+"""
+type AddedToProjectEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  Project referenced by event.
+  """
+  project: Project @preview(toggledBy: "starfox-preview")
+
+  """
+  Project card referenced by this project event.
+  """
+  projectCard: ProjectCard @preview(toggledBy: "starfox-preview")
+
+  """
+  Column name referenced by this project event.
+  """
+  projectColumnName: String! @preview(toggledBy: "starfox-preview")
+}
+
+"""
+A GitHub App.
+"""
+type App implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The description of the app.
+  """
+  description: String
+  id: ID!
+
+  """
+  The hex color code, without the leading '#', for the logo background.
+  """
+  logoBackgroundColor: String!
+
+  """
+  A URL pointing to the app's logo.
+  """
+  logoUrl(
+    """
+    The size of the resulting image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  The name of the app.
+  """
+  name: String!
+
+  """
+  A slug based on the name of the app for use in URLs.
+  """
+  slug: String!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The URL to the app's homepage.
+  """
+  url: URI!
+}
+
+"""
+Autogenerated input type of ArchiveRepository
+"""
+input ArchiveRepositoryInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the repository to mark as archived.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of ArchiveRepository
+"""
+type ArchiveRepositoryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The repository that was marked as archived.
+  """
+  repository: Repository
+}
+
+"""
+An object that can have users assigned to it.
+"""
+interface Assignable {
+  """
+  A list of Users assigned to this object.
+  """
+  assignees(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+}
+
+"""
+Represents an 'assigned' event on any assignable object.
+"""
+type AssignedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the assignable associated with the event.
+  """
+  assignable: Assignable!
+
+  """
+  Identifies the user or mannequin that was assigned.
+  """
+  assignee: Assignee
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the user who was assigned.
+  """
+  user: User
+  @deprecated(
+    reason: "Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC."
+  )
+}
+
+"""
+Types that can be assigned to issues.
+"""
+union Assignee = Bot | Mannequin | Organization | User
+
+"""
+An entry in the audit log.
+"""
+interface AuditEntry {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Types that can initiate an audit log event.
+"""
+union AuditEntryActor = Bot | Organization | User
+
+"""
+Ordering options for Audit Log connections.
+"""
+input AuditLogOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection
+
+  """
+  The field to order Audit Logs by.
+  """
+  field: AuditLogOrderField
+}
+
+"""
+Properties by which Audit Log connections can be ordered.
+"""
+enum AuditLogOrderField {
+  """
+  Order audit log entries by timestamp
+  """
+  CREATED_AT
+}
+
+"""
+Represents a 'automatic_base_change_failed' event on a given pull request.
+"""
+type AutomaticBaseChangeFailedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  The new base for this PR
+  """
+  newBase: String!
+
+  """
+  The old base for this PR
+  """
+  oldBase: String!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+}
+
+"""
+Represents a 'automatic_base_change_succeeded' event on a given pull request.
+"""
+type AutomaticBaseChangeSucceededEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  The new base for this PR
+  """
+  newBase: String!
+
+  """
+  The old base for this PR
+  """
+  oldBase: String!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+}
+
+"""
+Represents a 'base_ref_changed' event on a given issue or pull request.
+"""
+type BaseRefChangedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+}
+
+"""
+Represents a 'base_ref_force_pushed' event on a given pull request.
+"""
+type BaseRefForcePushedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the after commit SHA for the 'base_ref_force_pushed' event.
+  """
+  afterCommit: Commit
+
+  """
+  Identifies the before commit SHA for the 'base_ref_force_pushed' event.
+  """
+  beforeCommit: Commit
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  Identifies the fully qualified ref name for the 'base_ref_force_pushed' event.
+  """
+  ref: Ref
+}
+
+"""
+Represents a Git blame.
+"""
+type Blame {
+  """
+  The list of ranges from a Git blame.
+  """
+  ranges: [BlameRange!]!
+}
+
+"""
+Represents a range of information from a Git blame.
+"""
+type BlameRange {
+  """
+  Identifies the recency of the change, from 1 (new) to 10 (old). This is
+  calculated as a 2-quantile and determines the length of distance between the
+  median age of all the changes in the file and the recency of the current
+  range's change.
+  """
+  age: Int!
+
+  """
+  Identifies the line author
+  """
+  commit: Commit!
+
+  """
+  The ending line for the range
+  """
+  endingLine: Int!
+
+  """
+  The starting line for the range
+  """
+  startingLine: Int!
+}
+
+"""
+Represents a Git blob.
+"""
+type Blob implements GitObject & Node {
+  """
+  An abbreviated version of the Git object ID
+  """
+  abbreviatedOid: String!
+
+  """
+  Byte size of Blob object
+  """
+  byteSize: Int!
+
+  """
+  The HTTP path for this Git object
+  """
+  commitResourcePath: URI!
+
+  """
+  The HTTP URL for this Git object
+  """
+  commitUrl: URI!
+  id: ID!
+
+  """
+  Indicates whether the Blob is binary or text. Returns null if unable to determine the encoding.
+  """
+  isBinary: Boolean
+
+  """
+  Indicates whether the contents is truncated
+  """
+  isTruncated: Boolean!
+
+  """
+  The Git object ID
+  """
+  oid: GitObjectID!
+
+  """
+  The Repository the Git object belongs to
+  """
+  repository: Repository!
+
+  """
+  UTF8 text data or null if the Blob is binary
+  """
+  text: String
+}
+
+"""
+A special type of user which takes actions on behalf of GitHub Apps.
+"""
+type Bot implements Actor & Node & UniformResourceLocatable {
+  """
+  A URL pointing to the GitHub App's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  The username of the actor.
+  """
+  login: String!
+
+  """
+  The HTTP path for this bot
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this bot
+  """
+  url: URI!
+}
+
+"""
+A branch protection rule.
+"""
+type BranchProtectionRule implements Node {
+  """
+  A list of conflicts matching branches protection rule and other branch protection rules
+  """
+  branchProtectionRuleConflicts(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): BranchProtectionRuleConflictConnection!
+
+  """
+  The actor who created this branch protection rule.
+  """
+  creator: Actor
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  Will new commits pushed to matching branches dismiss pull request review approvals.
+  """
+  dismissesStaleReviews: Boolean!
+  id: ID!
+
+  """
+  Can admins overwrite branch protection.
+  """
+  isAdminEnforced: Boolean!
+
+  """
+  Repository refs that are protected by this rule
+  """
+  matchingRefs(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filters refs with query on name
+    """
+    query: String
+  ): RefConnection!
+
+  """
+  Identifies the protection rule pattern.
+  """
+  pattern: String!
+
+  """
+  A list push allowances for this branch protection rule.
+  """
+  pushAllowances(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PushAllowanceConnection!
+
+  """
+  The repository associated with this branch protection rule.
+  """
+  repository: Repository
+
+  """
+  Number of approving reviews required to update matching branches.
+  """
+  requiredApprovingReviewCount: Int
+
+  """
+  List of required status check contexts that must pass for commits to be accepted to matching branches.
+  """
+  requiredStatusCheckContexts: [String]
+
+  """
+  Are approving reviews required to update matching branches.
+  """
+  requiresApprovingReviews: Boolean!
+
+  """
+  Are reviews from code owners required to update matching branches.
+  """
+  requiresCodeOwnerReviews: Boolean!
+
+  """
+  Are commits required to be signed.
+  """
+  requiresCommitSignatures: Boolean!
+
+  """
+  Are status checks required to update matching branches.
+  """
+  requiresStatusChecks: Boolean!
+
+  """
+  Are branches required to be up to date before merging.
+  """
+  requiresStrictStatusChecks: Boolean!
+
+  """
+  Is pushing to matching branches restricted.
+  """
+  restrictsPushes: Boolean!
+
+  """
+  Is dismissal of pull request reviews restricted.
+  """
+  restrictsReviewDismissals: Boolean!
+
+  """
+  A list review dismissal allowances for this branch protection rule.
+  """
+  reviewDismissalAllowances(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ReviewDismissalAllowanceConnection!
+}
+
+"""
+A conflict between two branch protection rules.
+"""
+type BranchProtectionRuleConflict {
+  """
+  Identifies the branch protection rule.
+  """
+  branchProtectionRule: BranchProtectionRule
+
+  """
+  Identifies the conflicting branch protection rule.
+  """
+  conflictingBranchProtectionRule: BranchProtectionRule
+
+  """
+  Identifies the branch ref that has conflicting rules
+  """
+  ref: Ref
+}
+
+"""
+The connection type for BranchProtectionRuleConflict.
+"""
+type BranchProtectionRuleConflictConnection {
+  """
+  A list of edges.
+  """
+  edges: [BranchProtectionRuleConflictEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [BranchProtectionRuleConflict]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type BranchProtectionRuleConflictEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: BranchProtectionRuleConflict
+}
+
+"""
+The connection type for BranchProtectionRule.
+"""
+type BranchProtectionRuleConnection {
+  """
+  A list of edges.
+  """
+  edges: [BranchProtectionRuleEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [BranchProtectionRule]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type BranchProtectionRuleEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: BranchProtectionRule
+}
+
+"""
+Autogenerated input type of CancelEnterpriseAdminInvitation
+"""
+input CancelEnterpriseAdminInvitationInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the pending enterprise administrator invitation.
+  """
+  invitationId: ID!
+  @possibleTypes(concreteTypes: ["EnterpriseAdministratorInvitation"])
+}
+
+"""
+Autogenerated return type of CancelEnterpriseAdminInvitation
+"""
+type CancelEnterpriseAdminInvitationPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The invitation that was canceled.
+  """
+  invitation: EnterpriseAdministratorInvitation
+
+  """
+  A message confirming the result of canceling an administrator invitation.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of ChangeUserStatus
+"""
+input ChangeUserStatusInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The emoji to represent your status. Can either be a native Unicode emoji or an emoji name with colons, e.g., :grinning:.
+  """
+  emoji: String
+
+  """
+  If set, the user status will not be shown after this date.
+  """
+  expiresAt: DateTime
+
+  """
+  Whether this status should indicate you are not fully available on GitHub, e.g., you are away.
+  """
+  limitedAvailability: Boolean = false
+
+  """
+  A short description of your current status.
+  """
+  message: String
+
+  """
+  The ID of the organization whose members will be allowed to see the status. If
+  omitted, the status will be publicly visible.
+  """
+  organizationId: ID @possibleTypes(concreteTypes: ["Organization"])
+}
+
+"""
+Autogenerated return type of ChangeUserStatus
+"""
+type ChangeUserStatusPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Your updated status.
+  """
+  status: UserStatus
+}
+
+"""
+A single check annotation.
+"""
+type CheckAnnotation @preview(toggledBy: "antiope-preview") {
+  """
+  The annotation's severity level.
+  """
+  annotationLevel: CheckAnnotationLevel
+
+  """
+  The path to the file that this annotation was made on.
+  """
+  blobUrl: URI!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The position of this annotation.
+  """
+  location: CheckAnnotationSpan!
+
+  """
+  The annotation's message.
+  """
+  message: String!
+
+  """
+  The path that this annotation was made on.
+  """
+  path: String!
+
+  """
+  Additional information about the annotation.
+  """
+  rawDetails: String
+
+  """
+  The annotation's title
+  """
+  title: String
+}
+
+"""
+The connection type for CheckAnnotation.
+"""
+type CheckAnnotationConnection {
+  """
+  A list of edges.
+  """
+  edges: [CheckAnnotationEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CheckAnnotation] @preview(toggledBy: "antiope-preview")
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Information from a check run analysis to specific lines of code.
+"""
+input CheckAnnotationData @preview(toggledBy: "antiope-preview") {
+  """
+  Represents an annotation's information level
+  """
+  annotationLevel: CheckAnnotationLevel!
+
+  """
+  The location of the annotation
+  """
+  location: CheckAnnotationRange!
+
+  """
+  A short description of the feedback for these lines of code.
+  """
+  message: String!
+
+  """
+  The path of the file to add an annotation to.
+  """
+  path: String!
+
+  """
+  Details about this annotation.
+  """
+  rawDetails: String
+
+  """
+  The title that represents the annotation.
+  """
+  title: String
+}
+
+"""
+An edge in a connection.
+"""
+type CheckAnnotationEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CheckAnnotation @preview(toggledBy: "antiope-preview")
+}
+
+"""
+Represents an annotation's information level.
+"""
+enum CheckAnnotationLevel @preview(toggledBy: "antiope-preview") {
+  """
+  An annotation indicating an inescapable error.
+  """
+  FAILURE
+
+  """
+  An annotation indicating some information.
+  """
+  NOTICE
+
+  """
+  An annotation indicating an ignorable error.
+  """
+  WARNING
+}
+
+"""
+A character position in a check annotation.
+"""
+type CheckAnnotationPosition @preview(toggledBy: "antiope-preview") {
+  """
+  Column number (1 indexed).
+  """
+  column: Int
+
+  """
+  Line number (1 indexed).
+  """
+  line: Int!
+}
+
+"""
+Information from a check run analysis to specific lines of code.
+"""
+input CheckAnnotationRange @preview(toggledBy: "antiope-preview") {
+  """
+  The ending column of the range.
+  """
+  endColumn: Int
+
+  """
+  The ending line of the range.
+  """
+  endLine: Int!
+
+  """
+  The starting column of the range.
+  """
+  startColumn: Int
+
+  """
+  The starting line of the range.
+  """
+  startLine: Int!
+}
+
+"""
+An inclusive pair of positions for a check annotation.
+"""
+type CheckAnnotationSpan @preview(toggledBy: "antiope-preview") {
+  """
+  End position (inclusive).
+  """
+  end: CheckAnnotationPosition!
+
+  """
+  Start position (inclusive).
+  """
+  start: CheckAnnotationPosition!
+}
+
+"""
+The possible states for a check suite or run conclusion.
+"""
+enum CheckConclusionState @preview(toggledBy: "antiope-preview") {
+  """
+  The check suite or run requires action.
+  """
+  ACTION_REQUIRED
+
+  """
+  The check suite or run has been cancelled.
+  """
+  CANCELLED
+
+  """
+  The check suite or run has failed.
+  """
+  FAILURE
+
+  """
+  The check suite or run was neutral.
+  """
+  NEUTRAL
+
+  """
+  The check suite or run was skipped.
+  """
+  SKIPPED
+
+  """
+  The check suite or run was marked stale by GitHub. Only GitHub can use this conclusion.
+  """
+  STALE
+
+  """
+  The check suite or run has succeeded.
+  """
+  SUCCESS
+
+  """
+  The check suite or run has timed out.
+  """
+  TIMED_OUT
+}
+
+"""
+A check run.
+"""
+type CheckRun implements Node & UniformResourceLocatable
+@preview(toggledBy: "antiope-preview") {
+  """
+  The check run's annotations
+  """
+  annotations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CheckAnnotationConnection
+
+  """
+  The check suite that this run is a part of.
+  """
+  checkSuite: CheckSuite!
+
+  """
+  Identifies the date and time when the check run was completed.
+  """
+  completedAt: DateTime
+
+  """
+  The conclusion of the check run.
+  """
+  conclusion: CheckConclusionState
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The URL from which to find full details of the check run on the integrator's site.
+  """
+  detailsUrl: URI
+
+  """
+  A reference for the check run on the integrator's system.
+  """
+  externalId: String
+  id: ID!
+
+  """
+  The name of the check for this check run.
+  """
+  name: String!
+
+  """
+  The permalink to the check run summary.
+  """
+  permalink: URI!
+
+  """
+  The repository associated with this check run.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this check run.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the check run was started.
+  """
+  startedAt: DateTime
+
+  """
+  The current status of the check run.
+  """
+  status: CheckStatusState!
+
+  """
+  A string representing the check run's summary
+  """
+  summary: String
+
+  """
+  A string representing the check run's text
+  """
+  text: String
+
+  """
+  A string representing the check run
+  """
+  title: String
+
+  """
+  The HTTP URL for this check run.
+  """
+  url: URI!
+}
+
+"""
+Possible further actions the integrator can perform.
+"""
+input CheckRunAction @preview(toggledBy: "antiope-preview") {
+  """
+  A short explanation of what this action would do.
+  """
+  description: String!
+
+  """
+  A reference for the action on the integrator's system.
+  """
+  identifier: String!
+
+  """
+  The text to be displayed on a button in the web UI.
+  """
+  label: String!
+}
+
+"""
+The connection type for CheckRun.
+"""
+type CheckRunConnection {
+  """
+  A list of edges.
+  """
+  edges: [CheckRunEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CheckRun] @preview(toggledBy: "antiope-preview")
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CheckRunEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CheckRun @preview(toggledBy: "antiope-preview")
+}
+
+"""
+The filters that are available when fetching check runs.
+"""
+input CheckRunFilter @preview(toggledBy: "antiope-preview") {
+  """
+  Filters the check runs created by this application ID.
+  """
+  appId: Int
+
+  """
+  Filters the check runs by this name.
+  """
+  checkName: String
+
+  """
+  Filters the check runs by this type.
+  """
+  checkType: CheckRunType
+
+  """
+  Filters the check runs by this status.
+  """
+  status: CheckStatusState
+}
+
+"""
+Descriptive details about the check run.
+"""
+input CheckRunOutput @preview(toggledBy: "antiope-preview") {
+  """
+  The annotations that are made as part of the check run.
+  """
+  annotations: [CheckAnnotationData!]
+
+  """
+  Images attached to the check run output displayed in the GitHub pull request UI.
+  """
+  images: [CheckRunOutputImage!]
+
+  """
+  The summary of the check run (supports Commonmark).
+  """
+  summary: String!
+
+  """
+  The details of the check run (supports Commonmark).
+  """
+  text: String
+
+  """
+  A title to provide for this check run.
+  """
+  title: String!
+}
+
+"""
+Images attached to the check run output displayed in the GitHub pull request UI.
+"""
+input CheckRunOutputImage @preview(toggledBy: "antiope-preview") {
+  """
+  The alternative text for the image.
+  """
+  alt: String!
+
+  """
+  A short image description.
+  """
+  caption: String
+
+  """
+  The full URL of the image.
+  """
+  imageUrl: URI!
+}
+
+"""
+The possible types of check runs.
+"""
+enum CheckRunType @preview(toggledBy: "antiope-preview") {
+  """
+  Every check run available.
+  """
+  ALL
+
+  """
+  The latest check run.
+  """
+  LATEST
+}
+
+"""
+The possible states for a check suite or run status.
+"""
+enum CheckStatusState @preview(toggledBy: "antiope-preview") {
+  """
+  The check suite or run has been completed.
+  """
+  COMPLETED
+
+  """
+  The check suite or run is in progress.
+  """
+  IN_PROGRESS
+
+  """
+  The check suite or run has been queued.
+  """
+  QUEUED
+
+  """
+  The check suite or run has been requested.
+  """
+  REQUESTED
+}
+
+"""
+A check suite.
+"""
+type CheckSuite implements Node @preview(toggledBy: "antiope-preview") {
+  """
+  The GitHub App which created this check suite.
+  """
+  app: App
+
+  """
+  The name of the branch for this check suite.
+  """
+  branch: Ref
+
+  """
+  The check runs associated with a check suite.
+  """
+  checkRuns(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Filters the check runs by this type.
+    """
+    filterBy: CheckRunFilter
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CheckRunConnection
+
+  """
+  The commit for this check suite
+  """
+  commit: Commit!
+
+  """
+  The conclusion of this check suite.
+  """
+  conclusion: CheckConclusionState
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  A list of open pull requests matching the check suite.
+  """
+  matchingPullRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    The base ref name to filter the pull requests by.
+    """
+    baseRefName: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    The head ref name to filter the pull requests by.
+    """
+    headRefName: String
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pull requests returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the pull requests by.
+    """
+    states: [PullRequestState!]
+  ): PullRequestConnection
+
+  """
+  The push that triggered this check suite.
+  """
+  push: Push
+
+  """
+  The repository associated with this check suite.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this check suite
+  """
+  resourcePath: URI!
+
+  """
+  The status of this check suite.
+  """
+  status: CheckStatusState!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this check suite
+  """
+  url: URI!
+}
+
+"""
+The auto-trigger preferences that are available for check suites.
+"""
+input CheckSuiteAutoTriggerPreference @preview(toggledBy: "antiope-preview") {
+  """
+  The node ID of the application that owns the check suite.
+  """
+  appId: ID!
+
+  """
+  Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository.
+  """
+  setting: Boolean!
+}
+
+"""
+The connection type for CheckSuite.
+"""
+type CheckSuiteConnection {
+  """
+  A list of edges.
+  """
+  edges: [CheckSuiteEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CheckSuite] @preview(toggledBy: "antiope-preview")
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CheckSuiteEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CheckSuite @preview(toggledBy: "antiope-preview")
+}
+
+"""
+The filters that are available when fetching check suites.
+"""
+input CheckSuiteFilter @preview(toggledBy: "antiope-preview") {
+  """
+  Filters the check suites created by this application ID.
+  """
+  appId: Int
+
+  """
+  Filters the check suites by this name.
+  """
+  checkName: String
+}
+
+"""
+Autogenerated input type of ClearLabelsFromLabelable
+"""
+input ClearLabelsFromLabelableInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The id of the labelable object to clear the labels from.
+  """
+  labelableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "Labelable"
+  )
+}
+
+"""
+Autogenerated return type of ClearLabelsFromLabelable
+"""
+type ClearLabelsFromLabelablePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The item that was unlabeled.
+  """
+  labelable: Labelable
+}
+
+"""
+Autogenerated input type of CloneProject
+"""
+input CloneProjectInput {
+  """
+  The description of the project.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Whether or not to clone the source project's workflows.
+  """
+  includeWorkflows: Boolean!
+
+  """
+  The name of the project.
+  """
+  name: String!
+
+  """
+  The visibility of the project, defaults to false (private).
+  """
+  public: Boolean
+
+  """
+  The source project to clone.
+  """
+  sourceId: ID! @possibleTypes(concreteTypes: ["Project"])
+
+  """
+  The owner ID to create the project under.
+  """
+  targetOwnerId: ID!
+  @possibleTypes(
+    concreteTypes: ["Organization", "Repository", "User"]
+    abstractType: "ProjectOwner"
+  )
+}
+
+"""
+Autogenerated return type of CloneProject
+"""
+type CloneProjectPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The id of the JobStatus for populating cloned fields.
+  """
+  jobStatusId: String
+
+  """
+  The new cloned project.
+  """
+  project: Project
+}
+
+"""
+Autogenerated input type of CloneTemplateRepository
+"""
+input CloneTemplateRepositoryInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A short description of the new repository.
+  """
+  description: String
+
+  """
+  Whether to copy all branches from the template to the new repository. Defaults
+  to copying only the default branch of the template.
+  """
+  includeAllBranches: Boolean = false
+
+  """
+  The name of the new repository.
+  """
+  name: String!
+
+  """
+  The ID of the owner for the new repository.
+  """
+  ownerId: ID!
+  @possibleTypes(
+    concreteTypes: ["Organization", "User"]
+    abstractType: "RepositoryOwner"
+  )
+
+  """
+  The Node ID of the template repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  Indicates the repository's visibility level.
+  """
+  visibility: RepositoryVisibility!
+}
+
+"""
+Autogenerated return type of CloneTemplateRepository
+"""
+type CloneTemplateRepositoryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new repository.
+  """
+  repository: Repository
+}
+
+"""
+An object that can be closed
+"""
+interface Closable {
+  """
+  `true` if the object is closed (definition of closed may depend on type)
+  """
+  closed: Boolean!
+
+  """
+  Identifies the date and time when the object was closed.
+  """
+  closedAt: DateTime
+}
+
+"""
+Autogenerated input type of CloseIssue
+"""
+input CloseIssueInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the issue to be closed.
+  """
+  issueId: ID! @possibleTypes(concreteTypes: ["Issue"])
+}
+
+"""
+Autogenerated return type of CloseIssue
+"""
+type CloseIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The issue that was closed.
+  """
+  issue: Issue
+}
+
+"""
+Autogenerated input type of ClosePullRequest
+"""
+input ClosePullRequestInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the pull request to be closed.
+  """
+  pullRequestId: ID! @possibleTypes(concreteTypes: ["PullRequest"])
+}
+
+"""
+Autogenerated return type of ClosePullRequest
+"""
+type ClosePullRequestPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The pull request that was closed.
+  """
+  pullRequest: PullRequest
+}
+
+"""
+Represents a 'closed' event on any `Closable`.
+"""
+type ClosedEvent implements Node & UniformResourceLocatable {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Object that was closed.
+  """
+  closable: Closable!
+
+  """
+  Object which triggered the creation of this event.
+  """
+  closer: Closer
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  The HTTP path for this closed event.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this closed event.
+  """
+  url: URI!
+}
+
+"""
+The object which triggered a `ClosedEvent`.
+"""
+union Closer = Commit | PullRequest
+
+"""
+The Code of Conduct for a repository
+"""
+type CodeOfConduct implements Node {
+  """
+  The body of the Code of Conduct
+  """
+  body: String
+  id: ID!
+
+  """
+  The key for the Code of Conduct
+  """
+  key: String!
+
+  """
+  The formal name of the Code of Conduct
+  """
+  name: String!
+
+  """
+  The HTTP path for this Code of Conduct
+  """
+  resourcePath: URI
+
+  """
+  The HTTP URL for this Code of Conduct
+  """
+  url: URI
+}
+
+"""
+Collaborators affiliation level with a subject.
+"""
+enum CollaboratorAffiliation {
+  """
+  All collaborators the authenticated user can see.
+  """
+  ALL
+
+  """
+  All collaborators with permissions to an organization-owned subject, regardless of organization membership status.
+  """
+  DIRECT
+
+  """
+  All outside collaborators of an organization-owned subject.
+  """
+  OUTSIDE
+}
+
+"""
+Represents a comment.
+"""
+interface Comment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the subject of the comment.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  The body as Markdown.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body rendered to text.
+  """
+  bodyText: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+}
+
+"""
+A comment author association with repository.
+"""
+enum CommentAuthorAssociation {
+  """
+  Author has been invited to collaborate on the repository.
+  """
+  COLLABORATOR
+
+  """
+  Author has previously committed to the repository.
+  """
+  CONTRIBUTOR
+
+  """
+  Author has not previously committed to GitHub.
+  """
+  FIRST_TIMER
+
+  """
+  Author has not previously committed to the repository.
+  """
+  FIRST_TIME_CONTRIBUTOR
+
+  """
+  Author is a member of the organization that owns the repository.
+  """
+  MEMBER
+
+  """
+  Author has no association with the repository.
+  """
+  NONE
+
+  """
+  Author is the owner of the repository.
+  """
+  OWNER
+}
+
+"""
+The possible errors that will prevent a user from updating a comment.
+"""
+enum CommentCannotUpdateReason {
+  """
+  Unable to create comment because repository is archived.
+  """
+  ARCHIVED
+
+  """
+  You cannot update this comment
+  """
+  DENIED
+
+  """
+  You must be the author or have write access to this repository to update this comment.
+  """
+  INSUFFICIENT_ACCESS
+
+  """
+  Unable to create comment because issue is locked.
+  """
+  LOCKED
+
+  """
+  You must be logged in to update this comment.
+  """
+  LOGIN_REQUIRED
+
+  """
+  Repository is under maintenance.
+  """
+  MAINTENANCE
+
+  """
+  At least one email address must be verified to update this comment.
+  """
+  VERIFIED_EMAIL_REQUIRED
+}
+
+"""
+Represents a 'comment_deleted' event on a given issue or pull request.
+"""
+type CommentDeletedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+}
+
+"""
+Represents a Git commit.
+"""
+type Commit implements GitObject & Node & Subscribable & UniformResourceLocatable {
+  """
+  An abbreviated version of the Git object ID
+  """
+  abbreviatedOid: String!
+
+  """
+  The number of additions in this commit.
+  """
+  additions: Int!
+
+  """
+  The pull requests associated with a commit
+  """
+  associatedPullRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pull requests.
+    """
+    orderBy: PullRequestOrder = { field: CREATED_AT, direction: ASC }
+  ): PullRequestConnection
+
+  """
+  Authorship details of the commit.
+  """
+  author: GitActor
+
+  """
+  Check if the committer and the author match.
+  """
+  authoredByCommitter: Boolean!
+
+  """
+  The datetime when this commit was authored.
+  """
+  authoredDate: DateTime!
+
+  """
+  Fetches `git blame` information.
+  """
+  blame(
+    """
+    The file whose Git blame information you want.
+    """
+    path: String!
+  ): Blame!
+
+  """
+  The number of changed files in this commit.
+  """
+  changedFiles: Int!
+
+  """
+  The check suites associated with a commit.
+  """
+  checkSuites(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Filters the check suites by this type.
+    """
+    filterBy: CheckSuiteFilter
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CheckSuiteConnection @preview(toggledBy: "antiope-preview")
+
+  """
+  Comments made on the commit.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CommitCommentConnection!
+
+  """
+  The HTTP path for this Git object
+  """
+  commitResourcePath: URI!
+
+  """
+  The HTTP URL for this Git object
+  """
+  commitUrl: URI!
+
+  """
+  The datetime when this commit was committed.
+  """
+  committedDate: DateTime!
+
+  """
+  Check if commited via GitHub web UI.
+  """
+  committedViaWeb: Boolean!
+
+  """
+  Committership details of the commit.
+  """
+  committer: GitActor
+
+  """
+  The number of deletions in this commit.
+  """
+  deletions: Int!
+
+  """
+  The deployments associated with a commit.
+  """
+  deployments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Environments to list deployments for
+    """
+    environments: [String!]
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for deployments returned from the connection.
+    """
+    orderBy: DeploymentOrder = { field: CREATED_AT, direction: ASC }
+  ): DeploymentConnection
+
+  """
+  The linear commit history starting from (and including) this commit, in the same order as `git log`.
+  """
+  history(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    If non-null, filters history to only show commits with matching authorship.
+    """
+    author: CommitAuthor
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    If non-null, filters history to only show commits touching files under this path.
+    """
+    path: String
+
+    """
+    Allows specifying a beginning time or date for fetching commits.
+    """
+    since: GitTimestamp
+
+    """
+    Allows specifying an ending time or date for fetching commits.
+    """
+    until: GitTimestamp
+  ): CommitHistoryConnection!
+  id: ID!
+
+  """
+  The Git commit message
+  """
+  message: String!
+
+  """
+  The Git commit message body
+  """
+  messageBody: String!
+
+  """
+  The commit message body rendered to HTML.
+  """
+  messageBodyHTML: HTML!
+
+  """
+  The Git commit message headline
+  """
+  messageHeadline: String!
+
+  """
+  The commit message headline rendered to HTML.
+  """
+  messageHeadlineHTML: HTML!
+
+  """
+  The Git object ID
+  """
+  oid: GitObjectID!
+
+  """
+  The organization this commit was made on behalf of.
+  """
+  onBehalfOf: Organization
+
+  """
+  The parents of a commit.
+  """
+  parents(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CommitConnection!
+
+  """
+  The datetime when this commit was pushed.
+  """
+  pushedDate: DateTime
+
+  """
+  The Repository this commit belongs to
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this commit
+  """
+  resourcePath: URI!
+
+  """
+  Commit signing information, if present.
+  """
+  signature: GitSignature
+
+  """
+  Status information for this commit
+  """
+  status: Status
+
+  """
+  Check and Status rollup information for this commit.
+  """
+  statusCheckRollup: StatusCheckRollup
+
+  """
+  Returns a list of all submodules in this repository as of this Commit parsed from the .gitmodules file.
+  """
+  submodules(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): SubmoduleConnection!
+
+  """
+  Returns a URL to download a tarball archive for a repository.
+  Note: For private repositories, these links are temporary and expire after five minutes.
+  """
+  tarballUrl: URI!
+
+  """
+  Commit's root Tree
+  """
+  tree: Tree!
+
+  """
+  The HTTP path for the tree of this commit
+  """
+  treeResourcePath: URI!
+
+  """
+  The HTTP URL for the tree of this commit
+  """
+  treeUrl: URI!
+
+  """
+  The HTTP URL for this commit
+  """
+  url: URI!
+
+  """
+  Check if the viewer is able to change their subscription status for the repository.
+  """
+  viewerCanSubscribe: Boolean!
+
+  """
+  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
+  """
+  viewerSubscription: SubscriptionState
+
+  """
+  Returns a URL to download a zipball archive for a repository.
+  Note: For private repositories, these links are temporary and expire after five minutes.
+  """
+  zipballUrl: URI!
+}
+
+"""
+Specifies an author for filtering Git commits.
+"""
+input CommitAuthor {
+  """
+  Email addresses to filter by. Commits authored by any of the specified email addresses will be returned.
+  """
+  emails: [String!]
+
+  """
+  ID of a User to filter by. If non-null, only commits authored by this user
+  will be returned. This field takes precedence over emails.
+  """
+  id: ID
+}
+
+"""
+Represents a comment on a given Commit.
+"""
+type CommitComment implements Comment & Deletable & Minimizable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the subject of the comment.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  Identifies the comment body.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body rendered to text.
+  """
+  bodyText: String!
+
+  """
+  Identifies the commit associated with the comment, if the commit exists.
+  """
+  commit: Commit
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  Returns whether or not a comment has been minimized.
+  """
+  isMinimized: Boolean!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  Returns why the comment was minimized.
+  """
+  minimizedReason: String
+
+  """
+  Identifies the file path associated with the comment.
+  """
+  path: String
+
+  """
+  Identifies the line position associated with the comment.
+  """
+  position: Int
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path permalink for this commit comment.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL permalink for this commit comment.
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+
+  """
+  Check if the current viewer can minimize this object.
+  """
+  viewerCanMinimize: Boolean!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+}
+
+"""
+The connection type for CommitComment.
+"""
+type CommitCommentConnection {
+  """
+  A list of edges.
+  """
+  edges: [CommitCommentEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CommitComment]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CommitCommentEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CommitComment
+}
+
+"""
+A thread of comments on a commit.
+"""
+type CommitCommentThread implements Node & RepositoryNode {
+  """
+  The comments that exist in this thread.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CommitCommentConnection!
+
+  """
+  The commit the comments were made on.
+  """
+  commit: Commit
+  id: ID!
+
+  """
+  The file the comments were made on.
+  """
+  path: String
+
+  """
+  The position in the diff for the commit that the comment was made on.
+  """
+  position: Int
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+}
+
+"""
+The connection type for Commit.
+"""
+type CommitConnection {
+  """
+  A list of edges.
+  """
+  edges: [CommitEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Commit]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Ordering options for commit contribution connections.
+"""
+input CommitContributionOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field by which to order commit contributions.
+  """
+  field: CommitContributionOrderField!
+}
+
+"""
+Properties by which commit contribution connections can be ordered.
+"""
+enum CommitContributionOrderField {
+  """
+  Order commit contributions by how many commits they represent.
+  """
+  COMMIT_COUNT
+
+  """
+  Order commit contributions by when they were made.
+  """
+  OCCURRED_AT
+}
+
+"""
+This aggregates commits made by a user within one repository.
+"""
+type CommitContributionsByRepository {
+  """
+  The commit contributions, each representing a day.
+  """
+  contributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for commit contributions returned from the connection.
+    """
+    orderBy: CommitContributionOrder = { field: OCCURRED_AT, direction: DESC }
+  ): CreatedCommitContributionConnection!
+
+  """
+  The repository in which the commits were made.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for the user's commits to the repository in this time range.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for the user's commits to the repository in this time range.
+  """
+  url: URI!
+}
+
+"""
+An edge in a connection.
+"""
+type CommitEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Commit
+}
+
+"""
+The connection type for Commit.
+"""
+type CommitHistoryConnection {
+  """
+  A list of edges.
+  """
+  edges: [CommitEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Commit]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a 'connected' event on a given issue or pull request.
+"""
+type ConnectedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Reference originated in a different repository.
+  """
+  isCrossRepository: Boolean!
+
+  """
+  Issue or pull request that made the reference.
+  """
+  source: ReferencedSubject!
+
+  """
+  Issue or pull request which was connected.
+  """
+  subject: ReferencedSubject!
+}
+
+"""
+A content attachment
+"""
+type ContentAttachment {
+  """
+  The body text of the content attachment. This parameter supports markdown.
+  """
+  body: String!
+
+  """
+  The content reference that the content attachment is attached to.
+  """
+  contentReference: ContentReference!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int!
+  id: ID!
+
+  """
+  The title of the content attachment.
+  """
+  title: String!
+}
+
+"""
+A content reference
+"""
+type ContentReference {
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int!
+  id: ID!
+
+  """
+  The reference of the content reference.
+  """
+  reference: String!
+}
+
+"""
+Represents a contribution a user made on GitHub, such as opening an issue.
+"""
+interface Contribution {
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+A calendar of contributions made on GitHub by a user.
+"""
+type ContributionCalendar {
+  """
+  A list of hex color codes used in this calendar. The darker the color, the more contributions it represents.
+  """
+  colors: [String!]!
+
+  """
+  Determine if the color set was chosen because it's currently Halloween.
+  """
+  isHalloween: Boolean!
+
+  """
+  A list of the months of contributions in this calendar.
+  """
+  months: [ContributionCalendarMonth!]!
+
+  """
+  The count of total contributions in the calendar.
+  """
+  totalContributions: Int!
+
+  """
+  A list of the weeks of contributions in this calendar.
+  """
+  weeks: [ContributionCalendarWeek!]!
+}
+
+"""
+Represents a single day of contributions on GitHub by a user.
+"""
+type ContributionCalendarDay {
+  """
+  The hex color code that represents how many contributions were made on this day compared to others in the calendar.
+  """
+  color: String!
+
+  """
+  How many contributions were made by the user on this day.
+  """
+  contributionCount: Int!
+
+  """
+  The day this square represents.
+  """
+  date: Date!
+
+  """
+  A number representing which day of the week this square represents, e.g., 1 is Monday.
+  """
+  weekday: Int!
+}
+
+"""
+A month of contributions in a user's contribution graph.
+"""
+type ContributionCalendarMonth {
+  """
+  The date of the first day of this month.
+  """
+  firstDay: Date!
+
+  """
+  The name of the month.
+  """
+  name: String!
+
+  """
+  How many weeks started in this month.
+  """
+  totalWeeks: Int!
+
+  """
+  The year the month occurred in.
+  """
+  year: Int!
+}
+
+"""
+A week of contributions in a user's contribution graph.
+"""
+type ContributionCalendarWeek {
+  """
+  The days of contributions in this week.
+  """
+  contributionDays: [ContributionCalendarDay!]!
+
+  """
+  The date of the earliest square in this week.
+  """
+  firstDay: Date!
+}
+
+"""
+Ordering options for contribution connections.
+"""
+input ContributionOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+}
+
+"""
+A contributions collection aggregates contributions such as opened issues and commits created by a user.
+"""
+type ContributionsCollection {
+  """
+  Commit contributions made by the user, grouped by repository.
+  """
+  commitContributionsByRepository(
+    """
+    How many repositories should be included.
+    """
+    maxRepositories: Int = 25
+  ): [CommitContributionsByRepository!]!
+
+  """
+  A calendar of this user's contributions on GitHub.
+  """
+  contributionCalendar: ContributionCalendar!
+
+  """
+  The years the user has been making contributions with the most recent year first.
+  """
+  contributionYears: [Int!]!
+
+  """
+  Determine if this collection's time span ends in the current month.
+  """
+  doesEndInCurrentMonth: Boolean!
+
+  """
+  The date of the first restricted contribution the user made in this time
+  period. Can only be non-null when the user has enabled private contribution counts.
+  """
+  earliestRestrictedContributionDate: Date
+
+  """
+  The ending date and time of this collection.
+  """
+  endedAt: DateTime!
+
+  """
+  The first issue the user opened on GitHub. This will be null if that issue was
+  opened outside the collection's time range and ignoreTimeRange is false. If
+  the issue is not visible but the user has opted to show private contributions,
+  a RestrictedContribution will be returned.
+  """
+  firstIssueContribution: CreatedIssueOrRestrictedContribution
+
+  """
+  The first pull request the user opened on GitHub. This will be null if that
+  pull request was opened outside the collection's time range and
+  ignoreTimeRange is not true. If the pull request is not visible but the user
+  has opted to show private contributions, a RestrictedContribution will be returned.
+  """
+  firstPullRequestContribution: CreatedPullRequestOrRestrictedContribution
+
+  """
+  The first repository the user created on GitHub. This will be null if that
+  first repository was created outside the collection's time range and
+  ignoreTimeRange is false. If the repository is not visible, then a
+  RestrictedContribution is returned.
+  """
+  firstRepositoryContribution: CreatedRepositoryOrRestrictedContribution
+
+  """
+  Does the user have any more activity in the timeline that occurred prior to the collection's time range?
+  """
+  hasActivityInThePast: Boolean!
+
+  """
+  Determine if there are any contributions in this collection.
+  """
+  hasAnyContributions: Boolean!
+
+  """
+  Determine if the user made any contributions in this time frame whose details
+  are not visible because they were made in a private repository. Can only be
+  true if the user enabled private contribution counts.
+  """
+  hasAnyRestrictedContributions: Boolean!
+
+  """
+  Whether or not the collector's time span is all within the same day.
+  """
+  isSingleDay: Boolean!
+
+  """
+  A list of issues the user opened.
+  """
+  issueContributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Should the user's first issue ever be excluded from the result.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented issue be excluded from the result.
+    """
+    excludePopular: Boolean = false
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for contributions returned from the connection.
+    """
+    orderBy: ContributionOrder = { direction: DESC }
+  ): CreatedIssueContributionConnection!
+
+  """
+  Issue contributions made by the user, grouped by repository.
+  """
+  issueContributionsByRepository(
+    """
+    Should the user's first issue ever be excluded from the result.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented issue be excluded from the result.
+    """
+    excludePopular: Boolean = false
+
+    """
+    How many repositories should be included.
+    """
+    maxRepositories: Int = 25
+  ): [IssueContributionsByRepository!]!
+
+  """
+  When the user signed up for GitHub. This will be null if that sign up date
+  falls outside the collection's time range and ignoreTimeRange is false.
+  """
+  joinedGitHubContribution: JoinedGitHubContribution
+
+  """
+  The date of the most recent restricted contribution the user made in this time
+  period. Can only be non-null when the user has enabled private contribution counts.
+  """
+  latestRestrictedContributionDate: Date
+
+  """
+  When this collection's time range does not include any activity from the user, use this
+  to get a different collection from an earlier time range that does have activity.
+  """
+  mostRecentCollectionWithActivity: ContributionsCollection
+
+  """
+  Returns a different contributions collection from an earlier time range than this one
+  that does not have any contributions.
+  """
+  mostRecentCollectionWithoutActivity: ContributionsCollection
+
+  """
+  The issue the user opened on GitHub that received the most comments in the specified
+  time frame.
+  """
+  popularIssueContribution: CreatedIssueContribution
+
+  """
+  The pull request the user opened on GitHub that received the most comments in the
+  specified time frame.
+  """
+  popularPullRequestContribution: CreatedPullRequestContribution
+
+  """
+  Pull request contributions made by the user.
+  """
+  pullRequestContributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Should the user's first pull request ever be excluded from the result.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented pull request be excluded from the result.
+    """
+    excludePopular: Boolean = false
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for contributions returned from the connection.
+    """
+    orderBy: ContributionOrder = { direction: DESC }
+  ): CreatedPullRequestContributionConnection!
+
+  """
+  Pull request contributions made by the user, grouped by repository.
+  """
+  pullRequestContributionsByRepository(
+    """
+    Should the user's first pull request ever be excluded from the result.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented pull request be excluded from the result.
+    """
+    excludePopular: Boolean = false
+
+    """
+    How many repositories should be included.
+    """
+    maxRepositories: Int = 25
+  ): [PullRequestContributionsByRepository!]!
+
+  """
+  Pull request review contributions made by the user.
+  """
+  pullRequestReviewContributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for contributions returned from the connection.
+    """
+    orderBy: ContributionOrder = { direction: DESC }
+  ): CreatedPullRequestReviewContributionConnection!
+
+  """
+  Pull request review contributions made by the user, grouped by repository.
+  """
+  pullRequestReviewContributionsByRepository(
+    """
+    How many repositories should be included.
+    """
+    maxRepositories: Int = 25
+  ): [PullRequestReviewContributionsByRepository!]!
+
+  """
+  A list of repositories owned by the user that the user created in this time range.
+  """
+  repositoryContributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Should the user's first repository ever be excluded from the result.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for contributions returned from the connection.
+    """
+    orderBy: ContributionOrder = { direction: DESC }
+  ): CreatedRepositoryContributionConnection!
+
+  """
+  A count of contributions made by the user that the viewer cannot access. Only
+  non-zero when the user has chosen to share their private contribution counts.
+  """
+  restrictedContributionsCount: Int!
+
+  """
+  The beginning date and time of this collection.
+  """
+  startedAt: DateTime!
+
+  """
+  How many commits were made by the user in this time span.
+  """
+  totalCommitContributions: Int!
+
+  """
+  How many issues the user opened.
+  """
+  totalIssueContributions(
+    """
+    Should the user's first issue ever be excluded from this count.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented issue be excluded from this count.
+    """
+    excludePopular: Boolean = false
+  ): Int!
+
+  """
+  How many pull requests the user opened.
+  """
+  totalPullRequestContributions(
+    """
+    Should the user's first pull request ever be excluded from this count.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented pull request be excluded from this count.
+    """
+    excludePopular: Boolean = false
+  ): Int!
+
+  """
+  How many pull request reviews the user left.
+  """
+  totalPullRequestReviewContributions: Int!
+
+  """
+  How many different repositories the user committed to.
+  """
+  totalRepositoriesWithContributedCommits: Int!
+
+  """
+  How many different repositories the user opened issues in.
+  """
+  totalRepositoriesWithContributedIssues(
+    """
+    Should the user's first issue ever be excluded from this count.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented issue be excluded from this count.
+    """
+    excludePopular: Boolean = false
+  ): Int!
+
+  """
+  How many different repositories the user left pull request reviews in.
+  """
+  totalRepositoriesWithContributedPullRequestReviews: Int!
+
+  """
+  How many different repositories the user opened pull requests in.
+  """
+  totalRepositoriesWithContributedPullRequests(
+    """
+    Should the user's first pull request ever be excluded from this count.
+    """
+    excludeFirst: Boolean = false
+
+    """
+    Should the user's most commented pull request be excluded from this count.
+    """
+    excludePopular: Boolean = false
+  ): Int!
+
+  """
+  How many repositories the user created.
+  """
+  totalRepositoryContributions(
+    """
+    Should the user's first repository ever be excluded from this count.
+    """
+    excludeFirst: Boolean = false
+  ): Int!
+
+  """
+  The user who made the contributions in this collection.
+  """
+  user: User!
+}
+
+"""
+Autogenerated input type of ConvertProjectCardNoteToIssue
+"""
+input ConvertProjectCardNoteToIssueInput {
+  """
+  The body of the newly created issue.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ProjectCard ID to convert.
+  """
+  projectCardId: ID! @possibleTypes(concreteTypes: ["ProjectCard"])
+
+  """
+  The ID of the repository to create the issue in.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  The title of the newly created issue. Defaults to the card's note text.
+  """
+  title: String
+}
+
+"""
+Autogenerated return type of ConvertProjectCardNoteToIssue
+"""
+type ConvertProjectCardNoteToIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated ProjectCard.
+  """
+  projectCard: ProjectCard
+}
+
+"""
+Represents a 'convert_to_draft' event on a given pull request.
+"""
+type ConvertToDraftEvent implements Node & UniformResourceLocatable {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The HTTP path for this convert to draft event.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this convert to draft event.
+  """
+  url: URI!
+}
+
+"""
+Represents a 'converted_note_to_issue' event on a given issue or pull request.
+"""
+type ConvertedNoteToIssueEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  Project referenced by event.
+  """
+  project: Project @preview(toggledBy: "starfox-preview")
+
+  """
+  Project card referenced by this project event.
+  """
+  projectCard: ProjectCard @preview(toggledBy: "starfox-preview")
+
+  """
+  Column name referenced by this project event.
+  """
+  projectColumnName: String! @preview(toggledBy: "starfox-preview")
+}
+
+"""
+Autogenerated input type of CreateBranchProtectionRule
+"""
+input CreateBranchProtectionRuleInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Will new commits pushed to matching branches dismiss pull request review approvals.
+  """
+  dismissesStaleReviews: Boolean
+
+  """
+  Can admins overwrite branch protection.
+  """
+  isAdminEnforced: Boolean
+
+  """
+  The glob-like pattern used to determine matching branches.
+  """
+  pattern: String!
+
+  """
+  A list of User, Team or App IDs allowed to push to matching branches.
+  """
+  pushActorIds: [ID!]
+
+  """
+  The global relay id of the repository in which a new branch protection rule should be created in.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  Number of approving reviews required to update matching branches.
+  """
+  requiredApprovingReviewCount: Int
+
+  """
+  List of required status check contexts that must pass for commits to be accepted to matching branches.
+  """
+  requiredStatusCheckContexts: [String!]
+
+  """
+  Are approving reviews required to update matching branches.
+  """
+  requiresApprovingReviews: Boolean
+
+  """
+  Are reviews from code owners required to update matching branches.
+  """
+  requiresCodeOwnerReviews: Boolean
+
+  """
+  Are commits required to be signed.
+  """
+  requiresCommitSignatures: Boolean
+
+  """
+  Are status checks required to update matching branches.
+  """
+  requiresStatusChecks: Boolean
+
+  """
+  Are branches required to be up to date before merging.
+  """
+  requiresStrictStatusChecks: Boolean
+
+  """
+  Is pushing to matching branches restricted.
+  """
+  restrictsPushes: Boolean
+
+  """
+  Is dismissal of pull request reviews restricted.
+  """
+  restrictsReviewDismissals: Boolean
+
+  """
+  A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches.
+  """
+  reviewDismissalActorIds: [ID!]
+}
+
+"""
+Autogenerated return type of CreateBranchProtectionRule
+"""
+type CreateBranchProtectionRulePayload {
+  """
+  The newly created BranchProtectionRule.
+  """
+  branchProtectionRule: BranchProtectionRule
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of CreateCheckRun
+"""
+input CreateCheckRunInput @preview(toggledBy: "antiope-preview") {
+  """
+  Possible further actions the integrator can perform, which a user may trigger.
+  """
+  actions: [CheckRunAction!]
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The time that the check run finished.
+  """
+  completedAt: DateTime
+
+  """
+  The final conclusion of the check.
+  """
+  conclusion: CheckConclusionState
+
+  """
+  The URL of the integrator's site that has the full details of the check.
+  """
+  detailsUrl: URI
+
+  """
+  A reference for the run on the integrator's system.
+  """
+  externalId: String
+
+  """
+  The SHA of the head commit.
+  """
+  headSha: GitObjectID!
+
+  """
+  The name of the check.
+  """
+  name: String!
+
+  """
+  Descriptive details about the run.
+  """
+  output: CheckRunOutput
+
+  """
+  The node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  The time that the check run began.
+  """
+  startedAt: DateTime
+
+  """
+  The current status.
+  """
+  status: RequestableCheckStatusState
+}
+
+"""
+Autogenerated return type of CreateCheckRun
+"""
+type CreateCheckRunPayload @preview(toggledBy: "antiope-preview") {
+  """
+  The newly created check run.
+  """
+  checkRun: CheckRun
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of CreateCheckSuite
+"""
+input CreateCheckSuiteInput @preview(toggledBy: "antiope-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The SHA of the head commit.
+  """
+  headSha: GitObjectID!
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of CreateCheckSuite
+"""
+type CreateCheckSuitePayload @preview(toggledBy: "antiope-preview") {
+  """
+  The newly created check suite.
+  """
+  checkSuite: CheckSuite
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of CreateContentAttachment
+"""
+input CreateContentAttachmentInput {
+  """
+  The body of the content attachment, which may contain markdown.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The node ID of the content_reference.
+  """
+  contentReferenceId: ID! @possibleTypes(concreteTypes: ["ContentReference"])
+
+  """
+  The title of the content attachment.
+  """
+  title: String!
+}
+
+"""
+Autogenerated return type of CreateContentAttachment
+"""
+type CreateContentAttachmentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The newly created content attachment.
+  """
+  contentAttachment: ContentAttachment
+}
+
+"""
+Autogenerated input type of CreateDeployment
+"""
+input CreateDeploymentInput @preview(toggledBy: "flash-preview") {
+  """
+  Attempt to automatically merge the default branch into the requested ref, defaults to true.
+  """
+  autoMerge: Boolean = true
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Short description of the deployment.
+  """
+  description: String = ""
+
+  """
+  Name for the target deployment environment.
+  """
+  environment: String = "production"
+
+  """
+  JSON payload with extra information about the deployment.
+  """
+  payload: String = "{}"
+
+  """
+  The node ID of the ref to be deployed.
+  """
+  refId: ID! @possibleTypes(concreteTypes: ["Ref"])
+
+  """
+  The node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  The status contexts to verify against commit status checks. To bypass required
+  contexts, pass an empty array. Defaults to all unique contexts.
+  """
+  requiredContexts: [String!]
+
+  """
+  Specifies a task to execute.
+  """
+  task: String = "deploy"
+}
+
+"""
+Autogenerated return type of CreateDeployment
+"""
+type CreateDeploymentPayload @preview(toggledBy: "flash-preview") {
+  """
+  True if the default branch has been auto-merged into the deployment ref.
+  """
+  autoMerged: Boolean
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new deployment.
+  """
+  deployment: Deployment
+}
+
+"""
+Autogenerated input type of CreateDeploymentStatus
+"""
+input CreateDeploymentStatusInput @preview(toggledBy: "flash-preview") {
+  """
+  Adds a new inactive status to all non-transient, non-production environment
+  deployments with the same repository and environment name as the created
+  status's deployment.
+  """
+  autoInactive: Boolean = true
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The node ID of the deployment.
+  """
+  deploymentId: ID! @possibleTypes(concreteTypes: ["Deployment"])
+
+  """
+  A short description of the status. Maximum length of 140 characters.
+  """
+  description: String = ""
+
+  """
+  If provided, updates the environment of the deploy. Otherwise, does not modify the environment.
+  """
+  environment: String
+
+  """
+  Sets the URL for accessing your environment.
+  """
+  environmentUrl: String = ""
+
+  """
+  The log URL to associate with this status.       This URL should contain
+  output to keep the user updated while the task is running       or serve as
+  historical information for what happened in the deployment.
+  """
+  logUrl: String = ""
+
+  """
+  The state of the deployment.
+  """
+  state: DeploymentStatusState!
+}
+
+"""
+Autogenerated return type of CreateDeploymentStatus
+"""
+type CreateDeploymentStatusPayload @preview(toggledBy: "flash-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new deployment status.
+  """
+  deploymentStatus: DeploymentStatus
+}
+
+"""
+Autogenerated input type of CreateEnterpriseOrganization
+"""
+input CreateEnterpriseOrganizationInput {
+  """
+  The logins for the administrators of the new organization.
+  """
+  adminLogins: [String!]!
+
+  """
+  The email used for sending billing receipts.
+  """
+  billingEmail: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise owning the new organization.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The login of the new organization.
+  """
+  login: String!
+
+  """
+  The profile name of the new organization.
+  """
+  profileName: String!
+}
+
+"""
+Autogenerated return type of CreateEnterpriseOrganization
+"""
+type CreateEnterpriseOrganizationPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise that owns the created organization.
+  """
+  enterprise: Enterprise
+
+  """
+  The organization that was created.
+  """
+  organization: Organization
+}
+
+"""
+Autogenerated input type of CreateIpAllowListEntry
+"""
+input CreateIpAllowListEntryInput {
+  """
+  An IP address or range of addresses in CIDR notation.
+  """
+  allowListValue: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Whether the IP allow list entry is active when an IP allow list is enabled.
+  """
+  isActive: Boolean!
+
+  """
+  An optional name for the IP allow list entry.
+  """
+  name: String
+
+  """
+  The ID of the owner for which to create the new IP allow list entry.
+  """
+  ownerId: ID!
+  @possibleTypes(
+    concreteTypes: ["Enterprise", "Organization"]
+    abstractType: "IpAllowListOwner"
+  )
+}
+
+"""
+Autogenerated return type of CreateIpAllowListEntry
+"""
+type CreateIpAllowListEntryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The IP allow list entry that was created.
+  """
+  ipAllowListEntry: IpAllowListEntry
+}
+
+"""
+Autogenerated input type of CreateIssue
+"""
+input CreateIssueInput {
+  """
+  The Node ID for the user assignee for this issue.
+  """
+  assigneeIds: [ID!] @possibleTypes(concreteTypes: ["User"])
+
+  """
+  The body for the issue description.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  An array of Node IDs of labels for this issue.
+  """
+  labelIds: [ID!] @possibleTypes(concreteTypes: ["Label"])
+
+  """
+  The Node ID of the milestone for this issue.
+  """
+  milestoneId: ID @possibleTypes(concreteTypes: ["Milestone"])
+
+  """
+  An array of Node IDs for projects associated with this issue.
+  """
+  projectIds: [ID!] @possibleTypes(concreteTypes: ["Project"])
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  The title for the issue.
+  """
+  title: String!
+}
+
+"""
+Autogenerated return type of CreateIssue
+"""
+type CreateIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new issue.
+  """
+  issue: Issue
+}
+
+"""
+Autogenerated input type of CreateLabel
+"""
+input CreateLabelInput @preview(toggledBy: "bane-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A 6 character hex code, without the leading #, identifying the color of the label.
+  """
+  color: String!
+
+  """
+  A brief description of the label, such as its purpose.
+  """
+  description: String
+
+  """
+  The name of the label.
+  """
+  name: String!
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of CreateLabel
+"""
+type CreateLabelPayload @preview(toggledBy: "bane-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new label.
+  """
+  label: Label
+}
+
+"""
+Autogenerated input type of CreateProject
+"""
+input CreateProjectInput {
+  """
+  The description of project.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of project.
+  """
+  name: String!
+
+  """
+  The owner ID to create the project under.
+  """
+  ownerId: ID!
+  @possibleTypes(
+    concreteTypes: ["Organization", "Repository", "User"]
+    abstractType: "ProjectOwner"
+  )
+
+  """
+  A list of repository IDs to create as linked repositories for the project
+  """
+  repositoryIds: [ID!] @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  The name of the GitHub-provided template.
+  """
+  template: ProjectTemplate
+}
+
+"""
+Autogenerated return type of CreateProject
+"""
+type CreateProjectPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new project.
+  """
+  project: Project
+}
+
+"""
+Autogenerated input type of CreatePullRequest
+"""
+input CreatePullRequestInput {
+  """
+  The name of the branch you want your changes pulled into. This should be an existing branch
+  on the current repository. You cannot update the base branch on a pull request to point
+  to another repository.
+  """
+  baseRefName: String!
+
+  """
+  The contents of the pull request.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Indicates whether this pull request should be a draft.
+  """
+  draft: Boolean = false
+
+  """
+  The name of the branch where your changes are implemented. For cross-repository pull requests
+  in the same network, namespace `head_ref_name` with a user like this: `username:branch`.
+  """
+  headRefName: String!
+
+  """
+  Indicates whether maintainers can modify the pull request.
+  """
+  maintainerCanModify: Boolean = true
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  The title of the pull request.
+  """
+  title: String!
+}
+
+"""
+Autogenerated return type of CreatePullRequest
+"""
+type CreatePullRequestPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new pull request.
+  """
+  pullRequest: PullRequest
+}
+
+"""
+Autogenerated input type of CreateRef
+"""
+input CreateRefInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The fully qualified name of the new Ref (ie: `refs/heads/my_new_branch`).
+  """
+  name: String!
+
+  """
+  The GitObjectID that the new Ref shall target. Must point to a commit.
+  """
+  oid: GitObjectID!
+
+  """
+  The Node ID of the Repository to create the Ref in.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of CreateRef
+"""
+type CreateRefPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The newly created ref.
+  """
+  ref: Ref
+}
+
+"""
+Autogenerated input type of CreateRepository
+"""
+input CreateRepositoryInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A short description of the new repository.
+  """
+  description: String
+
+  """
+  Indicates if the repository should have the issues feature enabled.
+  """
+  hasIssuesEnabled: Boolean = true
+
+  """
+  Indicates if the repository should have the wiki feature enabled.
+  """
+  hasWikiEnabled: Boolean = false
+
+  """
+  The URL for a web page about this repository.
+  """
+  homepageUrl: URI
+
+  """
+  The name of the new repository.
+  """
+  name: String!
+
+  """
+  The ID of the owner for the new repository.
+  """
+  ownerId: ID
+  @possibleTypes(
+    concreteTypes: ["Organization", "User"]
+    abstractType: "RepositoryOwner"
+  )
+
+  """
+  When an organization is specified as the owner, this ID identifies the team
+  that should be granted access to the new repository.
+  """
+  teamId: ID @possibleTypes(concreteTypes: ["Team"])
+
+  """
+  Whether this repository should be marked as a template such that anyone who
+  can access it can create new repositories with the same files and directory structure.
+  """
+  template: Boolean = false
+
+  """
+  Indicates the repository's visibility level.
+  """
+  visibility: RepositoryVisibility!
+}
+
+"""
+Autogenerated return type of CreateRepository
+"""
+type CreateRepositoryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new repository.
+  """
+  repository: Repository
+}
+
+"""
+Autogenerated input type of CreateTeamDiscussionComment
+"""
+input CreateTeamDiscussionCommentInput {
+  """
+  The content of the comment.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the discussion to which the comment belongs.
+  """
+  discussionId: ID! @possibleTypes(concreteTypes: ["TeamDiscussion"])
+}
+
+"""
+Autogenerated return type of CreateTeamDiscussionComment
+"""
+type CreateTeamDiscussionCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new comment.
+  """
+  teamDiscussionComment: TeamDiscussionComment
+}
+
+"""
+Autogenerated input type of CreateTeamDiscussion
+"""
+input CreateTeamDiscussionInput {
+  """
+  The content of the discussion.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  If true, restricts the visiblity of this discussion to team members and
+  organization admins. If false or not specified, allows any organization member
+  to view this discussion.
+  """
+  private: Boolean
+
+  """
+  The ID of the team to which the discussion belongs.
+  """
+  teamId: ID! @possibleTypes(concreteTypes: ["Team"])
+
+  """
+  The title of the discussion.
+  """
+  title: String!
+}
+
+"""
+Autogenerated return type of CreateTeamDiscussion
+"""
+type CreateTeamDiscussionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new discussion.
+  """
+  teamDiscussion: TeamDiscussion
+}
+
+"""
+Represents the contribution a user made by committing to a repository.
+"""
+type CreatedCommitContribution implements Contribution {
+  """
+  How many commits were made on this day to this repository by the user.
+  """
+  commitCount: Int!
+
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The repository the user made a commit in.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+The connection type for CreatedCommitContribution.
+"""
+type CreatedCommitContributionConnection {
+  """
+  A list of edges.
+  """
+  edges: [CreatedCommitContributionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CreatedCommitContribution]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of commits across days and repositories in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CreatedCommitContributionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CreatedCommitContribution
+}
+
+"""
+Represents the contribution a user made on GitHub by opening an issue.
+"""
+type CreatedIssueContribution implements Contribution {
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  The issue that was opened.
+  """
+  issue: Issue!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+The connection type for CreatedIssueContribution.
+"""
+type CreatedIssueContributionConnection {
+  """
+  A list of edges.
+  """
+  edges: [CreatedIssueContributionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CreatedIssueContribution]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CreatedIssueContributionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CreatedIssueContribution
+}
+
+"""
+Represents either a issue the viewer can access or a restricted contribution.
+"""
+union CreatedIssueOrRestrictedContribution =
+    CreatedIssueContribution
+  | RestrictedContribution
+
+"""
+Represents the contribution a user made on GitHub by opening a pull request.
+"""
+type CreatedPullRequestContribution implements Contribution {
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The pull request that was opened.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+The connection type for CreatedPullRequestContribution.
+"""
+type CreatedPullRequestContributionConnection {
+  """
+  A list of edges.
+  """
+  edges: [CreatedPullRequestContributionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CreatedPullRequestContribution]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CreatedPullRequestContributionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CreatedPullRequestContribution
+}
+
+"""
+Represents either a pull request the viewer can access or a restricted contribution.
+"""
+union CreatedPullRequestOrRestrictedContribution =
+    CreatedPullRequestContribution
+  | RestrictedContribution
+
+"""
+Represents the contribution a user made by leaving a review on a pull request.
+"""
+type CreatedPullRequestReviewContribution implements Contribution {
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The pull request the user reviewed.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The review the user left on the pull request.
+  """
+  pullRequestReview: PullRequestReview!
+
+  """
+  The repository containing the pull request that the user reviewed.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+The connection type for CreatedPullRequestReviewContribution.
+"""
+type CreatedPullRequestReviewContributionConnection {
+  """
+  A list of edges.
+  """
+  edges: [CreatedPullRequestReviewContributionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CreatedPullRequestReviewContribution]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CreatedPullRequestReviewContributionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CreatedPullRequestReviewContribution
+}
+
+"""
+Represents the contribution a user made on GitHub by creating a repository.
+"""
+type CreatedRepositoryContribution implements Contribution {
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The repository that was created.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+The connection type for CreatedRepositoryContribution.
+"""
+type CreatedRepositoryContributionConnection {
+  """
+  A list of edges.
+  """
+  edges: [CreatedRepositoryContributionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [CreatedRepositoryContribution]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type CreatedRepositoryContributionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: CreatedRepositoryContribution
+}
+
+"""
+Represents either a repository the viewer can access or a restricted contribution.
+"""
+union CreatedRepositoryOrRestrictedContribution =
+    CreatedRepositoryContribution
+  | RestrictedContribution
+
+"""
+Represents a mention made by one issue or pull request to another.
+"""
+type CrossReferencedEvent implements Node & UniformResourceLocatable {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Reference originated in a different repository.
+  """
+  isCrossRepository: Boolean!
+
+  """
+  Identifies when the reference was made.
+  """
+  referencedAt: DateTime!
+
+  """
+  The HTTP path for this pull request.
+  """
+  resourcePath: URI!
+
+  """
+  Issue or pull request that made the reference.
+  """
+  source: ReferencedSubject!
+
+  """
+  Issue or pull request to which the reference was made.
+  """
+  target: ReferencedSubject!
+
+  """
+  The HTTP URL for this pull request.
+  """
+  url: URI!
+
+  """
+  Checks if the target will be closed when the source is merged.
+  """
+  willCloseTarget: Boolean!
+}
+
+"""
+An ISO-8601 encoded date string.
+"""
+scalar Date
+
+"""
+An ISO-8601 encoded UTC date string.
+"""
+scalar DateTime
+
+"""
+Autogenerated input type of DeclineTopicSuggestion
+"""
+input DeclineTopicSuggestionInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of the suggested topic.
+  """
+  name: String!
+
+  """
+  The reason why the suggested topic is declined.
+  """
+  reason: TopicSuggestionDeclineReason!
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of DeclineTopicSuggestion
+"""
+type DeclineTopicSuggestionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The declined topic.
+  """
+  topic: Topic
+}
+
+"""
+The possible default permissions for repositories.
+"""
+enum DefaultRepositoryPermissionField {
+  """
+  Can read, write, and administrate repos by default
+  """
+  ADMIN
+
+  """
+  No access
+  """
+  NONE
+
+  """
+  Can read repos by default
+  """
+  READ
+
+  """
+  Can read and write repos by default
+  """
+  WRITE
+}
+
+"""
+Entities that can be deleted.
+"""
+interface Deletable {
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+}
+
+"""
+Autogenerated input type of DeleteBranchProtectionRule
+"""
+input DeleteBranchProtectionRuleInput {
+  """
+  The global relay id of the branch protection rule to be deleted.
+  """
+  branchProtectionRuleId: ID!
+  @possibleTypes(concreteTypes: ["BranchProtectionRule"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated return type of DeleteBranchProtectionRule
+"""
+type DeleteBranchProtectionRulePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of DeleteDeployment
+"""
+input DeleteDeploymentInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the deployment to be deleted.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["Deployment"])
+}
+
+"""
+Autogenerated return type of DeleteDeployment
+"""
+type DeleteDeploymentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of DeleteIpAllowListEntry
+"""
+input DeleteIpAllowListEntryInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the IP allow list entry to delete.
+  """
+  ipAllowListEntryId: ID! @possibleTypes(concreteTypes: ["IpAllowListEntry"])
+}
+
+"""
+Autogenerated return type of DeleteIpAllowListEntry
+"""
+type DeleteIpAllowListEntryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The IP allow list entry that was deleted.
+  """
+  ipAllowListEntry: IpAllowListEntry
+}
+
+"""
+Autogenerated input type of DeleteIssueComment
+"""
+input DeleteIssueCommentInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the comment to delete.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["IssueComment"])
+}
+
+"""
+Autogenerated return type of DeleteIssueComment
+"""
+type DeleteIssueCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of DeleteIssue
+"""
+input DeleteIssueInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the issue to delete.
+  """
+  issueId: ID! @possibleTypes(concreteTypes: ["Issue"])
+}
+
+"""
+Autogenerated return type of DeleteIssue
+"""
+type DeleteIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The repository the issue belonged to
+  """
+  repository: Repository
+}
+
+"""
+Autogenerated input type of DeleteLabel
+"""
+input DeleteLabelInput @preview(toggledBy: "bane-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the label to be deleted.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["Label"])
+}
+
+"""
+Autogenerated return type of DeleteLabel
+"""
+type DeleteLabelPayload @preview(toggledBy: "bane-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of DeletePackageVersion
+"""
+input DeletePackageVersionInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the package version to be deleted.
+  """
+  packageVersionId: ID! @possibleTypes(concreteTypes: ["PackageVersion"])
+}
+
+"""
+Autogenerated return type of DeletePackageVersion
+"""
+type DeletePackageVersionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Whether or not the operation succeeded.
+  """
+  success: Boolean
+}
+
+"""
+Autogenerated input type of DeleteProjectCard
+"""
+input DeleteProjectCardInput {
+  """
+  The id of the card to delete.
+  """
+  cardId: ID! @possibleTypes(concreteTypes: ["ProjectCard"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated return type of DeleteProjectCard
+"""
+type DeleteProjectCardPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The column the deleted card was in.
+  """
+  column: ProjectColumn
+
+  """
+  The deleted card ID.
+  """
+  deletedCardId: ID
+}
+
+"""
+Autogenerated input type of DeleteProjectColumn
+"""
+input DeleteProjectColumnInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The id of the column to delete.
+  """
+  columnId: ID! @possibleTypes(concreteTypes: ["ProjectColumn"])
+}
+
+"""
+Autogenerated return type of DeleteProjectColumn
+"""
+type DeleteProjectColumnPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The deleted column ID.
+  """
+  deletedColumnId: ID
+
+  """
+  The project the deleted column was in.
+  """
+  project: Project
+}
+
+"""
+Autogenerated input type of DeleteProject
+"""
+input DeleteProjectInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Project ID to update.
+  """
+  projectId: ID! @possibleTypes(concreteTypes: ["Project"])
+}
+
+"""
+Autogenerated return type of DeleteProject
+"""
+type DeleteProjectPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The repository or organization the project was removed from.
+  """
+  owner: ProjectOwner
+}
+
+"""
+Autogenerated input type of DeletePullRequestReviewComment
+"""
+input DeletePullRequestReviewCommentInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the comment to delete.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["PullRequestReviewComment"])
+}
+
+"""
+Autogenerated return type of DeletePullRequestReviewComment
+"""
+type DeletePullRequestReviewCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The pull request review the deleted comment belonged to.
+  """
+  pullRequestReview: PullRequestReview
+}
+
+"""
+Autogenerated input type of DeletePullRequestReview
+"""
+input DeletePullRequestReviewInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the pull request review to delete.
+  """
+  pullRequestReviewId: ID! @possibleTypes(concreteTypes: ["PullRequestReview"])
+}
+
+"""
+Autogenerated return type of DeletePullRequestReview
+"""
+type DeletePullRequestReviewPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The deleted pull request review.
+  """
+  pullRequestReview: PullRequestReview
+}
+
+"""
+Autogenerated input type of DeleteRef
+"""
+input DeleteRefInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the Ref to be deleted.
+  """
+  refId: ID! @possibleTypes(concreteTypes: ["Ref"])
+}
+
+"""
+Autogenerated return type of DeleteRef
+"""
+type DeleteRefPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of DeleteTeamDiscussionComment
+"""
+input DeleteTeamDiscussionCommentInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the comment to delete.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["TeamDiscussionComment"])
+}
+
+"""
+Autogenerated return type of DeleteTeamDiscussionComment
+"""
+type DeleteTeamDiscussionCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of DeleteTeamDiscussion
+"""
+input DeleteTeamDiscussionInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The discussion ID to delete.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["TeamDiscussion"])
+}
+
+"""
+Autogenerated return type of DeleteTeamDiscussion
+"""
+type DeleteTeamDiscussionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Represents a 'demilestoned' event on a given issue or pull request.
+"""
+type DemilestonedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the milestone title associated with the 'demilestoned' event.
+  """
+  milestoneTitle: String!
+
+  """
+  Object referenced by event.
+  """
+  subject: MilestoneItem!
+}
+
+"""
+A dependency manifest entry
+"""
+type DependencyGraphDependency @preview(toggledBy: "hawkgirl-preview") {
+  """
+  Does the dependency itself have dependencies?
+  """
+  hasDependencies: Boolean!
+
+  """
+  The dependency package manager
+  """
+  packageManager: String
+
+  """
+  The required package name
+  """
+  packageName: String!
+
+  """
+  The repository containing the package
+  """
+  repository: Repository
+
+  """
+  The dependency version requirements
+  """
+  requirements: String!
+}
+
+"""
+The connection type for DependencyGraphDependency.
+"""
+type DependencyGraphDependencyConnection
+@preview(toggledBy: "hawkgirl-preview") {
+  """
+  A list of edges.
+  """
+  edges: [DependencyGraphDependencyEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [DependencyGraphDependency]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type DependencyGraphDependencyEdge @preview(toggledBy: "hawkgirl-preview") {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: DependencyGraphDependency
+}
+
+"""
+Dependency manifest for a repository
+"""
+type DependencyGraphManifest implements Node
+@preview(toggledBy: "hawkgirl-preview") {
+  """
+  Path to view the manifest file blob
+  """
+  blobPath: String!
+
+  """
+  A list of manifest dependencies
+  """
+  dependencies(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): DependencyGraphDependencyConnection
+
+  """
+  The number of dependencies listed in the manifest
+  """
+  dependenciesCount: Int
+
+  """
+  Is the manifest too big to parse?
+  """
+  exceedsMaxSize: Boolean!
+
+  """
+  Fully qualified manifest filename
+  """
+  filename: String!
+  id: ID!
+
+  """
+  Were we able to parse the manifest?
+  """
+  parseable: Boolean!
+
+  """
+  The repository containing the manifest
+  """
+  repository: Repository!
+}
+
+"""
+The connection type for DependencyGraphManifest.
+"""
+type DependencyGraphManifestConnection @preview(toggledBy: "hawkgirl-preview") {
+  """
+  A list of edges.
+  """
+  edges: [DependencyGraphManifestEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [DependencyGraphManifest]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type DependencyGraphManifestEdge @preview(toggledBy: "hawkgirl-preview") {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: DependencyGraphManifest
+}
+
+"""
+A repository deploy key.
+"""
+type DeployKey implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  The deploy key.
+  """
+  key: String!
+
+  """
+  Whether or not the deploy key is read only.
+  """
+  readOnly: Boolean!
+
+  """
+  The deploy key title.
+  """
+  title: String!
+
+  """
+  Whether or not the deploy key has been verified.
+  """
+  verified: Boolean!
+}
+
+"""
+The connection type for DeployKey.
+"""
+type DeployKeyConnection {
+  """
+  A list of edges.
+  """
+  edges: [DeployKeyEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [DeployKey]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type DeployKeyEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: DeployKey
+}
+
+"""
+Represents a 'deployed' event on a given pull request.
+"""
+type DeployedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The deployment associated with the 'deployed' event.
+  """
+  deployment: Deployment!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The ref associated with the 'deployed' event.
+  """
+  ref: Ref
+}
+
+"""
+Represents triggered deployment instance.
+"""
+type Deployment implements Node {
+  """
+  Identifies the commit sha of the deployment.
+  """
+  commit: Commit
+
+  """
+  Identifies the oid of the deployment commit, even if the commit has been deleted.
+  """
+  commitOid: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the actor who triggered the deployment.
+  """
+  creator: Actor!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The deployment description.
+  """
+  description: String
+
+  """
+  The latest environment to which this deployment was made.
+  """
+  environment: String
+  id: ID!
+
+  """
+  The latest environment to which this deployment was made.
+  """
+  latestEnvironment: String
+
+  """
+  The latest status of this deployment.
+  """
+  latestStatus: DeploymentStatus
+
+  """
+  The original environment to which this deployment was made.
+  """
+  originalEnvironment: String
+
+  """
+  Extra information that a deployment system might need.
+  """
+  payload: String
+
+  """
+  Identifies the Ref of the deployment, if the deployment was created by ref.
+  """
+  ref: Ref
+
+  """
+  Identifies the repository associated with the deployment.
+  """
+  repository: Repository!
+
+  """
+  The current state of the deployment.
+  """
+  state: DeploymentState
+
+  """
+  A list of statuses associated with the deployment.
+  """
+  statuses(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): DeploymentStatusConnection
+
+  """
+  The deployment task.
+  """
+  task: String
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+The connection type for Deployment.
+"""
+type DeploymentConnection {
+  """
+  A list of edges.
+  """
+  edges: [DeploymentEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Deployment]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type DeploymentEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Deployment
+}
+
+"""
+Represents a 'deployment_environment_changed' event on a given pull request.
+"""
+type DeploymentEnvironmentChangedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The deployment status that updated the deployment environment.
+  """
+  deploymentStatus: DeploymentStatus!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+}
+
+"""
+Ordering options for deployment connections
+"""
+input DeploymentOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order deployments by.
+  """
+  field: DeploymentOrderField!
+}
+
+"""
+Properties by which deployment connections can be ordered.
+"""
+enum DeploymentOrderField {
+  """
+  Order collection by creation time
+  """
+  CREATED_AT
+}
+
+"""
+The possible states in which a deployment can be.
+"""
+enum DeploymentState {
+  """
+  The pending deployment was not updated after 30 minutes.
+  """
+  ABANDONED
+
+  """
+  The deployment is currently active.
+  """
+  ACTIVE
+
+  """
+  An inactive transient deployment.
+  """
+  DESTROYED
+
+  """
+  The deployment experienced an error.
+  """
+  ERROR
+
+  """
+  The deployment has failed.
+  """
+  FAILURE
+
+  """
+  The deployment is inactive.
+  """
+  INACTIVE
+
+  """
+  The deployment is in progress.
+  """
+  IN_PROGRESS
+
+  """
+  The deployment is pending.
+  """
+  PENDING
+
+  """
+  The deployment has queued
+  """
+  QUEUED
+}
+
+"""
+Describes the status of a given deployment attempt.
+"""
+type DeploymentStatus implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the actor who triggered the deployment.
+  """
+  creator: Actor!
+
+  """
+  Identifies the deployment associated with status.
+  """
+  deployment: Deployment!
+
+  """
+  Identifies the description of the deployment.
+  """
+  description: String
+
+  """
+  Identifies the environment of the deployment at the time of this deployment status
+  """
+  environment: String @preview(toggledBy: "flash-preview")
+
+  """
+  Identifies the environment URL of the deployment.
+  """
+  environmentUrl: URI
+  id: ID!
+
+  """
+  Identifies the log URL of the deployment.
+  """
+  logUrl: URI
+
+  """
+  Identifies the current state of the deployment.
+  """
+  state: DeploymentStatusState!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+The connection type for DeploymentStatus.
+"""
+type DeploymentStatusConnection {
+  """
+  A list of edges.
+  """
+  edges: [DeploymentStatusEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [DeploymentStatus]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type DeploymentStatusEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: DeploymentStatus
+}
+
+"""
+The possible states for a deployment status.
+"""
+enum DeploymentStatusState {
+  """
+  The deployment experienced an error.
+  """
+  ERROR
+
+  """
+  The deployment has failed.
+  """
+  FAILURE
+
+  """
+  The deployment is inactive.
+  """
+  INACTIVE
+
+  """
+  The deployment is in progress.
+  """
+  IN_PROGRESS
+
+  """
+  The deployment is pending.
+  """
+  PENDING
+
+  """
+  The deployment is queued
+  """
+  QUEUED
+
+  """
+  The deployment was successful.
+  """
+  SUCCESS
+}
+
+"""
+The possible sides of a diff.
+"""
+enum DiffSide {
+  """
+  The left side of the diff.
+  """
+  LEFT
+
+  """
+  The right side of the diff.
+  """
+  RIGHT
+}
+
+"""
+Represents a 'disconnected' event on a given issue or pull request.
+"""
+type DisconnectedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Reference originated in a different repository.
+  """
+  isCrossRepository: Boolean!
+
+  """
+  Issue or pull request from which the issue was disconnected.
+  """
+  source: ReferencedSubject!
+
+  """
+  Issue or pull request which was disconnected.
+  """
+  subject: ReferencedSubject!
+}
+
+"""
+Autogenerated input type of DismissPullRequestReview
+"""
+input DismissPullRequestReviewInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The contents of the pull request review dismissal message.
+  """
+  message: String!
+
+  """
+  The Node ID of the pull request review to modify.
+  """
+  pullRequestReviewId: ID! @possibleTypes(concreteTypes: ["PullRequestReview"])
+}
+
+"""
+Autogenerated return type of DismissPullRequestReview
+"""
+type DismissPullRequestReviewPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The dismissed pull request review.
+  """
+  pullRequestReview: PullRequestReview
+}
+
+"""
+Specifies a review comment to be left with a Pull Request Review.
+"""
+input DraftPullRequestReviewComment {
+  """
+  Body of the comment to leave.
+  """
+  body: String!
+
+  """
+  Path to the file being commented on.
+  """
+  path: String!
+
+  """
+  Position in the file to leave a comment on.
+  """
+  position: Int!
+}
+
+"""
+Specifies a review comment thread to be left with a Pull Request Review.
+"""
+input DraftPullRequestReviewThread {
+  """
+  Body of the comment to leave.
+  """
+  body: String!
+
+  """
+  The line of the blob to which the thread refers. The end of the line range for multi-line comments.
+  """
+  line: Int!
+
+  """
+  Path to the file being commented on.
+  """
+  path: String!
+
+  """
+  The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range.
+  """
+  side: DiffSide = RIGHT
+
+  """
+  The first line of the range to which the comment refers.
+  """
+  startLine: Int
+
+  """
+  The side of the diff on which the start line resides.
+  """
+  startSide: DiffSide = RIGHT
+}
+
+"""
+An account to manage multiple organizations with consolidated policy and billing.
+"""
+type Enterprise implements Node {
+  """
+  A URL pointing to the enterprise's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  Enterprise billing information visible to enterprise billing managers.
+  """
+  billingInfo: EnterpriseBillingInfo
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The description of the enterprise.
+  """
+  description: String
+
+  """
+  The description of the enterprise as HTML.
+  """
+  descriptionHTML: HTML!
+  id: ID!
+
+  """
+  The location of the enterprise.
+  """
+  location: String
+
+  """
+  A list of users who are members of this enterprise.
+  """
+  members(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Only return members within the selected GitHub Enterprise deployment
+    """
+    deployment: EnterpriseUserDeployment
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for members returned from the connection.
+    """
+    orderBy: EnterpriseMemberOrder = { field: LOGIN, direction: ASC }
+
+    """
+    Only return members within the organizations with these logins
+    """
+    organizationLogins: [String!]
+
+    """
+    The search string to look for.
+    """
+    query: String
+
+    """
+    The role of the user in the enterprise organization or server.
+    """
+    role: EnterpriseUserAccountMembershipRole
+  ): EnterpriseMemberConnection!
+
+  """
+  The name of the enterprise.
+  """
+  name: String!
+
+  """
+  A list of organizations that belong to this enterprise.
+  """
+  organizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations returned from the connection.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The search string to look for.
+    """
+    query: String
+  ): OrganizationConnection!
+
+  """
+  Enterprise information only visible to enterprise owners.
+  """
+  ownerInfo: EnterpriseOwnerInfo
+
+  """
+  The HTTP path for this enterprise.
+  """
+  resourcePath: URI!
+
+  """
+  The URL-friendly identifier for the enterprise.
+  """
+  slug: String!
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  url: URI!
+
+  """
+  A list of user accounts on this enterprise.
+  """
+  userAccounts(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): EnterpriseUserAccountConnection!
+
+  """
+  Is the current viewer an admin of this enterprise?
+  """
+  viewerIsAdmin: Boolean!
+
+  """
+  The URL of the enterprise website.
+  """
+  websiteUrl: URI
+}
+
+"""
+The connection type for User.
+"""
+type EnterpriseAdministratorConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseAdministratorEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+A User who is an administrator of an enterprise.
+"""
+type EnterpriseAdministratorEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: User
+
+  """
+  The role of the administrator.
+  """
+  role: EnterpriseAdministratorRole!
+}
+
+"""
+An invitation for a user to become an owner or billing manager of an enterprise.
+"""
+type EnterpriseAdministratorInvitation implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The email of the person who was invited to the enterprise.
+  """
+  email: String
+
+  """
+  The enterprise the invitation is for.
+  """
+  enterprise: Enterprise!
+  id: ID!
+
+  """
+  The user who was invited to the enterprise.
+  """
+  invitee: User
+
+  """
+  The user who created the invitation.
+  """
+  inviter: User
+
+  """
+  The invitee's pending role in the enterprise (owner or billing_manager).
+  """
+  role: EnterpriseAdministratorRole!
+}
+
+"""
+The connection type for EnterpriseAdministratorInvitation.
+"""
+type EnterpriseAdministratorInvitationConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseAdministratorInvitationEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseAdministratorInvitation]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type EnterpriseAdministratorInvitationEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseAdministratorInvitation
+}
+
+"""
+Ordering options for enterprise administrator invitation connections
+"""
+input EnterpriseAdministratorInvitationOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order enterprise administrator invitations by.
+  """
+  field: EnterpriseAdministratorInvitationOrderField!
+}
+
+"""
+Properties by which enterprise administrator invitation connections can be ordered.
+"""
+enum EnterpriseAdministratorInvitationOrderField {
+  """
+  Order enterprise administrator member invitations by creation time
+  """
+  CREATED_AT
+}
+
+"""
+The possible administrator roles in an enterprise account.
+"""
+enum EnterpriseAdministratorRole {
+  """
+  Represents a billing manager of the enterprise account.
+  """
+  BILLING_MANAGER
+
+  """
+  Represents an owner of the enterprise account.
+  """
+  OWNER
+}
+
+"""
+Metadata for an audit entry containing enterprise account information.
+"""
+interface EnterpriseAuditEntryData {
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+}
+
+"""
+Enterprise billing information visible to enterprise billing managers and owners.
+"""
+type EnterpriseBillingInfo {
+  """
+  The number of licenseable users/emails across the enterprise.
+  """
+  allLicensableUsersCount: Int!
+
+  """
+  The number of data packs used by all organizations owned by the enterprise.
+  """
+  assetPacks: Int!
+
+  """
+  The number of available seats across all owned organizations based on the unique number of billable users.
+  """
+  availableSeats: Int!
+  @deprecated(
+    reason: "`availableSeats` will be replaced with `totalAvailableLicenses` to provide more clarity on the value being returned Use EnterpriseBillingInfo.totalAvailableLicenses instead. Removal on 2020-01-01 UTC."
+  )
+
+  """
+  The bandwidth quota in GB for all organizations owned by the enterprise.
+  """
+  bandwidthQuota: Float!
+
+  """
+  The bandwidth usage in GB for all organizations owned by the enterprise.
+  """
+  bandwidthUsage: Float!
+
+  """
+  The bandwidth usage as a percentage of the bandwidth quota.
+  """
+  bandwidthUsagePercentage: Int!
+
+  """
+  The total seats across all organizations owned by the enterprise.
+  """
+  seats: Int!
+  @deprecated(
+    reason: "`seats` will be replaced with `totalLicenses` to provide more clarity on the value being returned Use EnterpriseBillingInfo.totalLicenses instead. Removal on 2020-01-01 UTC."
+  )
+
+  """
+  The storage quota in GB for all organizations owned by the enterprise.
+  """
+  storageQuota: Float!
+
+  """
+  The storage usage in GB for all organizations owned by the enterprise.
+  """
+  storageUsage: Float!
+
+  """
+  The storage usage as a percentage of the storage quota.
+  """
+  storageUsagePercentage: Int!
+
+  """
+  The number of available licenses across all owned organizations based on the unique number of billable users.
+  """
+  totalAvailableLicenses: Int!
+
+  """
+  The total number of licenses allocated.
+  """
+  totalLicenses: Int!
+}
+
+"""
+The possible values for the enterprise default repository permission setting.
+"""
+enum EnterpriseDefaultRepositoryPermissionSettingValue {
+  """
+  Organization members will be able to clone, pull, push, and add new collaborators to all organization repositories.
+  """
+  ADMIN
+
+  """
+  Organization members will only be able to clone and pull public repositories.
+  """
+  NONE
+
+  """
+  Organizations in the enterprise choose default repository permissions for their members.
+  """
+  NO_POLICY
+
+  """
+  Organization members will be able to clone and pull all organization repositories.
+  """
+  READ
+
+  """
+  Organization members will be able to clone, pull, and push all organization repositories.
+  """
+  WRITE
+}
+
+"""
+The possible values for an enabled/disabled enterprise setting.
+"""
+enum EnterpriseEnabledDisabledSettingValue {
+  """
+  The setting is disabled for organizations in the enterprise.
+  """
+  DISABLED
+
+  """
+  The setting is enabled for organizations in the enterprise.
+  """
+  ENABLED
+
+  """
+  There is no policy set for organizations in the enterprise.
+  """
+  NO_POLICY
+}
+
+"""
+The possible values for an enabled/no policy enterprise setting.
+"""
+enum EnterpriseEnabledSettingValue {
+  """
+  The setting is enabled for organizations in the enterprise.
+  """
+  ENABLED
+
+  """
+  There is no policy set for organizations in the enterprise.
+  """
+  NO_POLICY
+}
+
+"""
+An identity provider configured to provision identities for an enterprise.
+"""
+type EnterpriseIdentityProvider implements Node {
+  """
+  The digest algorithm used to sign SAML requests for the identity provider.
+  """
+  digestMethod: SamlDigestAlgorithm
+
+  """
+  The enterprise this identity provider belongs to.
+  """
+  enterprise: Enterprise
+
+  """
+  ExternalIdentities provisioned by this identity provider.
+  """
+  externalIdentities(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ExternalIdentityConnection!
+  id: ID!
+
+  """
+  The x509 certificate used by the identity provider to sign assertions and responses.
+  """
+  idpCertificate: X509Certificate
+
+  """
+  The Issuer Entity ID for the SAML identity provider.
+  """
+  issuer: String
+
+  """
+  Recovery codes that can be used by admins to access the enterprise if the identity provider is unavailable.
+  """
+  recoveryCodes: [String!]
+
+  """
+  The signature algorithm used to sign SAML requests for the identity provider.
+  """
+  signatureMethod: SamlSignatureAlgorithm
+
+  """
+  The URL endpoint for the identity provider's SAML SSO.
+  """
+  ssoUrl: URI
+}
+
+"""
+An object that is a member of an enterprise.
+"""
+union EnterpriseMember = EnterpriseUserAccount | User
+
+"""
+The connection type for EnterpriseMember.
+"""
+type EnterpriseMemberConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseMemberEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseMember]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+A User who is a member of an enterprise through one or more organizations.
+"""
+type EnterpriseMemberEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  Whether the user does not have a license for the enterprise.
+  """
+  isUnlicensed: Boolean!
+  @deprecated(
+    reason: "All members consume a license Removal on 2021-01-01 UTC."
+  )
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseMember
+}
+
+"""
+Ordering options for enterprise member connections.
+"""
+input EnterpriseMemberOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order enterprise members by.
+  """
+  field: EnterpriseMemberOrderField!
+}
+
+"""
+Properties by which enterprise member connections can be ordered.
+"""
+enum EnterpriseMemberOrderField {
+  """
+  Order enterprise members by creation time
+  """
+  CREATED_AT
+
+  """
+  Order enterprise members by login
+  """
+  LOGIN
+}
+
+"""
+The possible values for the enterprise members can create repositories setting.
+"""
+enum EnterpriseMembersCanCreateRepositoriesSettingValue {
+  """
+  Members will be able to create public and private repositories.
+  """
+  ALL
+
+  """
+  Members will not be able to create public or private repositories.
+  """
+  DISABLED
+
+  """
+  Organization administrators choose whether to allow members to create repositories.
+  """
+  NO_POLICY
+
+  """
+  Members will be able to create only private repositories.
+  """
+  PRIVATE
+
+  """
+  Members will be able to create only public repositories.
+  """
+  PUBLIC
+}
+
+"""
+The possible values for the members can make purchases setting.
+"""
+enum EnterpriseMembersCanMakePurchasesSettingValue {
+  """
+  The setting is disabled for organizations in the enterprise.
+  """
+  DISABLED
+
+  """
+  The setting is enabled for organizations in the enterprise.
+  """
+  ENABLED
+}
+
+"""
+The connection type for Organization.
+"""
+type EnterpriseOrganizationMembershipConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseOrganizationMembershipEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Organization]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An enterprise organization that a user is a member of.
+"""
+type EnterpriseOrganizationMembershipEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Organization
+
+  """
+  The role of the user in the enterprise membership.
+  """
+  role: EnterpriseUserAccountMembershipRole!
+}
+
+"""
+The connection type for User.
+"""
+type EnterpriseOutsideCollaboratorConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseOutsideCollaboratorEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+A User who is an outside collaborator of an enterprise through one or more organizations.
+"""
+type EnterpriseOutsideCollaboratorEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  Whether the outside collaborator does not have a license for the enterprise.
+  """
+  isUnlicensed: Boolean!
+  @deprecated(
+    reason: "All outside collaborators consume a license Removal on 2021-01-01 UTC."
+  )
+
+  """
+  The item at the end of the edge.
+  """
+  node: User
+
+  """
+  The enterprise organization repositories this user is a member of.
+  """
+  repositories(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories.
+    """
+    orderBy: RepositoryOrder = { field: NAME, direction: ASC }
+  ): EnterpriseRepositoryInfoConnection!
+}
+
+"""
+Enterprise information only visible to enterprise owners.
+"""
+type EnterpriseOwnerInfo {
+  """
+  A list of enterprise organizations configured with the provided action execution capabilities setting value.
+  """
+  actionExecutionCapabilitySettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+  ): OrganizationConnection!
+
+  """
+  A list of all of the administrators for this enterprise.
+  """
+  admins(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for administrators returned from the connection.
+    """
+    orderBy: EnterpriseMemberOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The search string to look for.
+    """
+    query: String
+
+    """
+    The role to filter by.
+    """
+    role: EnterpriseAdministratorRole
+  ): EnterpriseAdministratorConnection!
+
+  """
+  A list of users in the enterprise who currently have two-factor authentication disabled.
+  """
+  affiliatedUsersWithTwoFactorDisabled(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+
+  """
+  Whether or not affiliated users with two-factor authentication disabled exist in the enterprise.
+  """
+  affiliatedUsersWithTwoFactorDisabledExist: Boolean!
+
+  """
+  The setting value for whether private repository forking is enabled for repositories in organizations in this enterprise.
+  """
+  allowPrivateRepositoryForkingSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided private repository forking setting value.
+  """
+  allowPrivateRepositoryForkingSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The setting value for base repository permissions for organizations in this enterprise.
+  """
+  defaultRepositoryPermissionSetting: EnterpriseDefaultRepositoryPermissionSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided default repository permission.
+  """
+  defaultRepositoryPermissionSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The permission to find organizations for.
+    """
+    value: DefaultRepositoryPermissionField!
+  ): OrganizationConnection!
+
+  """
+  Enterprise Server installations owned by the enterprise.
+  """
+  enterpriseServerInstallations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Whether or not to only return installations discovered via GitHub Connect.
+    """
+    connectedOnly: Boolean = false
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for Enterprise Server installations returned.
+    """
+    orderBy: EnterpriseServerInstallationOrder = {
+      field: HOST_NAME
+      direction: ASC
+    }
+  ): EnterpriseServerInstallationConnection!
+
+  """
+  The setting value for whether the enterprise has an IP allow list enabled.
+  """
+  ipAllowListEnabledSetting: IpAllowListEnabledSettingValue!
+
+  """
+  The IP addresses that are allowed to access resources owned by the enterprise.
+  """
+  ipAllowListEntries(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for IP allow list entries returned.
+    """
+    orderBy: IpAllowListEntryOrder = { field: ALLOW_LIST_VALUE, direction: ASC }
+  ): IpAllowListEntryConnection!
+
+  """
+  Whether or not the default repository permission is currently being updated.
+  """
+  isUpdatingDefaultRepositoryPermission: Boolean!
+
+  """
+  Whether the two-factor authentication requirement is currently being enforced.
+  """
+  isUpdatingTwoFactorRequirement: Boolean!
+
+  """
+  The setting value for whether organization members with admin permissions on a
+  repository can change repository visibility.
+  """
+  membersCanChangeRepositoryVisibilitySetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided can change repository visibility setting value.
+  """
+  membersCanChangeRepositoryVisibilitySettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether members of organizations in the enterprise can create internal repositories.
+  """
+  membersCanCreateInternalRepositoriesSetting: Boolean
+
+  """
+  The setting value for whether members of organizations in the enterprise can create private repositories.
+  """
+  membersCanCreatePrivateRepositoriesSetting: Boolean
+
+  """
+  The setting value for whether members of organizations in the enterprise can create public repositories.
+  """
+  membersCanCreatePublicRepositoriesSetting: Boolean
+
+  """
+  The setting value for whether members of organizations in the enterprise can create repositories.
+  """
+  membersCanCreateRepositoriesSetting: EnterpriseMembersCanCreateRepositoriesSettingValue
+
+  """
+  A list of enterprise organizations configured with the provided repository creation setting value.
+  """
+  membersCanCreateRepositoriesSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting to find organizations for.
+    """
+    value: OrganizationMembersCanCreateRepositoriesSettingValue!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether members with admin permissions for repositories can delete issues.
+  """
+  membersCanDeleteIssuesSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided members can delete issues setting value.
+  """
+  membersCanDeleteIssuesSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether members with admin permissions for repositories can delete or transfer repositories.
+  """
+  membersCanDeleteRepositoriesSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided members can delete repositories setting value.
+  """
+  membersCanDeleteRepositoriesSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether members of organizations in the enterprise can invite outside collaborators.
+  """
+  membersCanInviteCollaboratorsSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided members can invite collaborators setting value.
+  """
+  membersCanInviteCollaboratorsSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  Indicates whether members of this enterprise's organizations can purchase additional services for those organizations.
+  """
+  membersCanMakePurchasesSetting: EnterpriseMembersCanMakePurchasesSettingValue!
+
+  """
+  The setting value for whether members with admin permissions for repositories can update protected branches.
+  """
+  membersCanUpdateProtectedBranchesSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided members can update protected branches setting value.
+  """
+  membersCanUpdateProtectedBranchesSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether members can view dependency insights.
+  """
+  membersCanViewDependencyInsightsSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided members can view dependency insights setting value.
+  """
+  membersCanViewDependencyInsightsSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether organization projects are enabled for organizations in this enterprise.
+  """
+  organizationProjectsSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided organization projects setting value.
+  """
+  organizationProjectsSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  A list of outside collaborators across the repositories in the enterprise.
+  """
+  outsideCollaborators(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    The login of one specific outside collaborator.
+    """
+    login: String
+
+    """
+    Ordering options for outside collaborators returned from the connection.
+    """
+    orderBy: EnterpriseMemberOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The search string to look for.
+    """
+    query: String
+
+    """
+    Only return outside collaborators on repositories with this visibility.
+    """
+    visibility: RepositoryVisibility
+  ): EnterpriseOutsideCollaboratorConnection!
+
+  """
+  A list of pending administrator invitations for the enterprise.
+  """
+  pendingAdminInvitations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pending enterprise administrator invitations returned from the connection.
+    """
+    orderBy: EnterpriseAdministratorInvitationOrder = {
+      field: CREATED_AT
+      direction: DESC
+    }
+
+    """
+    The search string to look for.
+    """
+    query: String
+
+    """
+    The role to filter by.
+    """
+    role: EnterpriseAdministratorRole
+  ): EnterpriseAdministratorInvitationConnection!
+
+  """
+  A list of pending collaborator invitations across the repositories in the enterprise.
+  """
+  pendingCollaboratorInvitations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pending repository collaborator invitations returned from the connection.
+    """
+    orderBy: RepositoryInvitationOrder = { field: CREATED_AT, direction: DESC }
+
+    """
+    The search string to look for.
+    """
+    query: String
+  ): RepositoryInvitationConnection!
+
+  """
+  A list of pending collaborators across the repositories in the enterprise.
+  """
+  pendingCollaborators(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pending repository collaborator invitations returned from the connection.
+    """
+    orderBy: RepositoryInvitationOrder = { field: CREATED_AT, direction: DESC }
+
+    """
+    The search string to look for.
+    """
+    query: String
+  ): EnterprisePendingCollaboratorConnection!
+  @deprecated(
+    reason: "Repository invitations can now be associated with an email, not only an invitee. Use the `pendingCollaboratorInvitations` field instead. Removal on 2020-10-01 UTC."
+  )
+
+  """
+  A list of pending member invitations for organizations in the enterprise.
+  """
+  pendingMemberInvitations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    The search string to look for.
+    """
+    query: String
+  ): EnterprisePendingMemberInvitationConnection!
+
+  """
+  The setting value for whether repository projects are enabled in this enterprise.
+  """
+  repositoryProjectsSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided repository projects setting value.
+  """
+  repositoryProjectsSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The SAML Identity Provider for the enterprise.
+  """
+  samlIdentityProvider: EnterpriseIdentityProvider
+
+  """
+  A list of enterprise organizations configured with the SAML single sign-on setting value.
+  """
+  samlIdentityProviderSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: IdentityProviderConfigurationState!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether team discussions are enabled for organizations in this enterprise.
+  """
+  teamDiscussionsSetting: EnterpriseEnabledDisabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the provided team discussions setting value.
+  """
+  teamDiscussionsSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+
+  """
+  The setting value for whether the enterprise requires two-factor authentication for its organizations and users.
+  """
+  twoFactorRequiredSetting: EnterpriseEnabledSettingValue!
+
+  """
+  A list of enterprise organizations configured with the two-factor authentication setting value.
+  """
+  twoFactorRequiredSettingOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations with this setting.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The setting value to find organizations for.
+    """
+    value: Boolean!
+  ): OrganizationConnection!
+}
+
+"""
+The connection type for User.
+"""
+type EnterprisePendingCollaboratorConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterprisePendingCollaboratorEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+A user with an invitation to be a collaborator on a repository owned by an organization in an enterprise.
+"""
+type EnterprisePendingCollaboratorEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  Whether the invited collaborator does not have a license for the enterprise.
+  """
+  isUnlicensed: Boolean!
+  @deprecated(
+    reason: "All pending collaborators consume a license Removal on 2021-01-01 UTC."
+  )
+
+  """
+  The item at the end of the edge.
+  """
+  node: User
+
+  """
+  The enterprise organization repositories this user is a member of.
+  """
+  repositories(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories.
+    """
+    orderBy: RepositoryOrder = { field: NAME, direction: ASC }
+  ): EnterpriseRepositoryInfoConnection!
+}
+
+"""
+The connection type for OrganizationInvitation.
+"""
+type EnterprisePendingMemberInvitationConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterprisePendingMemberInvitationEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [OrganizationInvitation]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+
+  """
+  Identifies the total count of unique users in the connection.
+  """
+  totalUniqueUserCount: Int!
+}
+
+"""
+An invitation to be a member in an enterprise organization.
+"""
+type EnterprisePendingMemberInvitationEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  Whether the invitation has a license for the enterprise.
+  """
+  isUnlicensed: Boolean!
+  @deprecated(
+    reason: "All pending members consume a license Removal on 2020-07-01 UTC."
+  )
+
+  """
+  The item at the end of the edge.
+  """
+  node: OrganizationInvitation
+}
+
+"""
+A subset of repository information queryable from an enterprise.
+"""
+type EnterpriseRepositoryInfo implements Node {
+  id: ID!
+
+  """
+  Identifies if the repository is private.
+  """
+  isPrivate: Boolean!
+
+  """
+  The repository's name.
+  """
+  name: String!
+
+  """
+  The repository's name with owner.
+  """
+  nameWithOwner: String!
+}
+
+"""
+The connection type for EnterpriseRepositoryInfo.
+"""
+type EnterpriseRepositoryInfoConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseRepositoryInfoEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseRepositoryInfo]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type EnterpriseRepositoryInfoEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseRepositoryInfo
+}
+
+"""
+An Enterprise Server installation.
+"""
+type EnterpriseServerInstallation implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The customer name to which the Enterprise Server installation belongs.
+  """
+  customerName: String!
+
+  """
+  The host name of the Enterprise Server installation.
+  """
+  hostName: String!
+  id: ID!
+
+  """
+  Whether or not the installation is connected to an Enterprise Server installation via GitHub Connect.
+  """
+  isConnected: Boolean!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  User accounts on this Enterprise Server installation.
+  """
+  userAccounts(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for Enterprise Server user accounts returned from the connection.
+    """
+    orderBy: EnterpriseServerUserAccountOrder = { field: LOGIN, direction: ASC }
+  ): EnterpriseServerUserAccountConnection!
+
+  """
+  User accounts uploads for the Enterprise Server installation.
+  """
+  userAccountsUploads(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for Enterprise Server user accounts uploads returned from the connection.
+    """
+    orderBy: EnterpriseServerUserAccountsUploadOrder = {
+      field: CREATED_AT
+      direction: DESC
+    }
+  ): EnterpriseServerUserAccountsUploadConnection!
+}
+
+"""
+The connection type for EnterpriseServerInstallation.
+"""
+type EnterpriseServerInstallationConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseServerInstallationEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseServerInstallation]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type EnterpriseServerInstallationEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseServerInstallation
+}
+
+"""
+Ordering options for Enterprise Server installation connections.
+"""
+input EnterpriseServerInstallationOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order Enterprise Server installations by.
+  """
+  field: EnterpriseServerInstallationOrderField!
+}
+
+"""
+Properties by which Enterprise Server installation connections can be ordered.
+"""
+enum EnterpriseServerInstallationOrderField {
+  """
+  Order Enterprise Server installations by creation time
+  """
+  CREATED_AT
+
+  """
+  Order Enterprise Server installations by customer name
+  """
+  CUSTOMER_NAME
+
+  """
+  Order Enterprise Server installations by host name
+  """
+  HOST_NAME
+}
+
+"""
+A user account on an Enterprise Server installation.
+"""
+type EnterpriseServerUserAccount implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  User emails belonging to this user account.
+  """
+  emails(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for Enterprise Server user account emails returned from the connection.
+    """
+    orderBy: EnterpriseServerUserAccountEmailOrder = {
+      field: EMAIL
+      direction: ASC
+    }
+  ): EnterpriseServerUserAccountEmailConnection!
+
+  """
+  The Enterprise Server installation on which this user account exists.
+  """
+  enterpriseServerInstallation: EnterpriseServerInstallation!
+  id: ID!
+
+  """
+  Whether the user account is a site administrator on the Enterprise Server installation.
+  """
+  isSiteAdmin: Boolean!
+
+  """
+  The login of the user account on the Enterprise Server installation.
+  """
+  login: String!
+
+  """
+  The profile name of the user account on the Enterprise Server installation.
+  """
+  profileName: String
+
+  """
+  The date and time when the user account was created on the Enterprise Server installation.
+  """
+  remoteCreatedAt: DateTime!
+
+  """
+  The ID of the user account on the Enterprise Server installation.
+  """
+  remoteUserId: Int!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+The connection type for EnterpriseServerUserAccount.
+"""
+type EnterpriseServerUserAccountConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseServerUserAccountEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseServerUserAccount]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type EnterpriseServerUserAccountEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseServerUserAccount
+}
+
+"""
+An email belonging to a user account on an Enterprise Server installation.
+"""
+type EnterpriseServerUserAccountEmail implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The email address.
+  """
+  email: String!
+  id: ID!
+
+  """
+  Indicates whether this is the primary email of the associated user account.
+  """
+  isPrimary: Boolean!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The user account to which the email belongs.
+  """
+  userAccount: EnterpriseServerUserAccount!
+}
+
+"""
+The connection type for EnterpriseServerUserAccountEmail.
+"""
+type EnterpriseServerUserAccountEmailConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseServerUserAccountEmailEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseServerUserAccountEmail]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type EnterpriseServerUserAccountEmailEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseServerUserAccountEmail
+}
+
+"""
+Ordering options for Enterprise Server user account email connections.
+"""
+input EnterpriseServerUserAccountEmailOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order emails by.
+  """
+  field: EnterpriseServerUserAccountEmailOrderField!
+}
+
+"""
+Properties by which Enterprise Server user account email connections can be ordered.
+"""
+enum EnterpriseServerUserAccountEmailOrderField {
+  """
+  Order emails by email
+  """
+  EMAIL
+}
+
+"""
+Ordering options for Enterprise Server user account connections.
+"""
+input EnterpriseServerUserAccountOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order user accounts by.
+  """
+  field: EnterpriseServerUserAccountOrderField!
+}
+
+"""
+Properties by which Enterprise Server user account connections can be ordered.
+"""
+enum EnterpriseServerUserAccountOrderField {
+  """
+  Order user accounts by login
+  """
+  LOGIN
+
+  """
+  Order user accounts by creation time on the Enterprise Server installation
+  """
+  REMOTE_CREATED_AT
+}
+
+"""
+A user accounts upload from an Enterprise Server installation.
+"""
+type EnterpriseServerUserAccountsUpload implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The enterprise to which this upload belongs.
+  """
+  enterprise: Enterprise!
+
+  """
+  The Enterprise Server installation for which this upload was generated.
+  """
+  enterpriseServerInstallation: EnterpriseServerInstallation!
+  id: ID!
+
+  """
+  The name of the file uploaded.
+  """
+  name: String!
+
+  """
+  The synchronization state of the upload
+  """
+  syncState: EnterpriseServerUserAccountsUploadSyncState!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+The connection type for EnterpriseServerUserAccountsUpload.
+"""
+type EnterpriseServerUserAccountsUploadConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseServerUserAccountsUploadEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseServerUserAccountsUpload]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type EnterpriseServerUserAccountsUploadEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseServerUserAccountsUpload
+}
+
+"""
+Ordering options for Enterprise Server user accounts upload connections.
+"""
+input EnterpriseServerUserAccountsUploadOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order user accounts uploads by.
+  """
+  field: EnterpriseServerUserAccountsUploadOrderField!
+}
+
+"""
+Properties by which Enterprise Server user accounts upload connections can be ordered.
+"""
+enum EnterpriseServerUserAccountsUploadOrderField {
+  """
+  Order user accounts uploads by creation time
+  """
+  CREATED_AT
+}
+
+"""
+Synchronization state of the Enterprise Server user accounts upload
+"""
+enum EnterpriseServerUserAccountsUploadSyncState {
+  """
+  The synchronization of the upload failed.
+  """
+  FAILURE
+
+  """
+  The synchronization of the upload is pending.
+  """
+  PENDING
+
+  """
+  The synchronization of the upload succeeded.
+  """
+  SUCCESS
+}
+
+"""
+An account for a user who is an admin of an enterprise or a member of an enterprise through one or more organizations.
+"""
+type EnterpriseUserAccount implements Actor & Node {
+  """
+  A URL pointing to the enterprise user account's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The enterprise in which this user account exists.
+  """
+  enterprise: Enterprise!
+  id: ID!
+
+  """
+  An identifier for the enterprise user account, a login or email address
+  """
+  login: String!
+
+  """
+  The name of the enterprise user account
+  """
+  name: String
+
+  """
+  A list of enterprise organizations this user is a member of.
+  """
+  organizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for organizations returned from the connection.
+    """
+    orderBy: OrganizationOrder = { field: LOGIN, direction: ASC }
+
+    """
+    The search string to look for.
+    """
+    query: String
+
+    """
+    The role of the user in the enterprise organization.
+    """
+    role: EnterpriseUserAccountMembershipRole
+  ): EnterpriseOrganizationMembershipConnection!
+
+  """
+  The HTTP path for this user.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this user.
+  """
+  url: URI!
+
+  """
+  The user within the enterprise.
+  """
+  user: User
+}
+
+"""
+The connection type for EnterpriseUserAccount.
+"""
+type EnterpriseUserAccountConnection {
+  """
+  A list of edges.
+  """
+  edges: [EnterpriseUserAccountEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [EnterpriseUserAccount]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type EnterpriseUserAccountEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: EnterpriseUserAccount
+}
+
+"""
+The possible roles for enterprise membership.
+"""
+enum EnterpriseUserAccountMembershipRole {
+  """
+  The user is a member of the enterprise membership.
+  """
+  MEMBER
+
+  """
+  The user is an owner of the enterprise membership.
+  """
+  OWNER
+}
+
+"""
+The possible GitHub Enterprise deployments where this user can exist.
+"""
+enum EnterpriseUserDeployment {
+  """
+  The user is part of a GitHub Enterprise Cloud deployment.
+  """
+  CLOUD
+
+  """
+  The user is part of a GitHub Enterprise Server deployment.
+  """
+  SERVER
+}
+
+"""
+An external identity provisioned by SAML SSO or SCIM.
+"""
+type ExternalIdentity implements Node {
+  """
+  The GUID for this identity
+  """
+  guid: String!
+  id: ID!
+
+  """
+  Organization invitation for this SCIM-provisioned external identity
+  """
+  organizationInvitation: OrganizationInvitation
+
+  """
+  SAML Identity attributes
+  """
+  samlIdentity: ExternalIdentitySamlAttributes
+
+  """
+  SCIM Identity attributes
+  """
+  scimIdentity: ExternalIdentityScimAttributes
+
+  """
+  User linked to this external identity. Will be NULL if this identity has not been claimed by an organization member.
+  """
+  user: User
+}
+
+"""
+The connection type for ExternalIdentity.
+"""
+type ExternalIdentityConnection {
+  """
+  A list of edges.
+  """
+  edges: [ExternalIdentityEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [ExternalIdentity]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ExternalIdentityEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: ExternalIdentity
+}
+
+"""
+SAML attributes for the External Identity
+"""
+type ExternalIdentitySamlAttributes {
+  """
+  The emails associated with the SAML identity
+  """
+  emails: [UserEmailMetadata!]
+
+  """
+  Family name of the SAML identity
+  """
+  familyName: String
+
+  """
+  Given name of the SAML identity
+  """
+  givenName: String
+
+  """
+  The groups linked to this identity in IDP
+  """
+  groups: [String!]
+
+  """
+  The NameID of the SAML identity
+  """
+  nameId: String
+
+  """
+  The userName of the SAML identity
+  """
+  username: String
+}
+
+"""
+SCIM attributes for the External Identity
+"""
+type ExternalIdentityScimAttributes {
+  """
+  The emails associated with the SCIM identity
+  """
+  emails: [UserEmailMetadata!]
+
+  """
+  Family name of the SCIM identity
+  """
+  familyName: String
+
+  """
+  Given name of the SCIM identity
+  """
+  givenName: String
+
+  """
+  The groups linked to this identity in IDP
+  """
+  groups: [String!]
+
+  """
+  The userName of the SCIM identity
+  """
+  username: String
+}
+
+"""
+Autogenerated input type of FollowUser
+"""
+input FollowUserInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the user to follow.
+  """
+  userId: ID! @possibleTypes(concreteTypes: ["User"])
+}
+
+"""
+Autogenerated return type of FollowUser
+"""
+type FollowUserPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The user that was followed.
+  """
+  user: User
+}
+
+"""
+The connection type for User.
+"""
+type FollowerConnection {
+  """
+  A list of edges.
+  """
+  edges: [UserEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+The connection type for User.
+"""
+type FollowingConnection {
+  """
+  A list of edges.
+  """
+  edges: [UserEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+A funding platform link for a repository.
+"""
+type FundingLink {
+  """
+  The funding platform this link is for.
+  """
+  platform: FundingPlatform!
+
+  """
+  The configured URL for this funding link.
+  """
+  url: URI!
+}
+
+"""
+The possible funding platforms for repository funding links.
+"""
+enum FundingPlatform {
+  """
+  Community Bridge funding platform.
+  """
+  COMMUNITY_BRIDGE
+
+  """
+  Custom funding platform.
+  """
+  CUSTOM
+
+  """
+  GitHub funding platform.
+  """
+  GITHUB
+
+  """
+  IssueHunt funding platform.
+  """
+  ISSUEHUNT
+
+  """
+  Ko-fi funding platform.
+  """
+  KO_FI
+
+  """
+  Liberapay funding platform.
+  """
+  LIBERAPAY
+
+  """
+  Open Collective funding platform.
+  """
+  OPEN_COLLECTIVE
+
+  """
+  Otechie funding platform.
+  """
+  OTECHIE
+
+  """
+  Patreon funding platform.
+  """
+  PATREON
+
+  """
+  Tidelift funding platform.
+  """
+  TIDELIFT
+}
+
+"""
+A generic hovercard context with a message and icon
+"""
+type GenericHovercardContext implements HovercardContext {
+  """
+  A string describing this context
+  """
+  message: String!
+
+  """
+  An octicon to accompany this context
+  """
+  octicon: String!
+}
+
+"""
+A Gist.
+"""
+type Gist implements Node & Starrable & UniformResourceLocatable {
+  """
+  A list of comments associated with the gist
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): GistCommentConnection!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The gist description.
+  """
+  description: String
+
+  """
+  The files in this gist.
+  """
+  files(
+    """
+    The maximum number of files to return.
+    """
+    limit: Int = 10
+
+    """
+    The oid of the files to return
+    """
+    oid: GitObjectID
+  ): [GistFile]
+
+  """
+  A list of forks associated with the gist
+  """
+  forks(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for gists returned from the connection
+    """
+    orderBy: GistOrder
+  ): GistConnection!
+  id: ID!
+
+  """
+  Identifies if the gist is a fork.
+  """
+  isFork: Boolean!
+
+  """
+  Whether the gist is public or not.
+  """
+  isPublic: Boolean!
+
+  """
+  The gist name.
+  """
+  name: String!
+
+  """
+  The gist owner.
+  """
+  owner: RepositoryOwner
+
+  """
+  Identifies when the gist was last pushed to.
+  """
+  pushedAt: DateTime
+
+  """
+  The HTML path to this resource.
+  """
+  resourcePath: URI!
+
+  """
+  A list of users who have starred this starrable.
+  """
+  stargazers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: StarOrder
+  ): StargazerConnection!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this Gist.
+  """
+  url: URI!
+
+  """
+  Returns a boolean indicating whether the viewing user has starred this starrable.
+  """
+  viewerHasStarred: Boolean!
+}
+
+"""
+Represents a comment on an Gist.
+"""
+type GistComment implements Comment & Deletable & Minimizable & Node & Updatable & UpdatableComment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the gist.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  Identifies the comment body.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body rendered to text.
+  """
+  bodyText: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+
+  """
+  The associated gist.
+  """
+  gist: Gist!
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  Returns whether or not a comment has been minimized.
+  """
+  isMinimized: Boolean!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  Returns why the comment was minimized.
+  """
+  minimizedReason: String
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+
+  """
+  Check if the current viewer can minimize this object.
+  """
+  viewerCanMinimize: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+}
+
+"""
+The connection type for GistComment.
+"""
+type GistCommentConnection {
+  """
+  A list of edges.
+  """
+  edges: [GistCommentEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [GistComment]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type GistCommentEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: GistComment
+}
+
+"""
+The connection type for Gist.
+"""
+type GistConnection {
+  """
+  A list of edges.
+  """
+  edges: [GistEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Gist]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type GistEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Gist
+}
+
+"""
+A file in a gist.
+"""
+type GistFile {
+  """
+  The file name encoded to remove characters that are invalid in URL paths.
+  """
+  encodedName: String
+
+  """
+  The gist file encoding.
+  """
+  encoding: String
+
+  """
+  The file extension from the file name.
+  """
+  extension: String
+
+  """
+  Indicates if this file is an image.
+  """
+  isImage: Boolean!
+
+  """
+  Whether the file's contents were truncated.
+  """
+  isTruncated: Boolean!
+
+  """
+  The programming language this file is written in.
+  """
+  language: Language
+
+  """
+  The gist file name.
+  """
+  name: String
+
+  """
+  The gist file size in bytes.
+  """
+  size: Int
+
+  """
+  UTF8 text data or null if the file is binary
+  """
+  text(
+    """
+    Optionally truncate the returned file to this length.
+    """
+    truncate: Int
+  ): String
+}
+
+"""
+Ordering options for gist connections
+"""
+input GistOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order repositories by.
+  """
+  field: GistOrderField!
+}
+
+"""
+Properties by which gist connections can be ordered.
+"""
+enum GistOrderField {
+  """
+  Order gists by creation time
+  """
+  CREATED_AT
+
+  """
+  Order gists by push time
+  """
+  PUSHED_AT
+
+  """
+  Order gists by update time
+  """
+  UPDATED_AT
+}
+
+"""
+The privacy of a Gist
+"""
+enum GistPrivacy {
+  """
+  Gists that are public and secret
+  """
+  ALL
+
+  """
+  Public
+  """
+  PUBLIC
+
+  """
+  Secret
+  """
+  SECRET
+}
+
+"""
+Represents an actor in a Git commit (ie. an author or committer).
+"""
+type GitActor {
+  """
+  A URL pointing to the author's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  The timestamp of the Git action (authoring or committing).
+  """
+  date: GitTimestamp
+
+  """
+  The email in the Git commit.
+  """
+  email: String
+
+  """
+  The name in the Git commit.
+  """
+  name: String
+
+  """
+  The GitHub user corresponding to the email field. Null if no such user exists.
+  """
+  user: User
+}
+
+"""
+Represents information about the GitHub instance.
+"""
+type GitHubMetadata {
+  """
+  Returns a String that's a SHA of `github-services`
+  """
+  gitHubServicesSha: GitObjectID!
+
+  """
+  IP addresses that users connect to for git operations
+  """
+  gitIpAddresses: [String!]
+
+  """
+  IP addresses that service hooks are sent from
+  """
+  hookIpAddresses: [String!]
+
+  """
+  IP addresses that the importer connects from
+  """
+  importerIpAddresses: [String!]
+
+  """
+  Whether or not users are verified
+  """
+  isPasswordAuthenticationVerifiable: Boolean!
+
+  """
+  IP addresses for GitHub Pages' A records
+  """
+  pagesIpAddresses: [String!]
+}
+
+"""
+Represents a Git object.
+"""
+interface GitObject {
+  """
+  An abbreviated version of the Git object ID
+  """
+  abbreviatedOid: String!
+
+  """
+  The HTTP path for this Git object
+  """
+  commitResourcePath: URI!
+
+  """
+  The HTTP URL for this Git object
+  """
+  commitUrl: URI!
+  id: ID!
+
+  """
+  The Git object ID
+  """
+  oid: GitObjectID!
+
+  """
+  The Repository the Git object belongs to
+  """
+  repository: Repository!
+}
+
+"""
+A Git object ID.
+"""
+scalar GitObjectID
+
+"""
+A fully qualified reference name (e.g. `refs/heads/master`).
+"""
+scalar GitRefname @preview(toggledBy: "update-refs-preview")
+
+"""
+Git SSH string
+"""
+scalar GitSSHRemote
+
+"""
+Information about a signature (GPG or S/MIME) on a Commit or Tag.
+"""
+interface GitSignature {
+  """
+  Email used to sign this object.
+  """
+  email: String!
+
+  """
+  True if the signature is valid and verified by GitHub.
+  """
+  isValid: Boolean!
+
+  """
+  Payload for GPG signing object. Raw ODB object without the signature header.
+  """
+  payload: String!
+
+  """
+  ASCII-armored signature header from object.
+  """
+  signature: String!
+
+  """
+  GitHub user corresponding to the email signing this commit.
+  """
+  signer: User
+
+  """
+  The state of this signature. `VALID` if signature is valid and verified by
+  GitHub, otherwise represents reason why signature is considered invalid.
+  """
+  state: GitSignatureState!
+
+  """
+  True if the signature was made with GitHub's signing key.
+  """
+  wasSignedByGitHub: Boolean!
+}
+
+"""
+The state of a Git signature.
+"""
+enum GitSignatureState {
+  """
+  The signing certificate or its chain could not be verified
+  """
+  BAD_CERT
+
+  """
+  Invalid email used for signing
+  """
+  BAD_EMAIL
+
+  """
+  Signing key expired
+  """
+  EXPIRED_KEY
+
+  """
+  Internal error - the GPG verification service misbehaved
+  """
+  GPGVERIFY_ERROR
+
+  """
+  Internal error - the GPG verification service is unavailable at the moment
+  """
+  GPGVERIFY_UNAVAILABLE
+
+  """
+  Invalid signature
+  """
+  INVALID
+
+  """
+  Malformed signature
+  """
+  MALFORMED_SIG
+
+  """
+  The usage flags for the key that signed this don't allow signing
+  """
+  NOT_SIGNING_KEY
+
+  """
+  Email used for signing not known to GitHub
+  """
+  NO_USER
+
+  """
+  Valid siganture, though certificate revocation check failed
+  """
+  OCSP_ERROR
+
+  """
+  Valid signature, pending certificate revocation checking
+  """
+  OCSP_PENDING
+
+  """
+  One or more certificates in chain has been revoked
+  """
+  OCSP_REVOKED
+
+  """
+  Key used for signing not known to GitHub
+  """
+  UNKNOWN_KEY
+
+  """
+  Unknown signature type
+  """
+  UNKNOWN_SIG_TYPE
+
+  """
+  Unsigned
+  """
+  UNSIGNED
+
+  """
+  Email used for signing unverified on GitHub
+  """
+  UNVERIFIED_EMAIL
+
+  """
+  Valid signature and verified by GitHub
+  """
+  VALID
+}
+
+"""
+An ISO-8601 encoded date string. Unlike the DateTime type, GitTimestamp is not converted in UTC.
+"""
+scalar GitTimestamp
+
+"""
+Represents a GPG signature on a Commit or Tag.
+"""
+type GpgSignature implements GitSignature {
+  """
+  Email used to sign this object.
+  """
+  email: String!
+
+  """
+  True if the signature is valid and verified by GitHub.
+  """
+  isValid: Boolean!
+
+  """
+  Hex-encoded ID of the key that signed this object.
+  """
+  keyId: String
+
+  """
+  Payload for GPG signing object. Raw ODB object without the signature header.
+  """
+  payload: String!
+
+  """
+  ASCII-armored signature header from object.
+  """
+  signature: String!
+
+  """
+  GitHub user corresponding to the email signing this commit.
+  """
+  signer: User
+
+  """
+  The state of this signature. `VALID` if signature is valid and verified by
+  GitHub, otherwise represents reason why signature is considered invalid.
+  """
+  state: GitSignatureState!
+
+  """
+  True if the signature was made with GitHub's signing key.
+  """
+  wasSignedByGitHub: Boolean!
+}
+
+"""
+A string containing HTML code.
+"""
+scalar HTML
+
+"""
+Represents a 'head_ref_deleted' event on a given pull request.
+"""
+type HeadRefDeletedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the Ref associated with the `head_ref_deleted` event.
+  """
+  headRef: Ref
+
+  """
+  Identifies the name of the Ref associated with the `head_ref_deleted` event.
+  """
+  headRefName: String!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+}
+
+"""
+Represents a 'head_ref_force_pushed' event on a given pull request.
+"""
+type HeadRefForcePushedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the after commit SHA for the 'head_ref_force_pushed' event.
+  """
+  afterCommit: Commit
+
+  """
+  Identifies the before commit SHA for the 'head_ref_force_pushed' event.
+  """
+  beforeCommit: Commit
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  Identifies the fully qualified ref name for the 'head_ref_force_pushed' event.
+  """
+  ref: Ref
+}
+
+"""
+Represents a 'head_ref_restored' event on a given pull request.
+"""
+type HeadRefRestoredEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+}
+
+"""
+Detail needed to display a hovercard for a user
+"""
+type Hovercard {
+  """
+  Each of the contexts for this hovercard
+  """
+  contexts: [HovercardContext!]!
+}
+
+"""
+An individual line of a hovercard
+"""
+interface HovercardContext {
+  """
+  A string describing this context
+  """
+  message: String!
+
+  """
+  An octicon to accompany this context
+  """
+  octicon: String!
+}
+
+"""
+The possible states in which authentication can be configured with an identity provider.
+"""
+enum IdentityProviderConfigurationState {
+  """
+  Authentication with an identity provider is configured but not enforced.
+  """
+  CONFIGURED
+
+  """
+  Authentication with an identity provider is configured and enforced.
+  """
+  ENFORCED
+
+  """
+  Authentication with an identity provider is not configured.
+  """
+  UNCONFIGURED
+}
+
+"""
+Autogenerated input type of ImportProject
+"""
+input ImportProjectInput {
+  """
+  The description of Project.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A list of columns containing issues and pull requests.
+  """
+  columnImports: [ProjectColumnImport!]!
+
+  """
+  The name of Project.
+  """
+  name: String!
+
+  """
+  The name of the Organization or User to create the Project under.
+  """
+  ownerName: String!
+
+  """
+  Whether the Project is public or not.
+  """
+  public: Boolean = false
+}
+
+"""
+Autogenerated return type of ImportProject
+"""
+type ImportProjectPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new Project!
+  """
+  project: Project
+}
+
+"""
+Autogenerated input type of InviteEnterpriseAdmin
+"""
+input InviteEnterpriseAdminInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The email of the person to invite as an administrator.
+  """
+  email: String
+
+  """
+  The ID of the enterprise to which you want to invite an administrator.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The login of a user to invite as an administrator.
+  """
+  invitee: String
+
+  """
+  The role of the administrator.
+  """
+  role: EnterpriseAdministratorRole
+}
+
+"""
+Autogenerated return type of InviteEnterpriseAdmin
+"""
+type InviteEnterpriseAdminPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The created enterprise administrator invitation.
+  """
+  invitation: EnterpriseAdministratorInvitation
+}
+
+"""
+The possible values for the IP allow list enabled setting.
+"""
+enum IpAllowListEnabledSettingValue {
+  """
+  The setting is disabled for the owner.
+  """
+  DISABLED
+
+  """
+  The setting is enabled for the owner.
+  """
+  ENABLED
+}
+
+"""
+An IP address or range of addresses that is allowed to access an owner's resources.
+"""
+type IpAllowListEntry implements Node {
+  """
+  A single IP address or range of IP addresses in CIDR notation.
+  """
+  allowListValue: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Whether the entry is currently active.
+  """
+  isActive: Boolean!
+
+  """
+  The name of the IP allow list entry.
+  """
+  name: String
+
+  """
+  The owner of the IP allow list entry.
+  """
+  owner: IpAllowListOwner!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+The connection type for IpAllowListEntry.
+"""
+type IpAllowListEntryConnection {
+  """
+  A list of edges.
+  """
+  edges: [IpAllowListEntryEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [IpAllowListEntry]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type IpAllowListEntryEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: IpAllowListEntry
+}
+
+"""
+Ordering options for IP allow list entry connections.
+"""
+input IpAllowListEntryOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order IP allow list entries by.
+  """
+  field: IpAllowListEntryOrderField!
+}
+
+"""
+Properties by which IP allow list entry connections can be ordered.
+"""
+enum IpAllowListEntryOrderField {
+  """
+  Order IP allow list entries by the allow list value.
+  """
+  ALLOW_LIST_VALUE
+
+  """
+  Order IP allow list entries by creation time.
+  """
+  CREATED_AT
+}
+
+"""
+Types that can own an IP allow list.
+"""
+union IpAllowListOwner = Enterprise | Organization
+
+"""
+An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project.
+"""
+type Issue implements Assignable & Closable & Comment & Labelable & Lockable & Node & Reactable & RepositoryNode & Subscribable & UniformResourceLocatable & Updatable & UpdatableComment {
+  """
+  Reason that the conversation was locked.
+  """
+  activeLockReason: LockReason
+
+  """
+  A list of Users assigned to this object.
+  """
+  assignees(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the subject of the comment.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  Identifies the body of the issue.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  Identifies the body of the issue rendered to text.
+  """
+  bodyText: String!
+
+  """
+  `true` if the object is closed (definition of closed may depend on type)
+  """
+  closed: Boolean!
+
+  """
+  Identifies the date and time when the object was closed.
+  """
+  closedAt: DateTime
+
+  """
+  A list of comments associated with the Issue.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): IssueCommentConnection!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+
+  """
+  The hovercard information for this issue
+  """
+  hovercard(
+    """
+    Whether or not to include notification contexts
+    """
+    includeNotificationContexts: Boolean = true
+  ): Hovercard!
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  A list of labels associated with the object.
+  """
+  labels(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for labels returned from the connection.
+    """
+    orderBy: LabelOrder = { field: CREATED_AT, direction: ASC }
+  ): LabelConnection
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  `true` if the object is locked
+  """
+  locked: Boolean!
+
+  """
+  Identifies the milestone associated with the issue.
+  """
+  milestone: Milestone
+
+  """
+  Identifies the issue number.
+  """
+  number: Int!
+
+  """
+  A list of Users that are participating in the Issue conversation.
+  """
+  participants(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+
+  """
+  List of project cards associated with this issue.
+  """
+  projectCards(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    A list of archived states to filter the cards by
+    """
+    archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ProjectCardConnection!
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this issue
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the state of the issue.
+  """
+  state: IssueState!
+
+  """
+  A list of events, comments, commits, etc. associated with the issue.
+  """
+  timeline(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows filtering timeline events by a `since` timestamp.
+    """
+    since: DateTime
+  ): IssueTimelineConnection!
+  @deprecated(
+    reason: "`timeline` will be removed Use Issue.timelineItems instead. Removal on 2020-10-01 UTC."
+  )
+
+  """
+  A list of events, comments, commits, etc. associated with the issue.
+  """
+  timelineItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Filter timeline items by type.
+    """
+    itemTypes: [IssueTimelineItemsItemType!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter timeline items by a `since` timestamp.
+    """
+    since: DateTime
+
+    """
+    Skips the first _n_ elements in the list.
+    """
+    skip: Int
+  ): IssueTimelineItemsConnection!
+
+  """
+  Identifies the issue title.
+  """
+  title: String!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this issue
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the viewer is able to change their subscription status for the repository.
+  """
+  viewerCanSubscribe: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+
+  """
+  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
+  """
+  viewerSubscription: SubscriptionState
+}
+
+"""
+Represents a comment on an Issue.
+"""
+type IssueComment implements Comment & Deletable & Minimizable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the subject of the comment.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  The body as Markdown.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body rendered to text.
+  """
+  bodyText: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  Returns whether or not a comment has been minimized.
+  """
+  isMinimized: Boolean!
+
+  """
+  Identifies the issue associated with the comment.
+  """
+  issue: Issue!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  Returns why the comment was minimized.
+  """
+  minimizedReason: String
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  Returns the pull request associated with the comment, if this comment was made on a
+  pull request.
+  """
+  pullRequest: PullRequest
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this issue comment
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this issue comment
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+
+  """
+  Check if the current viewer can minimize this object.
+  """
+  viewerCanMinimize: Boolean!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+}
+
+"""
+The connection type for IssueComment.
+"""
+type IssueCommentConnection {
+  """
+  A list of edges.
+  """
+  edges: [IssueCommentEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [IssueComment]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type IssueCommentEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: IssueComment
+}
+
+"""
+The connection type for Issue.
+"""
+type IssueConnection {
+  """
+  A list of edges.
+  """
+  edges: [IssueEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Issue]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+This aggregates issues opened by a user within one repository.
+"""
+type IssueContributionsByRepository {
+  """
+  The issue contributions.
+  """
+  contributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for contributions returned from the connection.
+    """
+    orderBy: ContributionOrder = { direction: DESC }
+  ): CreatedIssueContributionConnection!
+
+  """
+  The repository in which the issues were opened.
+  """
+  repository: Repository!
+}
+
+"""
+An edge in a connection.
+"""
+type IssueEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Issue
+}
+
+"""
+Ways in which to filter lists of issues.
+"""
+input IssueFilters {
+  """
+  List issues assigned to given name. Pass in `null` for issues with no assigned
+  user, and `*` for issues assigned to any user.
+  """
+  assignee: String
+
+  """
+  List issues created by given name.
+  """
+  createdBy: String
+
+  """
+  List issues where the list of label names exist on the issue.
+  """
+  labels: [String!]
+
+  """
+  List issues where the given name is mentioned in the issue.
+  """
+  mentioned: String
+
+  """
+  List issues by given milestone argument. If an string representation of an
+  integer is passed, it should refer to a milestone by its number field. Pass in
+  `null` for issues with no milestone, and `*` for issues that are assigned to any milestone.
+  """
+  milestone: String
+
+  """
+  List issues that have been updated at or after the given date.
+  """
+  since: DateTime
+
+  """
+  List issues filtered by the list of states given.
+  """
+  states: [IssueState!]
+
+  """
+  List issues subscribed to by viewer.
+  """
+  viewerSubscribed: Boolean = false
+}
+
+"""
+Used for return value of Repository.issueOrPullRequest.
+"""
+union IssueOrPullRequest = Issue | PullRequest
+
+"""
+Ways in which lists of issues can be ordered upon return.
+"""
+input IssueOrder {
+  """
+  The direction in which to order issues by the specified field.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order issues by.
+  """
+  field: IssueOrderField!
+}
+
+"""
+Properties by which issue connections can be ordered.
+"""
+enum IssueOrderField {
+  """
+  Order issues by comment count
+  """
+  COMMENTS
+
+  """
+  Order issues by creation time
+  """
+  CREATED_AT
+
+  """
+  Order issues by update time
+  """
+  UPDATED_AT
+}
+
+"""
+The possible states of an issue.
+"""
+enum IssueState {
+  """
+  An issue that has been closed
+  """
+  CLOSED
+
+  """
+  An issue that is still open
+  """
+  OPEN
+}
+
+"""
+The connection type for IssueTimelineItem.
+"""
+type IssueTimelineConnection {
+  """
+  A list of edges.
+  """
+  edges: [IssueTimelineItemEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [IssueTimelineItem]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An item in an issue timeline
+"""
+union IssueTimelineItem =
+    AssignedEvent
+  | ClosedEvent
+  | Commit
+  | CrossReferencedEvent
+  | DemilestonedEvent
+  | IssueComment
+  | LabeledEvent
+  | LockedEvent
+  | MilestonedEvent
+  | ReferencedEvent
+  | RenamedTitleEvent
+  | ReopenedEvent
+  | SubscribedEvent
+  | TransferredEvent
+  | UnassignedEvent
+  | UnlabeledEvent
+  | UnlockedEvent
+  | UnsubscribedEvent
+  | UserBlockedEvent
+
+"""
+An edge in a connection.
+"""
+type IssueTimelineItemEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: IssueTimelineItem
+}
+
+"""
+An item in an issue timeline
+"""
+union IssueTimelineItems =
+    AddedToProjectEvent
+  | AssignedEvent
+  | ClosedEvent
+  | CommentDeletedEvent
+  | ConnectedEvent
+  | ConvertedNoteToIssueEvent
+  | CrossReferencedEvent
+  | DemilestonedEvent
+  | DisconnectedEvent
+  | IssueComment
+  | LabeledEvent
+  | LockedEvent
+  | MarkedAsDuplicateEvent
+  | MentionedEvent
+  | MilestonedEvent
+  | MovedColumnsInProjectEvent
+  | PinnedEvent
+  | ReferencedEvent
+  | RemovedFromProjectEvent
+  | RenamedTitleEvent
+  | ReopenedEvent
+  | SubscribedEvent
+  | TransferredEvent
+  | UnassignedEvent
+  | UnlabeledEvent
+  | UnlockedEvent
+  | UnmarkedAsDuplicateEvent
+  | UnpinnedEvent
+  | UnsubscribedEvent
+  | UserBlockedEvent
+
+"""
+The connection type for IssueTimelineItems.
+"""
+type IssueTimelineItemsConnection {
+  """
+  A list of edges.
+  """
+  edges: [IssueTimelineItemsEdge]
+
+  """
+  Identifies the count of items after applying `before` and `after` filters.
+  """
+  filteredCount: Int!
+
+  """
+  A list of nodes.
+  """
+  nodes: [IssueTimelineItems]
+
+  """
+  Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing.
+  """
+  pageCount: Int!
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+
+  """
+  Identifies the date and time when the timeline was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+An edge in a connection.
+"""
+type IssueTimelineItemsEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: IssueTimelineItems
+}
+
+"""
+The possible item types found in a timeline.
+"""
+enum IssueTimelineItemsItemType {
+  """
+  Represents a 'added_to_project' event on a given issue or pull request.
+  """
+  ADDED_TO_PROJECT_EVENT
+
+  """
+  Represents an 'assigned' event on any assignable object.
+  """
+  ASSIGNED_EVENT
+
+  """
+  Represents a 'closed' event on any `Closable`.
+  """
+  CLOSED_EVENT
+
+  """
+  Represents a 'comment_deleted' event on a given issue or pull request.
+  """
+  COMMENT_DELETED_EVENT
+
+  """
+  Represents a 'connected' event on a given issue or pull request.
+  """
+  CONNECTED_EVENT
+
+  """
+  Represents a 'converted_note_to_issue' event on a given issue or pull request.
+  """
+  CONVERTED_NOTE_TO_ISSUE_EVENT
+
+  """
+  Represents a mention made by one issue or pull request to another.
+  """
+  CROSS_REFERENCED_EVENT
+
+  """
+  Represents a 'demilestoned' event on a given issue or pull request.
+  """
+  DEMILESTONED_EVENT
+
+  """
+  Represents a 'disconnected' event on a given issue or pull request.
+  """
+  DISCONNECTED_EVENT
+
+  """
+  Represents a comment on an Issue.
+  """
+  ISSUE_COMMENT
+
+  """
+  Represents a 'labeled' event on a given issue or pull request.
+  """
+  LABELED_EVENT
+
+  """
+  Represents a 'locked' event on a given issue or pull request.
+  """
+  LOCKED_EVENT
+
+  """
+  Represents a 'marked_as_duplicate' event on a given issue or pull request.
+  """
+  MARKED_AS_DUPLICATE_EVENT
+
+  """
+  Represents a 'mentioned' event on a given issue or pull request.
+  """
+  MENTIONED_EVENT
+
+  """
+  Represents a 'milestoned' event on a given issue or pull request.
+  """
+  MILESTONED_EVENT
+
+  """
+  Represents a 'moved_columns_in_project' event on a given issue or pull request.
+  """
+  MOVED_COLUMNS_IN_PROJECT_EVENT
+
+  """
+  Represents a 'pinned' event on a given issue or pull request.
+  """
+  PINNED_EVENT
+
+  """
+  Represents a 'referenced' event on a given `ReferencedSubject`.
+  """
+  REFERENCED_EVENT
+
+  """
+  Represents a 'removed_from_project' event on a given issue or pull request.
+  """
+  REMOVED_FROM_PROJECT_EVENT
+
+  """
+  Represents a 'renamed' event on a given issue or pull request
+  """
+  RENAMED_TITLE_EVENT
+
+  """
+  Represents a 'reopened' event on any `Closable`.
+  """
+  REOPENED_EVENT
+
+  """
+  Represents a 'subscribed' event on a given `Subscribable`.
+  """
+  SUBSCRIBED_EVENT
+
+  """
+  Represents a 'transferred' event on a given issue or pull request.
+  """
+  TRANSFERRED_EVENT
+
+  """
+  Represents an 'unassigned' event on any assignable object.
+  """
+  UNASSIGNED_EVENT
+
+  """
+  Represents an 'unlabeled' event on a given issue or pull request.
+  """
+  UNLABELED_EVENT
+
+  """
+  Represents an 'unlocked' event on a given issue or pull request.
+  """
+  UNLOCKED_EVENT
+
+  """
+  Represents an 'unmarked_as_duplicate' event on a given issue or pull request.
+  """
+  UNMARKED_AS_DUPLICATE_EVENT
+
+  """
+  Represents an 'unpinned' event on a given issue or pull request.
+  """
+  UNPINNED_EVENT
+
+  """
+  Represents an 'unsubscribed' event on a given `Subscribable`.
+  """
+  UNSUBSCRIBED_EVENT
+
+  """
+  Represents a 'user_blocked' event on a given user.
+  """
+  USER_BLOCKED_EVENT
+}
+
+"""
+Represents a user signing up for a GitHub account.
+"""
+type JoinedGitHubContribution implements Contribution {
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+A label for categorizing Issues or Milestones with a given Repository.
+"""
+type Label implements Node {
+  """
+  Identifies the label color.
+  """
+  color: String!
+
+  """
+  Identifies the date and time when the label was created.
+  """
+  createdAt: DateTime
+
+  """
+  A brief description of this label.
+  """
+  description: String
+  id: ID!
+
+  """
+  Indicates whether or not this is a default label.
+  """
+  isDefault: Boolean!
+
+  """
+  A list of issues associated with this label.
+  """
+  issues(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Filtering options for issues returned from the connection.
+    """
+    filterBy: IssueFilters
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for issues returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the issues by.
+    """
+    states: [IssueState!]
+  ): IssueConnection!
+
+  """
+  Identifies the label name.
+  """
+  name: String!
+
+  """
+  A list of pull requests associated with this label.
+  """
+  pullRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    The base ref name to filter the pull requests by.
+    """
+    baseRefName: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    The head ref name to filter the pull requests by.
+    """
+    headRefName: String
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pull requests returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the pull requests by.
+    """
+    states: [PullRequestState!]
+  ): PullRequestConnection!
+
+  """
+  The repository associated with this label.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this label.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the label was last updated.
+  """
+  updatedAt: DateTime
+
+  """
+  The HTTP URL for this label.
+  """
+  url: URI!
+}
+
+"""
+The connection type for Label.
+"""
+type LabelConnection {
+  """
+  A list of edges.
+  """
+  edges: [LabelEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Label]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type LabelEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Label
+}
+
+"""
+Ways in which lists of labels can be ordered upon return.
+"""
+input LabelOrder {
+  """
+  The direction in which to order labels by the specified field.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order labels by.
+  """
+  field: LabelOrderField!
+}
+
+"""
+Properties by which label connections can be ordered.
+"""
+enum LabelOrderField {
+  """
+  Order labels by creation time
+  """
+  CREATED_AT
+
+  """
+  Order labels by name
+  """
+  NAME
+}
+
+"""
+An object that can have labels assigned to it.
+"""
+interface Labelable {
+  """
+  A list of labels associated with the object.
+  """
+  labels(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for labels returned from the connection.
+    """
+    orderBy: LabelOrder = { field: CREATED_AT, direction: ASC }
+  ): LabelConnection
+}
+
+"""
+Represents a 'labeled' event on a given issue or pull request.
+"""
+type LabeledEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the label associated with the 'labeled' event.
+  """
+  label: Label!
+
+  """
+  Identifies the `Labelable` associated with the event.
+  """
+  labelable: Labelable!
+}
+
+"""
+Represents a given language found in repositories.
+"""
+type Language implements Node {
+  """
+  The color defined for the current language.
+  """
+  color: String
+  id: ID!
+
+  """
+  The name of the current language.
+  """
+  name: String!
+}
+
+"""
+A list of languages associated with the parent.
+"""
+type LanguageConnection {
+  """
+  A list of edges.
+  """
+  edges: [LanguageEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Language]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+
+  """
+  The total size in bytes of files written in that language.
+  """
+  totalSize: Int!
+}
+
+"""
+Represents the language of a repository.
+"""
+type LanguageEdge {
+  cursor: String!
+  node: Language!
+
+  """
+  The number of bytes of code written in the language.
+  """
+  size: Int!
+}
+
+"""
+Ordering options for language connections.
+"""
+input LanguageOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order languages by.
+  """
+  field: LanguageOrderField!
+}
+
+"""
+Properties by which language connections can be ordered.
+"""
+enum LanguageOrderField {
+  """
+  Order languages by the size of all files containing the language
+  """
+  SIZE
+}
+
+"""
+A repository's open source license
+"""
+type License implements Node {
+  """
+  The full text of the license
+  """
+  body: String!
+
+  """
+  The conditions set by the license
+  """
+  conditions: [LicenseRule]!
+
+  """
+  A human-readable description of the license
+  """
+  description: String
+
+  """
+  Whether the license should be featured
+  """
+  featured: Boolean!
+
+  """
+  Whether the license should be displayed in license pickers
+  """
+  hidden: Boolean!
+  id: ID!
+
+  """
+  Instructions on how to implement the license
+  """
+  implementation: String
+
+  """
+  The lowercased SPDX ID of the license
+  """
+  key: String!
+
+  """
+  The limitations set by the license
+  """
+  limitations: [LicenseRule]!
+
+  """
+  The license full name specified by <https://spdx.org/licenses>
+  """
+  name: String!
+
+  """
+  Customary short name if applicable (e.g, GPLv3)
+  """
+  nickname: String
+
+  """
+  The permissions set by the license
+  """
+  permissions: [LicenseRule]!
+
+  """
+  Whether the license is a pseudo-license placeholder (e.g., other, no-license)
+  """
+  pseudoLicense: Boolean!
+
+  """
+  Short identifier specified by <https://spdx.org/licenses>
+  """
+  spdxId: String
+
+  """
+  URL to the license on <https://choosealicense.com>
+  """
+  url: URI
+}
+
+"""
+Describes a License's conditions, permissions, and limitations
+"""
+type LicenseRule {
+  """
+  A description of the rule
+  """
+  description: String!
+
+  """
+  The machine-readable rule key
+  """
+  key: String!
+
+  """
+  The human-readable rule label
+  """
+  label: String!
+}
+
+"""
+Autogenerated input type of LinkRepositoryToProject
+"""
+input LinkRepositoryToProjectInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the Project to link to a Repository
+  """
+  projectId: ID! @possibleTypes(concreteTypes: ["Project"])
+
+  """
+  The ID of the Repository to link to a Project.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of LinkRepositoryToProject
+"""
+type LinkRepositoryToProjectPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The linked Project.
+  """
+  project: Project
+
+  """
+  The linked Repository.
+  """
+  repository: Repository
+}
+
+"""
+Autogenerated input type of LockLockable
+"""
+input LockLockableInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A reason for why the issue or pull request will be locked.
+  """
+  lockReason: LockReason
+
+  """
+  ID of the issue or pull request to be locked.
+  """
+  lockableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "Lockable"
+  )
+}
+
+"""
+Autogenerated return type of LockLockable
+"""
+type LockLockablePayload {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The item that was locked.
+  """
+  lockedRecord: Lockable
+}
+
+"""
+The possible reasons that an issue or pull request was locked.
+"""
+enum LockReason {
+  """
+  The issue or pull request was locked because the conversation was off-topic.
+  """
+  OFF_TOPIC
+
+  """
+  The issue or pull request was locked because the conversation was resolved.
+  """
+  RESOLVED
+
+  """
+  The issue or pull request was locked because the conversation was spam.
+  """
+  SPAM
+
+  """
+  The issue or pull request was locked because the conversation was too heated.
+  """
+  TOO_HEATED
+}
+
+"""
+An object that can be locked.
+"""
+interface Lockable {
+  """
+  Reason that the conversation was locked.
+  """
+  activeLockReason: LockReason
+
+  """
+  `true` if the object is locked
+  """
+  locked: Boolean!
+}
+
+"""
+Represents a 'locked' event on a given issue or pull request.
+"""
+type LockedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Reason that the conversation was locked (optional).
+  """
+  lockReason: LockReason
+
+  """
+  Object that was locked.
+  """
+  lockable: Lockable!
+}
+
+"""
+A placeholder user for attribution of imported data on GitHub.
+"""
+type Mannequin implements Actor & Node & UniformResourceLocatable {
+  """
+  A URL pointing to the GitHub App's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The mannequin's email on the source instance.
+  """
+  email: String
+  id: ID!
+
+  """
+  The username of the actor.
+  """
+  login: String!
+
+  """
+  The HTML path to this resource.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The URL to this resource.
+  """
+  url: URI!
+}
+
+"""
+Autogenerated input type of MarkPullRequestReadyForReview
+"""
+input MarkPullRequestReadyForReviewInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the pull request to be marked as ready for review.
+  """
+  pullRequestId: ID! @possibleTypes(concreteTypes: ["PullRequest"])
+}
+
+"""
+Autogenerated return type of MarkPullRequestReadyForReview
+"""
+type MarkPullRequestReadyForReviewPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The pull request that is ready for review.
+  """
+  pullRequest: PullRequest
+}
+
+"""
+Represents a 'marked_as_duplicate' event on a given issue or pull request.
+"""
+type MarkedAsDuplicateEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+}
+
+"""
+A public description of a Marketplace category.
+"""
+type MarketplaceCategory implements Node {
+  """
+  The category's description.
+  """
+  description: String
+
+  """
+  The technical description of how apps listed in this category work with GitHub.
+  """
+  howItWorks: String
+  id: ID!
+
+  """
+  The category's name.
+  """
+  name: String!
+
+  """
+  How many Marketplace listings have this as their primary category.
+  """
+  primaryListingCount: Int!
+
+  """
+  The HTTP path for this Marketplace category.
+  """
+  resourcePath: URI!
+
+  """
+  How many Marketplace listings have this as their secondary category.
+  """
+  secondaryListingCount: Int!
+
+  """
+  The short name of the category used in its URL.
+  """
+  slug: String!
+
+  """
+  The HTTP URL for this Marketplace category.
+  """
+  url: URI!
+}
+
+"""
+A listing in the GitHub integration marketplace.
+"""
+type MarketplaceListing implements Node {
+  """
+  The GitHub App this listing represents.
+  """
+  app: App
+
+  """
+  URL to the listing owner's company site.
+  """
+  companyUrl: URI
+
+  """
+  The HTTP path for configuring access to the listing's integration or OAuth app
+  """
+  configurationResourcePath: URI!
+
+  """
+  The HTTP URL for configuring access to the listing's integration or OAuth app
+  """
+  configurationUrl: URI!
+
+  """
+  URL to the listing's documentation.
+  """
+  documentationUrl: URI
+
+  """
+  The listing's detailed description.
+  """
+  extendedDescription: String
+
+  """
+  The listing's detailed description rendered to HTML.
+  """
+  extendedDescriptionHTML: HTML!
+
+  """
+  The listing's introductory description.
+  """
+  fullDescription: String!
+
+  """
+  The listing's introductory description rendered to HTML.
+  """
+  fullDescriptionHTML: HTML!
+
+  """
+  Does this listing have any plans with a free trial?
+  """
+  hasPublishedFreeTrialPlans: Boolean!
+
+  """
+  Does this listing have a terms of service link?
+  """
+  hasTermsOfService: Boolean!
+
+  """
+  A technical description of how this app works with GitHub.
+  """
+  howItWorks: String
+
+  """
+  The listing's technical description rendered to HTML.
+  """
+  howItWorksHTML: HTML!
+  id: ID!
+
+  """
+  URL to install the product to the viewer's account or organization.
+  """
+  installationUrl: URI
+
+  """
+  Whether this listing's app has been installed for the current viewer
+  """
+  installedForViewer: Boolean!
+
+  """
+  Whether this listing has been removed from the Marketplace.
+  """
+  isArchived: Boolean!
+
+  """
+  Whether this listing is still an editable draft that has not been submitted
+  for review and is not publicly visible in the Marketplace.
+  """
+  isDraft: Boolean!
+
+  """
+  Whether the product this listing represents is available as part of a paid plan.
+  """
+  isPaid: Boolean!
+
+  """
+  Whether this listing has been approved for display in the Marketplace.
+  """
+  isPublic: Boolean!
+
+  """
+  Whether this listing has been rejected by GitHub for display in the Marketplace.
+  """
+  isRejected: Boolean!
+
+  """
+  Whether this listing has been approved for unverified display in the Marketplace.
+  """
+  isUnverified: Boolean!
+
+  """
+  Whether this draft listing has been submitted for review for approval to be unverified in the Marketplace.
+  """
+  isUnverifiedPending: Boolean!
+
+  """
+  Whether this draft listing has been submitted for review from GitHub for approval to be verified in the Marketplace.
+  """
+  isVerificationPendingFromDraft: Boolean!
+
+  """
+  Whether this unverified listing has been submitted for review from GitHub for approval to be verified in the Marketplace.
+  """
+  isVerificationPendingFromUnverified: Boolean!
+
+  """
+  Whether this listing has been approved for verified display in the Marketplace.
+  """
+  isVerified: Boolean!
+
+  """
+  The hex color code, without the leading '#', for the logo background.
+  """
+  logoBackgroundColor: String!
+
+  """
+  URL for the listing's logo image.
+  """
+  logoUrl(
+    """
+    The size in pixels of the resulting square image.
+    """
+    size: Int = 400
+  ): URI
+
+  """
+  The listing's full name.
+  """
+  name: String!
+
+  """
+  The listing's very short description without a trailing period or ampersands.
+  """
+  normalizedShortDescription: String!
+
+  """
+  URL to the listing's detailed pricing.
+  """
+  pricingUrl: URI
+
+  """
+  The category that best describes the listing.
+  """
+  primaryCategory: MarketplaceCategory!
+
+  """
+  URL to the listing's privacy policy, may return an empty string for listings that do not require a privacy policy URL.
+  """
+  privacyPolicyUrl: URI!
+
+  """
+  The HTTP path for the Marketplace listing.
+  """
+  resourcePath: URI!
+
+  """
+  The URLs for the listing's screenshots.
+  """
+  screenshotUrls: [String]!
+
+  """
+  An alternate category that describes the listing.
+  """
+  secondaryCategory: MarketplaceCategory
+
+  """
+  The listing's very short description.
+  """
+  shortDescription: String!
+
+  """
+  The short name of the listing used in its URL.
+  """
+  slug: String!
+
+  """
+  URL to the listing's status page.
+  """
+  statusUrl: URI
+
+  """
+  An email address for support for this listing's app.
+  """
+  supportEmail: String
+
+  """
+  Either a URL or an email address for support for this listing's app, may
+  return an empty string for listings that do not require a support URL.
+  """
+  supportUrl: URI!
+
+  """
+  URL to the listing's terms of service.
+  """
+  termsOfServiceUrl: URI
+
+  """
+  The HTTP URL for the Marketplace listing.
+  """
+  url: URI!
+
+  """
+  Can the current viewer add plans for this Marketplace listing.
+  """
+  viewerCanAddPlans: Boolean!
+
+  """
+  Can the current viewer approve this Marketplace listing.
+  """
+  viewerCanApprove: Boolean!
+
+  """
+  Can the current viewer delist this Marketplace listing.
+  """
+  viewerCanDelist: Boolean!
+
+  """
+  Can the current viewer edit this Marketplace listing.
+  """
+  viewerCanEdit: Boolean!
+
+  """
+  Can the current viewer edit the primary and secondary category of this
+  Marketplace listing.
+  """
+  viewerCanEditCategories: Boolean!
+
+  """
+  Can the current viewer edit the plans for this Marketplace listing.
+  """
+  viewerCanEditPlans: Boolean!
+
+  """
+  Can the current viewer return this Marketplace listing to draft state
+  so it becomes editable again.
+  """
+  viewerCanRedraft: Boolean!
+
+  """
+  Can the current viewer reject this Marketplace listing by returning it to
+  an editable draft state or rejecting it entirely.
+  """
+  viewerCanReject: Boolean!
+
+  """
+  Can the current viewer request this listing be reviewed for display in
+  the Marketplace as verified.
+  """
+  viewerCanRequestApproval: Boolean!
+
+  """
+  Indicates whether the current user has an active subscription to this Marketplace listing.
+  """
+  viewerHasPurchased: Boolean!
+
+  """
+  Indicates if the current user has purchased a subscription to this Marketplace listing
+  for all of the organizations the user owns.
+  """
+  viewerHasPurchasedForAllOrganizations: Boolean!
+
+  """
+  Does the current viewer role allow them to administer this Marketplace listing.
+  """
+  viewerIsListingAdmin: Boolean!
+}
+
+"""
+Look up Marketplace Listings
+"""
+type MarketplaceListingConnection {
+  """
+  A list of edges.
+  """
+  edges: [MarketplaceListingEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [MarketplaceListing]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type MarketplaceListingEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: MarketplaceListing
+}
+
+"""
+Entities that have members who can set status messages.
+"""
+interface MemberStatusable {
+  """
+  Get the status messages members of this entity have set that are either public or visible only to the organization.
+  """
+  memberStatuses(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for user statuses returned from the connection.
+    """
+    orderBy: UserStatusOrder = { field: UPDATED_AT, direction: DESC }
+  ): UserStatusConnection!
+}
+
+"""
+Audit log entry for a members_can_delete_repos.clear event.
+"""
+type MembersCanDeleteReposClearAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a members_can_delete_repos.disable event.
+"""
+type MembersCanDeleteReposDisableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a members_can_delete_repos.enable event.
+"""
+type MembersCanDeleteReposEnableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Represents a 'mentioned' event on a given issue or pull request.
+"""
+type MentionedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+}
+
+"""
+Autogenerated input type of MergeBranch
+"""
+input MergeBranchInput {
+  """
+  The email address to associate with this commit.
+  """
+  authorEmail: String
+
+  """
+  The name of the base branch that the provided head will be merged into.
+  """
+  base: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Message to use for the merge commit. If omitted, a default will be used.
+  """
+  commitMessage: String
+
+  """
+  The head to merge into the base branch. This can be a branch name or a commit GitObjectID.
+  """
+  head: String!
+
+  """
+  The Node ID of the Repository containing the base branch that will be modified.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of MergeBranch
+"""
+type MergeBranchPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The resulting merge Commit.
+  """
+  mergeCommit: Commit
+}
+
+"""
+Autogenerated input type of MergePullRequest
+"""
+input MergePullRequestInput {
+  """
+  The email address to associate with this merge.
+  """
+  authorEmail: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Commit body to use for the merge commit; if omitted, a default message will be used
+  """
+  commitBody: String
+
+  """
+  Commit headline to use for the merge commit; if omitted, a default message will be used.
+  """
+  commitHeadline: String
+
+  """
+  OID that the pull request head ref must match to allow merge; if omitted, no check is performed.
+  """
+  expectedHeadOid: GitObjectID
+
+  """
+  The merge method to use. If omitted, defaults to 'MERGE'
+  """
+  mergeMethod: PullRequestMergeMethod = MERGE
+
+  """
+  ID of the pull request to be merged.
+  """
+  pullRequestId: ID! @possibleTypes(concreteTypes: ["PullRequest"])
+}
+
+"""
+Autogenerated return type of MergePullRequest
+"""
+type MergePullRequestPayload {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The pull request that was merged.
+  """
+  pullRequest: PullRequest
+}
+
+"""
+Detailed status information about a pull request merge.
+"""
+enum MergeStateStatus {
+  """
+  The head ref is out of date.
+  """
+  BEHIND
+
+  """
+  The merge is blocked.
+  """
+  BLOCKED
+
+  """
+  Mergeable and passing commit status.
+  """
+  CLEAN
+
+  """
+  The merge commit cannot be cleanly created.
+  """
+  DIRTY
+
+  """
+  The merge is blocked due to the pull request being a draft.
+  """
+  DRAFT
+
+  """
+  Mergeable with passing commit status and pre-receive hooks.
+  """
+  HAS_HOOKS
+
+  """
+  The state cannot currently be determined.
+  """
+  UNKNOWN
+
+  """
+  Mergeable with non-passing commit status.
+  """
+  UNSTABLE
+}
+
+"""
+Whether or not a PullRequest can be merged.
+"""
+enum MergeableState {
+  """
+  The pull request cannot be merged due to merge conflicts.
+  """
+  CONFLICTING
+
+  """
+  The pull request can be merged.
+  """
+  MERGEABLE
+
+  """
+  The mergeability of the pull request is still being calculated.
+  """
+  UNKNOWN
+}
+
+"""
+Represents a 'merged' event on a given pull request.
+"""
+type MergedEvent implements Node & UniformResourceLocatable {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the commit associated with the `merge` event.
+  """
+  commit: Commit
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the Ref associated with the `merge` event.
+  """
+  mergeRef: Ref
+
+  """
+  Identifies the name of the Ref associated with the `merge` event.
+  """
+  mergeRefName: String!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The HTTP path for this merged event.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this merged event.
+  """
+  url: URI!
+}
+
+"""
+Represents a Milestone object on a given repository.
+"""
+type Milestone implements Closable & Node & UniformResourceLocatable {
+  """
+  `true` if the object is closed (definition of closed may depend on type)
+  """
+  closed: Boolean!
+
+  """
+  Identifies the date and time when the object was closed.
+  """
+  closedAt: DateTime
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the actor who created the milestone.
+  """
+  creator: Actor
+
+  """
+  Identifies the description of the milestone.
+  """
+  description: String
+
+  """
+  Identifies the due date of the milestone.
+  """
+  dueOn: DateTime
+  id: ID!
+
+  """
+  Just for debugging on review-lab
+  """
+  issuePrioritiesDebug: String!
+
+  """
+  A list of issues associated with the milestone.
+  """
+  issues(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Filtering options for issues returned from the connection.
+    """
+    filterBy: IssueFilters
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for issues returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the issues by.
+    """
+    states: [IssueState!]
+  ): IssueConnection!
+
+  """
+  Identifies the number of the milestone.
+  """
+  number: Int!
+
+  """
+  A list of pull requests associated with the milestone.
+  """
+  pullRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    The base ref name to filter the pull requests by.
+    """
+    baseRefName: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    The head ref name to filter the pull requests by.
+    """
+    headRefName: String
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pull requests returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the pull requests by.
+    """
+    states: [PullRequestState!]
+  ): PullRequestConnection!
+
+  """
+  The repository associated with this milestone.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this milestone
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the state of the milestone.
+  """
+  state: MilestoneState!
+
+  """
+  Identifies the title of the milestone.
+  """
+  title: String!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this milestone
+  """
+  url: URI!
+}
+
+"""
+The connection type for Milestone.
+"""
+type MilestoneConnection {
+  """
+  A list of edges.
+  """
+  edges: [MilestoneEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Milestone]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type MilestoneEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Milestone
+}
+
+"""
+Types that can be inside a Milestone.
+"""
+union MilestoneItem = Issue | PullRequest
+
+"""
+Ordering options for milestone connections.
+"""
+input MilestoneOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order milestones by.
+  """
+  field: MilestoneOrderField!
+}
+
+"""
+Properties by which milestone connections can be ordered.
+"""
+enum MilestoneOrderField {
+  """
+  Order milestones by when they were created.
+  """
+  CREATED_AT
+
+  """
+  Order milestones by when they are due.
+  """
+  DUE_DATE
+
+  """
+  Order milestones by their number.
+  """
+  NUMBER
+
+  """
+  Order milestones by when they were last updated.
+  """
+  UPDATED_AT
+}
+
+"""
+The possible states of a milestone.
+"""
+enum MilestoneState {
+  """
+  A milestone that has been closed.
+  """
+  CLOSED
+
+  """
+  A milestone that is still open.
+  """
+  OPEN
+}
+
+"""
+Represents a 'milestoned' event on a given issue or pull request.
+"""
+type MilestonedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the milestone title associated with the 'milestoned' event.
+  """
+  milestoneTitle: String!
+
+  """
+  Object referenced by event.
+  """
+  subject: MilestoneItem!
+}
+
+"""
+Entities that can be minimized.
+"""
+interface Minimizable {
+  """
+  Returns whether or not a comment has been minimized.
+  """
+  isMinimized: Boolean!
+
+  """
+  Returns why the comment was minimized.
+  """
+  minimizedReason: String
+
+  """
+  Check if the current viewer can minimize this object.
+  """
+  viewerCanMinimize: Boolean!
+}
+
+"""
+Autogenerated input type of MinimizeComment
+"""
+input MinimizeCommentInput {
+  """
+  The classification of comment
+  """
+  classifier: ReportedContentClassifiers!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the subject to modify.
+  """
+  subjectId: ID!
+  @possibleTypes(
+    concreteTypes: [
+      "CommitComment"
+      "GistComment"
+      "IssueComment"
+      "PullRequestReviewComment"
+    ]
+    abstractType: "Minimizable"
+  )
+}
+
+"""
+Autogenerated return type of MinimizeComment
+"""
+type MinimizeCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The comment that was minimized.
+  """
+  minimizedComment: Minimizable
+}
+
+"""
+Autogenerated input type of MoveProjectCard
+"""
+input MoveProjectCardInput {
+  """
+  Place the new card after the card with this id. Pass null to place it at the top.
+  """
+  afterCardId: ID @possibleTypes(concreteTypes: ["ProjectCard"])
+
+  """
+  The id of the card to move.
+  """
+  cardId: ID! @possibleTypes(concreteTypes: ["ProjectCard"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The id of the column to move it into.
+  """
+  columnId: ID! @possibleTypes(concreteTypes: ["ProjectColumn"])
+}
+
+"""
+Autogenerated return type of MoveProjectCard
+"""
+type MoveProjectCardPayload {
+  """
+  The new edge of the moved card.
+  """
+  cardEdge: ProjectCardEdge
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of MoveProjectColumn
+"""
+input MoveProjectColumnInput {
+  """
+  Place the new column after the column with this id. Pass null to place it at the front.
+  """
+  afterColumnId: ID @possibleTypes(concreteTypes: ["ProjectColumn"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The id of the column to move.
+  """
+  columnId: ID! @possibleTypes(concreteTypes: ["ProjectColumn"])
+}
+
+"""
+Autogenerated return type of MoveProjectColumn
+"""
+type MoveProjectColumnPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new edge of the moved column.
+  """
+  columnEdge: ProjectColumnEdge
+}
+
+"""
+Represents a 'moved_columns_in_project' event on a given issue or pull request.
+"""
+type MovedColumnsInProjectEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  Column name the issue or pull request was moved from.
+  """
+  previousProjectColumnName: String! @preview(toggledBy: "starfox-preview")
+
+  """
+  Project referenced by event.
+  """
+  project: Project @preview(toggledBy: "starfox-preview")
+
+  """
+  Project card referenced by this project event.
+  """
+  projectCard: ProjectCard @preview(toggledBy: "starfox-preview")
+
+  """
+  Column name the issue or pull request was moved to.
+  """
+  projectColumnName: String! @preview(toggledBy: "starfox-preview")
+}
+
+"""
+The root query for implementing GraphQL mutations.
+"""
+type Mutation {
+  """
+  Accepts a pending invitation for a user to become an administrator of an enterprise.
+  """
+  acceptEnterpriseAdministratorInvitation(
+    input: AcceptEnterpriseAdministratorInvitationInput!
+  ): AcceptEnterpriseAdministratorInvitationPayload
+
+  """
+  Applies a suggested topic to the repository.
+  """
+  acceptTopicSuggestion(
+    input: AcceptTopicSuggestionInput!
+  ): AcceptTopicSuggestionPayload
+
+  """
+  Adds assignees to an assignable object.
+  """
+  addAssigneesToAssignable(
+    input: AddAssigneesToAssignableInput!
+  ): AddAssigneesToAssignablePayload
+
+  """
+  Adds a comment to an Issue or Pull Request.
+  """
+  addComment(input: AddCommentInput!): AddCommentPayload
+
+  """
+  Adds labels to a labelable object.
+  """
+  addLabelsToLabelable(
+    input: AddLabelsToLabelableInput!
+  ): AddLabelsToLabelablePayload
+
+  """
+  Adds a card to a ProjectColumn. Either `contentId` or `note` must be provided but **not** both.
+  """
+  addProjectCard(input: AddProjectCardInput!): AddProjectCardPayload
+
+  """
+  Adds a column to a Project.
+  """
+  addProjectColumn(input: AddProjectColumnInput!): AddProjectColumnPayload
+
+  """
+  Adds a review to a Pull Request.
+  """
+  addPullRequestReview(
+    input: AddPullRequestReviewInput!
+  ): AddPullRequestReviewPayload
+
+  """
+  Adds a comment to a review.
+  """
+  addPullRequestReviewComment(
+    input: AddPullRequestReviewCommentInput!
+  ): AddPullRequestReviewCommentPayload
+
+  """
+  Adds a new thread to a pending Pull Request Review.
+  """
+  addPullRequestReviewThread(
+    input: AddPullRequestReviewThreadInput!
+  ): AddPullRequestReviewThreadPayload
+
+  """
+  Adds a reaction to a subject.
+  """
+  addReaction(input: AddReactionInput!): AddReactionPayload
+
+  """
+  Adds a star to a Starrable.
+  """
+  addStar(input: AddStarInput!): AddStarPayload
+
+  """
+  Marks a repository as archived.
+  """
+  archiveRepository(input: ArchiveRepositoryInput!): ArchiveRepositoryPayload
+
+  """
+  Cancels a pending invitation for an administrator to join an enterprise.
+  """
+  cancelEnterpriseAdminInvitation(
+    input: CancelEnterpriseAdminInvitationInput!
+  ): CancelEnterpriseAdminInvitationPayload
+
+  """
+  Update your status on GitHub.
+  """
+  changeUserStatus(input: ChangeUserStatusInput!): ChangeUserStatusPayload
+
+  """
+  Clears all labels from a labelable object.
+  """
+  clearLabelsFromLabelable(
+    input: ClearLabelsFromLabelableInput!
+  ): ClearLabelsFromLabelablePayload
+
+  """
+  Creates a new project by cloning configuration from an existing project.
+  """
+  cloneProject(input: CloneProjectInput!): CloneProjectPayload
+
+  """
+  Create a new repository with the same files and directory structure as a template repository.
+  """
+  cloneTemplateRepository(
+    input: CloneTemplateRepositoryInput!
+  ): CloneTemplateRepositoryPayload
+
+  """
+  Close an issue.
+  """
+  closeIssue(input: CloseIssueInput!): CloseIssuePayload
+
+  """
+  Close a pull request.
+  """
+  closePullRequest(input: ClosePullRequestInput!): ClosePullRequestPayload
+
+  """
+  Convert a project note card to one associated with a newly created issue.
+  """
+  convertProjectCardNoteToIssue(
+    input: ConvertProjectCardNoteToIssueInput!
+  ): ConvertProjectCardNoteToIssuePayload
+
+  """
+  Create a new branch protection rule
+  """
+  createBranchProtectionRule(
+    input: CreateBranchProtectionRuleInput!
+  ): CreateBranchProtectionRulePayload
+
+  """
+  Create a check run.
+  """
+  createCheckRun(input: CreateCheckRunInput!): CreateCheckRunPayload
+  @preview(toggledBy: "antiope-preview")
+
+  """
+  Create a check suite
+  """
+  createCheckSuite(input: CreateCheckSuiteInput!): CreateCheckSuitePayload
+  @preview(toggledBy: "antiope-preview")
+
+  """
+  Create a content attachment.
+  """
+  createContentAttachment(
+    input: CreateContentAttachmentInput!
+  ): CreateContentAttachmentPayload @preview(toggledBy: "corsair-preview")
+
+  """
+  Creates a new deployment event.
+  """
+  createDeployment(input: CreateDeploymentInput!): CreateDeploymentPayload
+  @preview(toggledBy: "flash-preview")
+
+  """
+  Create a deployment status.
+  """
+  createDeploymentStatus(
+    input: CreateDeploymentStatusInput!
+  ): CreateDeploymentStatusPayload @preview(toggledBy: "flash-preview")
+
+  """
+  Creates an organization as part of an enterprise account.
+  """
+  createEnterpriseOrganization(
+    input: CreateEnterpriseOrganizationInput!
+  ): CreateEnterpriseOrganizationPayload
+
+  """
+  Creates a new IP allow list entry.
+  """
+  createIpAllowListEntry(
+    input: CreateIpAllowListEntryInput!
+  ): CreateIpAllowListEntryPayload
+
+  """
+  Creates a new issue.
+  """
+  createIssue(input: CreateIssueInput!): CreateIssuePayload
+
+  """
+  Creates a new label.
+  """
+  createLabel(input: CreateLabelInput!): CreateLabelPayload
+  @preview(toggledBy: "bane-preview")
+
+  """
+  Creates a new project.
+  """
+  createProject(input: CreateProjectInput!): CreateProjectPayload
+
+  """
+  Create a new pull request
+  """
+  createPullRequest(input: CreatePullRequestInput!): CreatePullRequestPayload
+
+  """
+  Create a new Git Ref.
+  """
+  createRef(input: CreateRefInput!): CreateRefPayload
+
+  """
+  Create a new repository.
+  """
+  createRepository(input: CreateRepositoryInput!): CreateRepositoryPayload
+
+  """
+  Creates a new team discussion.
+  """
+  createTeamDiscussion(
+    input: CreateTeamDiscussionInput!
+  ): CreateTeamDiscussionPayload
+
+  """
+  Creates a new team discussion comment.
+  """
+  createTeamDiscussionComment(
+    input: CreateTeamDiscussionCommentInput!
+  ): CreateTeamDiscussionCommentPayload
+
+  """
+  Rejects a suggested topic for the repository.
+  """
+  declineTopicSuggestion(
+    input: DeclineTopicSuggestionInput!
+  ): DeclineTopicSuggestionPayload
+
+  """
+  Delete a branch protection rule
+  """
+  deleteBranchProtectionRule(
+    input: DeleteBranchProtectionRuleInput!
+  ): DeleteBranchProtectionRulePayload
+
+  """
+  Deletes a deployment.
+  """
+  deleteDeployment(input: DeleteDeploymentInput!): DeleteDeploymentPayload
+
+  """
+  Deletes an IP allow list entry.
+  """
+  deleteIpAllowListEntry(
+    input: DeleteIpAllowListEntryInput!
+  ): DeleteIpAllowListEntryPayload
+
+  """
+  Deletes an Issue object.
+  """
+  deleteIssue(input: DeleteIssueInput!): DeleteIssuePayload
+
+  """
+  Deletes an IssueComment object.
+  """
+  deleteIssueComment(input: DeleteIssueCommentInput!): DeleteIssueCommentPayload
+
+  """
+  Deletes a label.
+  """
+  deleteLabel(input: DeleteLabelInput!): DeleteLabelPayload
+  @preview(toggledBy: "bane-preview")
+
+  """
+  Delete a package version.
+  """
+  deletePackageVersion(
+    input: DeletePackageVersionInput!
+  ): DeletePackageVersionPayload @preview(toggledBy: "package-deletes-preview")
+
+  """
+  Deletes a project.
+  """
+  deleteProject(input: DeleteProjectInput!): DeleteProjectPayload
+
+  """
+  Deletes a project card.
+  """
+  deleteProjectCard(input: DeleteProjectCardInput!): DeleteProjectCardPayload
+
+  """
+  Deletes a project column.
+  """
+  deleteProjectColumn(
+    input: DeleteProjectColumnInput!
+  ): DeleteProjectColumnPayload
+
+  """
+  Deletes a pull request review.
+  """
+  deletePullRequestReview(
+    input: DeletePullRequestReviewInput!
+  ): DeletePullRequestReviewPayload
+
+  """
+  Deletes a pull request review comment.
+  """
+  deletePullRequestReviewComment(
+    input: DeletePullRequestReviewCommentInput!
+  ): DeletePullRequestReviewCommentPayload
+
+  """
+  Delete a Git Ref.
+  """
+  deleteRef(input: DeleteRefInput!): DeleteRefPayload
+
+  """
+  Deletes a team discussion.
+  """
+  deleteTeamDiscussion(
+    input: DeleteTeamDiscussionInput!
+  ): DeleteTeamDiscussionPayload
+
+  """
+  Deletes a team discussion comment.
+  """
+  deleteTeamDiscussionComment(
+    input: DeleteTeamDiscussionCommentInput!
+  ): DeleteTeamDiscussionCommentPayload
+
+  """
+  Dismisses an approved or rejected pull request review.
+  """
+  dismissPullRequestReview(
+    input: DismissPullRequestReviewInput!
+  ): DismissPullRequestReviewPayload
+
+  """
+  Follow a user.
+  """
+  followUser(input: FollowUserInput!): FollowUserPayload
+
+  """
+  Creates a new project by importing columns and a list of issues/PRs.
+  """
+  importProject(input: ImportProjectInput!): ImportProjectPayload
+  @preview(toggledBy: "slothette-preview")
+
+  """
+  Invite someone to become an administrator of the enterprise.
+  """
+  inviteEnterpriseAdmin(
+    input: InviteEnterpriseAdminInput!
+  ): InviteEnterpriseAdminPayload
+
+  """
+  Creates a repository link for a project.
+  """
+  linkRepositoryToProject(
+    input: LinkRepositoryToProjectInput!
+  ): LinkRepositoryToProjectPayload
+
+  """
+  Lock a lockable object
+  """
+  lockLockable(input: LockLockableInput!): LockLockablePayload
+
+  """
+  Marks a pull request ready for review.
+  """
+  markPullRequestReadyForReview(
+    input: MarkPullRequestReadyForReviewInput!
+  ): MarkPullRequestReadyForReviewPayload
+
+  """
+  Merge a head into a branch.
+  """
+  mergeBranch(input: MergeBranchInput!): MergeBranchPayload
+
+  """
+  Merge a pull request.
+  """
+  mergePullRequest(input: MergePullRequestInput!): MergePullRequestPayload
+
+  """
+  Minimizes a comment on an Issue, Commit, Pull Request, or Gist
+  """
+  minimizeComment(input: MinimizeCommentInput!): MinimizeCommentPayload
+
+  """
+  Moves a project card to another place.
+  """
+  moveProjectCard(input: MoveProjectCardInput!): MoveProjectCardPayload
+
+  """
+  Moves a project column to another place.
+  """
+  moveProjectColumn(input: MoveProjectColumnInput!): MoveProjectColumnPayload
+
+  """
+  Pin an issue to a repository
+  """
+  pinIssue(input: PinIssueInput!): PinIssuePayload
+  @preview(toggledBy: "elektra-preview")
+
+  """
+  Regenerates the identity provider recovery codes for an enterprise
+  """
+  regenerateEnterpriseIdentityProviderRecoveryCodes(
+    input: RegenerateEnterpriseIdentityProviderRecoveryCodesInput!
+  ): RegenerateEnterpriseIdentityProviderRecoveryCodesPayload
+
+  """
+  Removes assignees from an assignable object.
+  """
+  removeAssigneesFromAssignable(
+    input: RemoveAssigneesFromAssignableInput!
+  ): RemoveAssigneesFromAssignablePayload
+
+  """
+  Removes an administrator from the enterprise.
+  """
+  removeEnterpriseAdmin(
+    input: RemoveEnterpriseAdminInput!
+  ): RemoveEnterpriseAdminPayload
+
+  """
+  Removes the identity provider from an enterprise
+  """
+  removeEnterpriseIdentityProvider(
+    input: RemoveEnterpriseIdentityProviderInput!
+  ): RemoveEnterpriseIdentityProviderPayload
+
+  """
+  Removes an organization from the enterprise
+  """
+  removeEnterpriseOrganization(
+    input: RemoveEnterpriseOrganizationInput!
+  ): RemoveEnterpriseOrganizationPayload
+
+  """
+  Removes labels from a Labelable object.
+  """
+  removeLabelsFromLabelable(
+    input: RemoveLabelsFromLabelableInput!
+  ): RemoveLabelsFromLabelablePayload
+
+  """
+  Removes outside collaborator from all repositories in an organization.
+  """
+  removeOutsideCollaborator(
+    input: RemoveOutsideCollaboratorInput!
+  ): RemoveOutsideCollaboratorPayload
+
+  """
+  Removes a reaction from a subject.
+  """
+  removeReaction(input: RemoveReactionInput!): RemoveReactionPayload
+
+  """
+  Removes a star from a Starrable.
+  """
+  removeStar(input: RemoveStarInput!): RemoveStarPayload
+
+  """
+  Reopen a issue.
+  """
+  reopenIssue(input: ReopenIssueInput!): ReopenIssuePayload
+
+  """
+  Reopen a pull request.
+  """
+  reopenPullRequest(input: ReopenPullRequestInput!): ReopenPullRequestPayload
+
+  """
+  Set review requests on a pull request.
+  """
+  requestReviews(input: RequestReviewsInput!): RequestReviewsPayload
+
+  """
+  Rerequests an existing check suite.
+  """
+  rerequestCheckSuite(
+    input: RerequestCheckSuiteInput!
+  ): RerequestCheckSuitePayload @preview(toggledBy: "antiope-preview")
+
+  """
+  Marks a review thread as resolved.
+  """
+  resolveReviewThread(
+    input: ResolveReviewThreadInput!
+  ): ResolveReviewThreadPayload
+
+  """
+  Creates or updates the identity provider for an enterprise.
+  """
+  setEnterpriseIdentityProvider(
+    input: SetEnterpriseIdentityProviderInput!
+  ): SetEnterpriseIdentityProviderPayload
+
+  """
+  Submits a pending pull request review.
+  """
+  submitPullRequestReview(
+    input: SubmitPullRequestReviewInput!
+  ): SubmitPullRequestReviewPayload
+
+  """
+  Transfer an issue to a different repository
+  """
+  transferIssue(input: TransferIssueInput!): TransferIssuePayload
+
+  """
+  Unarchives a repository.
+  """
+  unarchiveRepository(
+    input: UnarchiveRepositoryInput!
+  ): UnarchiveRepositoryPayload
+
+  """
+  Unfollow a user.
+  """
+  unfollowUser(input: UnfollowUserInput!): UnfollowUserPayload
+
+  """
+  Deletes a repository link from a project.
+  """
+  unlinkRepositoryFromProject(
+    input: UnlinkRepositoryFromProjectInput!
+  ): UnlinkRepositoryFromProjectPayload
+
+  """
+  Unlock a lockable object
+  """
+  unlockLockable(input: UnlockLockableInput!): UnlockLockablePayload
+
+  """
+  Unmark an issue as a duplicate of another issue.
+  """
+  unmarkIssueAsDuplicate(
+    input: UnmarkIssueAsDuplicateInput!
+  ): UnmarkIssueAsDuplicatePayload
+
+  """
+  Unminimizes a comment on an Issue, Commit, Pull Request, or Gist
+  """
+  unminimizeComment(input: UnminimizeCommentInput!): UnminimizeCommentPayload
+
+  """
+  Unpin a pinned issue from a repository
+  """
+  unpinIssue(input: UnpinIssueInput!): UnpinIssuePayload
+  @preview(toggledBy: "elektra-preview")
+
+  """
+  Marks a review thread as unresolved.
+  """
+  unresolveReviewThread(
+    input: UnresolveReviewThreadInput!
+  ): UnresolveReviewThreadPayload
+
+  """
+  Create a new branch protection rule
+  """
+  updateBranchProtectionRule(
+    input: UpdateBranchProtectionRuleInput!
+  ): UpdateBranchProtectionRulePayload
+
+  """
+  Update a check run
+  """
+  updateCheckRun(input: UpdateCheckRunInput!): UpdateCheckRunPayload
+  @preview(toggledBy: "antiope-preview")
+
+  """
+  Modifies the settings of an existing check suite
+  """
+  updateCheckSuitePreferences(
+    input: UpdateCheckSuitePreferencesInput!
+  ): UpdateCheckSuitePreferencesPayload @preview(toggledBy: "antiope-preview")
+
+  """
+  Sets the action execution capability setting for an enterprise.
+  """
+  updateEnterpriseActionExecutionCapabilitySetting(
+    input: UpdateEnterpriseActionExecutionCapabilitySettingInput!
+  ): UpdateEnterpriseActionExecutionCapabilitySettingPayload
+
+  """
+  Updates the role of an enterprise administrator.
+  """
+  updateEnterpriseAdministratorRole(
+    input: UpdateEnterpriseAdministratorRoleInput!
+  ): UpdateEnterpriseAdministratorRolePayload
+
+  """
+  Sets whether private repository forks are enabled for an enterprise.
+  """
+  updateEnterpriseAllowPrivateRepositoryForkingSetting(
+    input: UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput!
+  ): UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload
+
+  """
+  Sets the default repository permission for organizations in an enterprise.
+  """
+  updateEnterpriseDefaultRepositoryPermissionSetting(
+    input: UpdateEnterpriseDefaultRepositoryPermissionSettingInput!
+  ): UpdateEnterpriseDefaultRepositoryPermissionSettingPayload
+
+  """
+  Sets whether organization members with admin permissions on a repository can change repository visibility.
+  """
+  updateEnterpriseMembersCanChangeRepositoryVisibilitySetting(
+    input: UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput!
+  ): UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload
+
+  """
+  Sets the members can create repositories setting for an enterprise.
+  """
+  updateEnterpriseMembersCanCreateRepositoriesSetting(
+    input: UpdateEnterpriseMembersCanCreateRepositoriesSettingInput!
+  ): UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload
+
+  """
+  Sets the members can delete issues setting for an enterprise.
+  """
+  updateEnterpriseMembersCanDeleteIssuesSetting(
+    input: UpdateEnterpriseMembersCanDeleteIssuesSettingInput!
+  ): UpdateEnterpriseMembersCanDeleteIssuesSettingPayload
+
+  """
+  Sets the members can delete repositories setting for an enterprise.
+  """
+  updateEnterpriseMembersCanDeleteRepositoriesSetting(
+    input: UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput!
+  ): UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload
+
+  """
+  Sets whether members can invite collaborators are enabled for an enterprise.
+  """
+  updateEnterpriseMembersCanInviteCollaboratorsSetting(
+    input: UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput!
+  ): UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload
+
+  """
+  Sets whether or not an organization admin can make purchases.
+  """
+  updateEnterpriseMembersCanMakePurchasesSetting(
+    input: UpdateEnterpriseMembersCanMakePurchasesSettingInput!
+  ): UpdateEnterpriseMembersCanMakePurchasesSettingPayload
+
+  """
+  Sets the members can update protected branches setting for an enterprise.
+  """
+  updateEnterpriseMembersCanUpdateProtectedBranchesSetting(
+    input: UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput!
+  ): UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload
+
+  """
+  Sets the members can view dependency insights for an enterprise.
+  """
+  updateEnterpriseMembersCanViewDependencyInsightsSetting(
+    input: UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput!
+  ): UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload
+
+  """
+  Sets whether organization projects are enabled for an enterprise.
+  """
+  updateEnterpriseOrganizationProjectsSetting(
+    input: UpdateEnterpriseOrganizationProjectsSettingInput!
+  ): UpdateEnterpriseOrganizationProjectsSettingPayload
+
+  """
+  Updates an enterprise's profile.
+  """
+  updateEnterpriseProfile(
+    input: UpdateEnterpriseProfileInput!
+  ): UpdateEnterpriseProfilePayload
+
+  """
+  Sets whether repository projects are enabled for a enterprise.
+  """
+  updateEnterpriseRepositoryProjectsSetting(
+    input: UpdateEnterpriseRepositoryProjectsSettingInput!
+  ): UpdateEnterpriseRepositoryProjectsSettingPayload
+
+  """
+  Sets whether team discussions are enabled for an enterprise.
+  """
+  updateEnterpriseTeamDiscussionsSetting(
+    input: UpdateEnterpriseTeamDiscussionsSettingInput!
+  ): UpdateEnterpriseTeamDiscussionsSettingPayload
+
+  """
+  Sets whether two factor authentication is required for all users in an enterprise.
+  """
+  updateEnterpriseTwoFactorAuthenticationRequiredSetting(
+    input: UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput!
+  ): UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload
+
+  """
+  Sets whether an IP allow list is enabled on an owner.
+  """
+  updateIpAllowListEnabledSetting(
+    input: UpdateIpAllowListEnabledSettingInput!
+  ): UpdateIpAllowListEnabledSettingPayload
+
+  """
+  Updates an IP allow list entry.
+  """
+  updateIpAllowListEntry(
+    input: UpdateIpAllowListEntryInput!
+  ): UpdateIpAllowListEntryPayload
+
+  """
+  Updates an Issue.
+  """
+  updateIssue(input: UpdateIssueInput!): UpdateIssuePayload
+
+  """
+  Updates an IssueComment object.
+  """
+  updateIssueComment(input: UpdateIssueCommentInput!): UpdateIssueCommentPayload
+
+  """
+  Updates an existing label.
+  """
+  updateLabel(input: UpdateLabelInput!): UpdateLabelPayload
+  @preview(toggledBy: "bane-preview")
+
+  """
+  Updates an existing project.
+  """
+  updateProject(input: UpdateProjectInput!): UpdateProjectPayload
+
+  """
+  Updates an existing project card.
+  """
+  updateProjectCard(input: UpdateProjectCardInput!): UpdateProjectCardPayload
+
+  """
+  Updates an existing project column.
+  """
+  updateProjectColumn(
+    input: UpdateProjectColumnInput!
+  ): UpdateProjectColumnPayload
+
+  """
+  Update a pull request
+  """
+  updatePullRequest(input: UpdatePullRequestInput!): UpdatePullRequestPayload
+
+  """
+  Updates the body of a pull request review.
+  """
+  updatePullRequestReview(
+    input: UpdatePullRequestReviewInput!
+  ): UpdatePullRequestReviewPayload
+
+  """
+  Updates a pull request review comment.
+  """
+  updatePullRequestReviewComment(
+    input: UpdatePullRequestReviewCommentInput!
+  ): UpdatePullRequestReviewCommentPayload
+
+  """
+  Update a Git Ref.
+  """
+  updateRef(input: UpdateRefInput!): UpdateRefPayload
+
+  """
+  Creates, updates and/or deletes multiple refs in a repository.
+
+  This mutation takes a list of `RefUpdate`s and performs these updates
+  on the repository. All updates are performed atomically, meaning that
+  if one of them is rejected, no other ref will be modified.
+
+  `RefUpdate.beforeOid` specifies that the given reference needs to point
+  to the given value before performing any updates. A value of
+  `0000000000000000000000000000000000000000` can be used to verify that
+  the references should not exist.
+
+  `RefUpdate.afterOid` specifies the value that the given reference
+  will point to after performing all updates. A value of
+  `0000000000000000000000000000000000000000` can be used to delete a
+  reference.
+
+  If `RefUpdate.force` is set to `true`, a non-fast-forward updates
+  for the given reference will be allowed.
+  """
+  updateRefs(input: UpdateRefsInput!): UpdateRefsPayload
+  @preview(toggledBy: "update-refs-preview")
+
+  """
+  Update information about a repository.
+  """
+  updateRepository(input: UpdateRepositoryInput!): UpdateRepositoryPayload
+
+  """
+  Updates the state for subscribable subjects.
+  """
+  updateSubscription(input: UpdateSubscriptionInput!): UpdateSubscriptionPayload
+
+  """
+  Updates a team discussion.
+  """
+  updateTeamDiscussion(
+    input: UpdateTeamDiscussionInput!
+  ): UpdateTeamDiscussionPayload
+
+  """
+  Updates a discussion comment.
+  """
+  updateTeamDiscussionComment(
+    input: UpdateTeamDiscussionCommentInput!
+  ): UpdateTeamDiscussionCommentPayload
+
+  """
+  Updates team review assignment.
+  """
+  updateTeamReviewAssignment(
+    input: UpdateTeamReviewAssignmentInput!
+  ): UpdateTeamReviewAssignmentPayload @preview(toggledBy: "stone-crop-preview")
+
+  """
+  Replaces the repository's topics with the given topics.
+  """
+  updateTopics(input: UpdateTopicsInput!): UpdateTopicsPayload
+}
+
+"""
+An object with an ID.
+"""
+interface Node {
+  """
+  ID of the object.
+  """
+  id: ID!
+}
+
+"""
+Metadata for an audit entry with action oauth_application.*
+"""
+interface OauthApplicationAuditEntryData {
+  """
+  The name of the OAuth Application.
+  """
+  oauthApplicationName: String
+
+  """
+  The HTTP path for the OAuth Application
+  """
+  oauthApplicationResourcePath: URI
+
+  """
+  The HTTP URL for the OAuth Application
+  """
+  oauthApplicationUrl: URI
+}
+
+"""
+Audit log entry for a oauth_application.create event.
+"""
+type OauthApplicationCreateAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The application URL of the OAuth Application.
+  """
+  applicationUrl: URI
+
+  """
+  The callback URL of the OAuth Application.
+  """
+  callbackUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The name of the OAuth Application.
+  """
+  oauthApplicationName: String
+
+  """
+  The HTTP path for the OAuth Application
+  """
+  oauthApplicationResourcePath: URI
+
+  """
+  The HTTP URL for the OAuth Application
+  """
+  oauthApplicationUrl: URI
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The rate limit of the OAuth Application.
+  """
+  rateLimit: Int
+
+  """
+  The state of the OAuth Application.
+  """
+  state: OauthApplicationCreateAuditEntryState
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The state of an OAuth Application when it was created.
+"""
+enum OauthApplicationCreateAuditEntryState {
+  """
+  The OAuth Application was active and allowed to have OAuth Accesses.
+  """
+  ACTIVE
+
+  """
+  The OAuth Application was in the process of being deleted.
+  """
+  PENDING_DELETION
+
+  """
+  The OAuth Application was suspended from generating OAuth Accesses due to abuse or security concerns.
+  """
+  SUSPENDED
+}
+
+"""
+The corresponding operation type for the action
+"""
+enum OperationType {
+  """
+  An existing resource was accessed
+  """
+  ACCESS
+
+  """
+  A resource performed an authentication event
+  """
+  AUTHENTICATION
+
+  """
+  A new resource was created
+  """
+  CREATE
+
+  """
+  An existing resource was modified
+  """
+  MODIFY
+
+  """
+  An existing resource was removed
+  """
+  REMOVE
+
+  """
+  An existing resource was restored
+  """
+  RESTORE
+
+  """
+  An existing resource was transferred between multiple resources
+  """
+  TRANSFER
+}
+
+"""
+Possible directions in which to order a list of items when provided an `orderBy` argument.
+"""
+enum OrderDirection {
+  """
+  Specifies an ascending order for a given `orderBy` argument.
+  """
+  ASC
+
+  """
+  Specifies a descending order for a given `orderBy` argument.
+  """
+  DESC
+}
+
+"""
+Audit log entry for a org.add_billing_manager
+"""
+type OrgAddBillingManagerAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The email address used to invite a billing manager for the organization.
+  """
+  invitationEmail: String
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.add_member
+"""
+type OrgAddMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The permission level of the member added to the organization.
+  """
+  permission: OrgAddMemberAuditEntryPermission
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The permissions available to members on an Organization.
+"""
+enum OrgAddMemberAuditEntryPermission {
+  """
+  Can read, clone, push, and add collaborators to repositories.
+  """
+  ADMIN
+
+  """
+  Can read and clone repositories.
+  """
+  READ
+}
+
+"""
+Audit log entry for a org.block_user
+"""
+type OrgBlockUserAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The blocked user.
+  """
+  blockedUser: User
+
+  """
+  The username of the blocked user.
+  """
+  blockedUserName: String
+
+  """
+  The HTTP path for the blocked user.
+  """
+  blockedUserResourcePath: URI
+
+  """
+  The HTTP URL for the blocked user.
+  """
+  blockedUserUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.config.disable_collaborators_only event.
+"""
+type OrgConfigDisableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.config.enable_collaborators_only event.
+"""
+type OrgConfigEnableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.create event.
+"""
+type OrgCreateAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The billing plan for the Organization.
+  """
+  billingPlan: OrgCreateAuditEntryBillingPlan
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The billing plans available for organizations.
+"""
+enum OrgCreateAuditEntryBillingPlan {
+  """
+  Team Plan
+  """
+  BUSINESS
+
+  """
+  Enterprise Cloud Plan
+  """
+  BUSINESS_PLUS
+
+  """
+  Free Plan
+  """
+  FREE
+
+  """
+  Tiered Per Seat Plan
+  """
+  TIERED_PER_SEAT
+
+  """
+  Legacy Unlimited Plan
+  """
+  UNLIMITED
+}
+
+"""
+Audit log entry for a org.disable_oauth_app_restrictions event.
+"""
+type OrgDisableOauthAppRestrictionsAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.disable_saml event.
+"""
+type OrgDisableSamlAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The SAML provider's digest algorithm URL.
+  """
+  digestMethodUrl: URI
+  id: ID!
+
+  """
+  The SAML provider's issuer URL.
+  """
+  issuerUrl: URI
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The SAML provider's signature algorithm URL.
+  """
+  signatureMethodUrl: URI
+
+  """
+  The SAML provider's single sign-on URL.
+  """
+  singleSignOnUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.disable_two_factor_requirement event.
+"""
+type OrgDisableTwoFactorRequirementAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.enable_oauth_app_restrictions event.
+"""
+type OrgEnableOauthAppRestrictionsAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.enable_saml event.
+"""
+type OrgEnableSamlAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The SAML provider's digest algorithm URL.
+  """
+  digestMethodUrl: URI
+  id: ID!
+
+  """
+  The SAML provider's issuer URL.
+  """
+  issuerUrl: URI
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The SAML provider's signature algorithm URL.
+  """
+  signatureMethodUrl: URI
+
+  """
+  The SAML provider's single sign-on URL.
+  """
+  singleSignOnUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.enable_two_factor_requirement event.
+"""
+type OrgEnableTwoFactorRequirementAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.invite_member event.
+"""
+type OrgInviteMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The email address of the organization invitation.
+  """
+  email: String
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The organization invitation.
+  """
+  organizationInvitation: OrganizationInvitation
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.invite_to_business event.
+"""
+type OrgInviteToBusinessAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.oauth_app_access_approved event.
+"""
+type OrgOauthAppAccessApprovedAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The name of the OAuth Application.
+  """
+  oauthApplicationName: String
+
+  """
+  The HTTP path for the OAuth Application
+  """
+  oauthApplicationResourcePath: URI
+
+  """
+  The HTTP URL for the OAuth Application
+  """
+  oauthApplicationUrl: URI
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.oauth_app_access_denied event.
+"""
+type OrgOauthAppAccessDeniedAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The name of the OAuth Application.
+  """
+  oauthApplicationName: String
+
+  """
+  The HTTP path for the OAuth Application
+  """
+  oauthApplicationResourcePath: URI
+
+  """
+  The HTTP URL for the OAuth Application
+  """
+  oauthApplicationUrl: URI
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.oauth_app_access_requested event.
+"""
+type OrgOauthAppAccessRequestedAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The name of the OAuth Application.
+  """
+  oauthApplicationName: String
+
+  """
+  The HTTP path for the OAuth Application
+  """
+  oauthApplicationResourcePath: URI
+
+  """
+  The HTTP URL for the OAuth Application
+  """
+  oauthApplicationUrl: URI
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.remove_billing_manager event.
+"""
+type OrgRemoveBillingManagerAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The reason for the billing manager being removed.
+  """
+  reason: OrgRemoveBillingManagerAuditEntryReason
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The reason a billing manager was removed from an Organization.
+"""
+enum OrgRemoveBillingManagerAuditEntryReason {
+  """
+  SAML external identity missing
+  """
+  SAML_EXTERNAL_IDENTITY_MISSING
+
+  """
+  SAML SSO enforcement requires an external identity
+  """
+  SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY
+
+  """
+  The organization required 2FA of its billing managers and this user did not have 2FA enabled.
+  """
+  TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE
+}
+
+"""
+Audit log entry for a org.remove_member event.
+"""
+type OrgRemoveMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The types of membership the member has with the organization.
+  """
+  membershipTypes: [OrgRemoveMemberAuditEntryMembershipType!]
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The reason for the member being removed.
+  """
+  reason: OrgRemoveMemberAuditEntryReason
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The type of membership a user has with an Organization.
+"""
+enum OrgRemoveMemberAuditEntryMembershipType {
+  """
+  Organization administrators have full access and can change several settings,
+  including the names of repositories that belong to the Organization and Owners
+  team membership. In addition, organization admins can delete the organization
+  and all of its repositories.
+  """
+  ADMIN
+
+  """
+  A billing manager is a user who manages the billing settings for the Organization, such as updating payment information.
+  """
+  BILLING_MANAGER
+
+  """
+  A direct member is a user that is a member of the Organization.
+  """
+  DIRECT_MEMBER
+
+  """
+  An outside collaborator is a person who isn't explicitly a member of the
+  Organization, but who has Read, Write, or Admin permissions to one or more
+  repositories in the organization.
+  """
+  OUTSIDE_COLLABORATOR
+
+  """
+  An unaffiliated collaborator is a person who is not a member of the
+  Organization and does not have access to any repositories in the Organization.
+  """
+  UNAFFILIATED
+}
+
+"""
+The reason a member was removed from an Organization.
+"""
+enum OrgRemoveMemberAuditEntryReason {
+  """
+  SAML external identity missing
+  """
+  SAML_EXTERNAL_IDENTITY_MISSING
+
+  """
+  SAML SSO enforcement requires an external identity
+  """
+  SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY
+
+  """
+  User was removed from organization during account recovery
+  """
+  TWO_FACTOR_ACCOUNT_RECOVERY
+
+  """
+  The organization required 2FA of its billing managers and this user did not have 2FA enabled.
+  """
+  TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE
+
+  """
+  User account has been deleted
+  """
+  USER_ACCOUNT_DELETED
+}
+
+"""
+Audit log entry for a org.remove_outside_collaborator event.
+"""
+type OrgRemoveOutsideCollaboratorAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The types of membership the outside collaborator has with the organization.
+  """
+  membershipTypes: [OrgRemoveOutsideCollaboratorAuditEntryMembershipType!]
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The reason for the outside collaborator being removed from the Organization.
+  """
+  reason: OrgRemoveOutsideCollaboratorAuditEntryReason
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The type of membership a user has with an Organization.
+"""
+enum OrgRemoveOutsideCollaboratorAuditEntryMembershipType {
+  """
+  A billing manager is a user who manages the billing settings for the Organization, such as updating payment information.
+  """
+  BILLING_MANAGER
+
+  """
+  An outside collaborator is a person who isn't explicitly a member of the
+  Organization, but who has Read, Write, or Admin permissions to one or more
+  repositories in the organization.
+  """
+  OUTSIDE_COLLABORATOR
+
+  """
+  An unaffiliated collaborator is a person who is not a member of the
+  Organization and does not have access to any repositories in the organization.
+  """
+  UNAFFILIATED
+}
+
+"""
+The reason an outside collaborator was removed from an Organization.
+"""
+enum OrgRemoveOutsideCollaboratorAuditEntryReason {
+  """
+  SAML external identity missing
+  """
+  SAML_EXTERNAL_IDENTITY_MISSING
+
+  """
+  The organization required 2FA of its billing managers and this user did not have 2FA enabled.
+  """
+  TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE
+}
+
+"""
+Audit log entry for a org.restore_member event.
+"""
+type OrgRestoreMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The number of custom email routings for the restored member.
+  """
+  restoredCustomEmailRoutingsCount: Int
+
+  """
+  The number of issue assignemnts for the restored member.
+  """
+  restoredIssueAssignmentsCount: Int
+
+  """
+  Restored organization membership objects.
+  """
+  restoredMemberships: [OrgRestoreMemberAuditEntryMembership!]
+
+  """
+  The number of restored memberships.
+  """
+  restoredMembershipsCount: Int
+
+  """
+  The number of repositories of the restored member.
+  """
+  restoredRepositoriesCount: Int
+
+  """
+  The number of starred repositories for the restored member.
+  """
+  restoredRepositoryStarsCount: Int
+
+  """
+  The number of watched repositories for the restored member.
+  """
+  restoredRepositoryWatchesCount: Int
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Types of memberships that can be restored for an Organization member.
+"""
+union OrgRestoreMemberAuditEntryMembership =
+    OrgRestoreMemberMembershipOrganizationAuditEntryData
+  | OrgRestoreMemberMembershipRepositoryAuditEntryData
+  | OrgRestoreMemberMembershipTeamAuditEntryData
+
+"""
+Metadata for an organization membership for org.restore_member actions
+"""
+type OrgRestoreMemberMembershipOrganizationAuditEntryData implements OrganizationAuditEntryData {
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+}
+
+"""
+Metadata for a repository membership for org.restore_member actions
+"""
+type OrgRestoreMemberMembershipRepositoryAuditEntryData implements RepositoryAuditEntryData {
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+}
+
+"""
+Metadata for a team membership for org.restore_member actions
+"""
+type OrgRestoreMemberMembershipTeamAuditEntryData implements TeamAuditEntryData {
+  """
+  The team associated with the action
+  """
+  team: Team
+
+  """
+  The name of the team
+  """
+  teamName: String
+
+  """
+  The HTTP path for this team
+  """
+  teamResourcePath: URI
+
+  """
+  The HTTP URL for this team
+  """
+  teamUrl: URI
+}
+
+"""
+Audit log entry for a org.unblock_user
+"""
+type OrgUnblockUserAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The user being unblocked by the organization.
+  """
+  blockedUser: User
+
+  """
+  The username of the blocked user.
+  """
+  blockedUserName: String
+
+  """
+  The HTTP path for the blocked user.
+  """
+  blockedUserResourcePath: URI
+
+  """
+  The HTTP URL for the blocked user.
+  """
+  blockedUserUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a org.update_default_repository_permission
+"""
+type OrgUpdateDefaultRepositoryPermissionAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The new default repository permission level for the organization.
+  """
+  permission: OrgUpdateDefaultRepositoryPermissionAuditEntryPermission
+
+  """
+  The former default repository permission level for the organization.
+  """
+  permissionWas: OrgUpdateDefaultRepositoryPermissionAuditEntryPermission
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The default permission a repository can have in an Organization.
+"""
+enum OrgUpdateDefaultRepositoryPermissionAuditEntryPermission {
+  """
+  Can read, clone, push, and add collaborators to repositories.
+  """
+  ADMIN
+
+  """
+  No default permission value.
+  """
+  NONE
+
+  """
+  Can read and clone repositories.
+  """
+  READ
+
+  """
+  Can read, clone and push to repositories.
+  """
+  WRITE
+}
+
+"""
+Audit log entry for a org.update_member event.
+"""
+type OrgUpdateMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The new member permission level for the organization.
+  """
+  permission: OrgUpdateMemberAuditEntryPermission
+
+  """
+  The former member permission level for the organization.
+  """
+  permissionWas: OrgUpdateMemberAuditEntryPermission
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The permissions available to members on an Organization.
+"""
+enum OrgUpdateMemberAuditEntryPermission {
+  """
+  Can read, clone, push, and add collaborators to repositories.
+  """
+  ADMIN
+
+  """
+  Can read and clone repositories.
+  """
+  READ
+}
+
+"""
+Audit log entry for a org.update_member_repository_creation_permission event.
+"""
+type OrgUpdateMemberRepositoryCreationPermissionAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  Can members create repositories in the organization.
+  """
+  canCreateRepositories: Boolean
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+
+  """
+  The permission for visibility level of repositories for this organization.
+  """
+  visibility: OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility
+}
+
+"""
+The permissions available for repository creation on an Organization.
+"""
+enum OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility {
+  """
+  All organization members are restricted from creating any repositories.
+  """
+  ALL
+
+  """
+  All organization members are restricted from creating internal repositories.
+  """
+  INTERNAL
+
+  """
+  All organization members are allowed to create any repositories.
+  """
+  NONE
+
+  """
+  All organization members are restricted from creating private repositories.
+  """
+  PRIVATE
+
+  """
+  All organization members are restricted from creating private or internal repositories.
+  """
+  PRIVATE_INTERNAL
+
+  """
+  All organization members are restricted from creating public repositories.
+  """
+  PUBLIC
+
+  """
+  All organization members are restricted from creating public or internal repositories.
+  """
+  PUBLIC_INTERNAL
+
+  """
+  All organization members are restricted from creating public or private repositories.
+  """
+  PUBLIC_PRIVATE
+}
+
+"""
+Audit log entry for a org.update_member_repository_invitation_permission event.
+"""
+type OrgUpdateMemberRepositoryInvitationPermissionAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  Can outside collaborators be invited to repositories in the organization.
+  """
+  canInviteOutsideCollaboratorsToRepositories: Boolean
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+An account on GitHub, with one or more owners, that has repositories, members and teams.
+"""
+type Organization implements Actor & MemberStatusable & Node & PackageOwner & ProfileOwner & ProjectOwner & RepositoryOwner & Sponsorable & UniformResourceLocatable {
+  """
+  Determine if this repository owner has any items that can be pinned to their profile.
+  """
+  anyPinnableItems(
+    """
+    Filter to only a particular kind of pinnable item.
+    """
+    type: PinnableItemType
+  ): Boolean!
+
+  """
+  Audit log entries of the organization
+  """
+  auditLog(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for the returned audit log entries.
+    """
+    orderBy: AuditLogOrder = { field: CREATED_AT, direction: DESC }
+
+    """
+    The query string to filter audit entries
+    """
+    query: String
+  ): OrganizationAuditEntryConnection!
+
+  """
+  A URL pointing to the organization's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The organization's public profile description.
+  """
+  description: String
+
+  """
+  The organization's public profile description rendered to HTML.
+  """
+  descriptionHTML: String
+
+  """
+  The organization's public email.
+  """
+  email: String
+  id: ID!
+
+  """
+  The setting value for whether the organization has an IP allow list enabled.
+  """
+  ipAllowListEnabledSetting: IpAllowListEnabledSettingValue!
+
+  """
+  The IP addresses that are allowed to access resources owned by the organization.
+  """
+  ipAllowListEntries(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for IP allow list entries returned.
+    """
+    orderBy: IpAllowListEntryOrder = { field: ALLOW_LIST_VALUE, direction: ASC }
+  ): IpAllowListEntryConnection!
+
+  """
+  Whether the organization has verified its profile email and website.
+  """
+  isVerified: Boolean!
+
+  """
+  Showcases a selection of repositories and gists that the profile owner has
+  either curated or that have been selected automatically based on popularity.
+  """
+  itemShowcase: ProfileItemShowcase!
+
+  """
+  The organization's public profile location.
+  """
+  location: String
+
+  """
+  The organization's login name.
+  """
+  login: String!
+
+  """
+  Get the status messages members of this entity have set that are either public or visible only to the organization.
+  """
+  memberStatuses(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for user statuses returned from the connection.
+    """
+    orderBy: UserStatusOrder = { field: UPDATED_AT, direction: DESC }
+  ): UserStatusConnection!
+
+  """
+  A list of users who are members of this organization.
+  """
+  membersWithRole(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): OrganizationMemberConnection!
+
+  """
+  The organization's public profile name.
+  """
+  name: String
+
+  """
+  The HTTP path creating a new team
+  """
+  newTeamResourcePath: URI!
+
+  """
+  The HTTP URL creating a new team
+  """
+  newTeamUrl: URI!
+
+  """
+  The billing email for the organization.
+  """
+  organizationBillingEmail: String
+
+  """
+  A list of packages under the owner.
+  """
+  packages(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Find packages by their names.
+    """
+    names: [String]
+
+    """
+    Ordering of the returned packages.
+    """
+    orderBy: PackageOrder = { field: CREATED_AT, direction: DESC }
+
+    """
+    Filter registry package by type.
+    """
+    packageType: PackageType
+
+    """
+    Find packages in a repository by ID.
+    """
+    repositoryId: ID
+  ): PackageConnection!
+
+  """
+  A list of users who have been invited to join this organization.
+  """
+  pendingMembers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+
+  """
+  A list of repositories and gists this profile owner can pin to their profile.
+  """
+  pinnableItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter the types of pinnable items that are returned.
+    """
+    types: [PinnableItemType!]
+  ): PinnableItemConnection!
+
+  """
+  A list of repositories and gists this profile owner has pinned to their profile
+  """
+  pinnedItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter the types of pinned items that are returned.
+    """
+    types: [PinnableItemType!]
+  ): PinnableItemConnection!
+
+  """
+  Returns how many more items this profile owner can pin to their profile.
+  """
+  pinnedItemsRemaining: Int!
+
+  """
+  Find project by number.
+  """
+  project(
+    """
+    The project number to find.
+    """
+    number: Int!
+  ): Project
+
+  """
+  A list of projects under the owner.
+  """
+  projects(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for projects returned from the connection
+    """
+    orderBy: ProjectOrder
+
+    """
+    Query to search projects by, currently only searching by name.
+    """
+    search: String
+
+    """
+    A list of states to filter the projects by.
+    """
+    states: [ProjectState!]
+  ): ProjectConnection!
+
+  """
+  The HTTP path listing organization's projects
+  """
+  projectsResourcePath: URI!
+
+  """
+  The HTTP URL listing organization's projects
+  """
+  projectsUrl: URI!
+
+  """
+  A list of repositories that the user owns.
+  """
+  repositories(
+    """
+    Array of viewer's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    current viewer owns.
+    """
+    affiliations: [RepositoryAffiliation]
+
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    If non-null, filters repositories according to whether they are forks of another repository
+    """
+    isFork: Boolean
+
+    """
+    If non-null, filters repositories according to whether they have been locked
+    """
+    isLocked: Boolean
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories returned from the connection
+    """
+    orderBy: RepositoryOrder
+
+    """
+    Array of owner's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    organization or user being viewed owns.
+    """
+    ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+
+    """
+    If non-null, filters repositories according to privacy
+    """
+    privacy: RepositoryPrivacy
+  ): RepositoryConnection!
+
+  """
+  Find Repository.
+  """
+  repository(
+    """
+    Name of Repository to find.
+    """
+    name: String!
+  ): Repository
+
+  """
+  When true the organization requires all members, billing managers, and outside
+  collaborators to enable two-factor authentication.
+  """
+  requiresTwoFactorAuthentication: Boolean
+
+  """
+  The HTTP path for this organization.
+  """
+  resourcePath: URI!
+
+  """
+  The Organization's SAML identity providers
+  """
+  samlIdentityProvider: OrganizationIdentityProvider
+
+  """
+  The GitHub Sponsors listing for this user.
+  """
+  sponsorsListing: SponsorsListing
+
+  """
+  This object's sponsorships as the maintainer.
+  """
+  sponsorshipsAsMaintainer(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Whether or not to include private sponsorships in the result set
+    """
+    includePrivate: Boolean = false
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for sponsorships returned from this connection. If left
+    blank, the sponsorships will be ordered based on relevancy to the viewer.
+    """
+    orderBy: SponsorshipOrder
+  ): SponsorshipConnection!
+
+  """
+  This object's sponsorships as the sponsor.
+  """
+  sponsorshipsAsSponsor(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for sponsorships returned from this connection. If left
+    blank, the sponsorships will be ordered based on relevancy to the viewer.
+    """
+    orderBy: SponsorshipOrder
+  ): SponsorshipConnection!
+
+  """
+  Find an organization's team by its slug.
+  """
+  team(
+    """
+    The name or slug of the team to find.
+    """
+    slug: String!
+  ): Team
+
+  """
+  A list of teams in this organization.
+  """
+  teams(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    If true, filters teams that are mapped to an LDAP Group (Enterprise only)
+    """
+    ldapMapped: Boolean
+
+    """
+    Ordering options for teams returned from the connection
+    """
+    orderBy: TeamOrder
+
+    """
+    If non-null, filters teams according to privacy
+    """
+    privacy: TeamPrivacy
+
+    """
+    If non-null, filters teams with query on team name and team slug
+    """
+    query: String
+
+    """
+    If non-null, filters teams according to whether the viewer is an admin or member on team
+    """
+    role: TeamRole
+
+    """
+    If true, restrict to only root teams
+    """
+    rootTeamsOnly: Boolean = false
+
+    """
+    User logins to filter by
+    """
+    userLogins: [String!]
+  ): TeamConnection!
+
+  """
+  The HTTP path listing organization's teams
+  """
+  teamsResourcePath: URI!
+
+  """
+  The HTTP URL listing organization's teams
+  """
+  teamsUrl: URI!
+
+  """
+  The organization's Twitter username.
+  """
+  twitterUsername: String
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this organization.
+  """
+  url: URI!
+
+  """
+  Organization is adminable by the viewer.
+  """
+  viewerCanAdminister: Boolean!
+
+  """
+  Can the viewer pin repositories and gists to the profile?
+  """
+  viewerCanChangePinnedItems: Boolean!
+
+  """
+  Can the current viewer create new projects on this owner.
+  """
+  viewerCanCreateProjects: Boolean!
+
+  """
+  Viewer can create repositories on this organization
+  """
+  viewerCanCreateRepositories: Boolean!
+
+  """
+  Viewer can create teams on this organization.
+  """
+  viewerCanCreateTeams: Boolean!
+
+  """
+  Viewer is an active member of this organization.
+  """
+  viewerIsAMember: Boolean!
+
+  """
+  The organization's public profile URL.
+  """
+  websiteUrl: URI
+}
+
+"""
+An audit entry in an organization audit log.
+"""
+union OrganizationAuditEntry =
+    MembersCanDeleteReposClearAuditEntry
+  | MembersCanDeleteReposDisableAuditEntry
+  | MembersCanDeleteReposEnableAuditEntry
+  | OauthApplicationCreateAuditEntry
+  | OrgAddBillingManagerAuditEntry
+  | OrgAddMemberAuditEntry
+  | OrgBlockUserAuditEntry
+  | OrgConfigDisableCollaboratorsOnlyAuditEntry
+  | OrgConfigEnableCollaboratorsOnlyAuditEntry
+  | OrgCreateAuditEntry
+  | OrgDisableOauthAppRestrictionsAuditEntry
+  | OrgDisableSamlAuditEntry
+  | OrgDisableTwoFactorRequirementAuditEntry
+  | OrgEnableOauthAppRestrictionsAuditEntry
+  | OrgEnableSamlAuditEntry
+  | OrgEnableTwoFactorRequirementAuditEntry
+  | OrgInviteMemberAuditEntry
+  | OrgInviteToBusinessAuditEntry
+  | OrgOauthAppAccessApprovedAuditEntry
+  | OrgOauthAppAccessDeniedAuditEntry
+  | OrgOauthAppAccessRequestedAuditEntry
+  | OrgRemoveBillingManagerAuditEntry
+  | OrgRemoveMemberAuditEntry
+  | OrgRemoveOutsideCollaboratorAuditEntry
+  | OrgRestoreMemberAuditEntry
+  | OrgUnblockUserAuditEntry
+  | OrgUpdateDefaultRepositoryPermissionAuditEntry
+  | OrgUpdateMemberAuditEntry
+  | OrgUpdateMemberRepositoryCreationPermissionAuditEntry
+  | OrgUpdateMemberRepositoryInvitationPermissionAuditEntry
+  | PrivateRepositoryForkingDisableAuditEntry
+  | PrivateRepositoryForkingEnableAuditEntry
+  | RepoAccessAuditEntry
+  | RepoAddMemberAuditEntry
+  | RepoAddTopicAuditEntry
+  | RepoArchivedAuditEntry
+  | RepoChangeMergeSettingAuditEntry
+  | RepoConfigDisableAnonymousGitAccessAuditEntry
+  | RepoConfigDisableCollaboratorsOnlyAuditEntry
+  | RepoConfigDisableContributorsOnlyAuditEntry
+  | RepoConfigDisableSockpuppetDisallowedAuditEntry
+  | RepoConfigEnableAnonymousGitAccessAuditEntry
+  | RepoConfigEnableCollaboratorsOnlyAuditEntry
+  | RepoConfigEnableContributorsOnlyAuditEntry
+  | RepoConfigEnableSockpuppetDisallowedAuditEntry
+  | RepoConfigLockAnonymousGitAccessAuditEntry
+  | RepoConfigUnlockAnonymousGitAccessAuditEntry
+  | RepoCreateAuditEntry
+  | RepoDestroyAuditEntry
+  | RepoRemoveMemberAuditEntry
+  | RepoRemoveTopicAuditEntry
+  | RepositoryVisibilityChangeDisableAuditEntry
+  | RepositoryVisibilityChangeEnableAuditEntry
+  | TeamAddMemberAuditEntry
+  | TeamAddRepositoryAuditEntry
+  | TeamChangeParentTeamAuditEntry
+  | TeamRemoveMemberAuditEntry
+  | TeamRemoveRepositoryAuditEntry
+
+"""
+The connection type for OrganizationAuditEntry.
+"""
+type OrganizationAuditEntryConnection {
+  """
+  A list of edges.
+  """
+  edges: [OrganizationAuditEntryEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [OrganizationAuditEntry]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Metadata for an audit entry with action org.*
+"""
+interface OrganizationAuditEntryData {
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+}
+
+"""
+An edge in a connection.
+"""
+type OrganizationAuditEntryEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: OrganizationAuditEntry
+}
+
+"""
+The connection type for Organization.
+"""
+type OrganizationConnection {
+  """
+  A list of edges.
+  """
+  edges: [OrganizationEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Organization]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type OrganizationEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Organization
+}
+
+"""
+An Identity Provider configured to provision SAML and SCIM identities for Organizations
+"""
+type OrganizationIdentityProvider implements Node {
+  """
+  The digest algorithm used to sign SAML requests for the Identity Provider.
+  """
+  digestMethod: URI
+
+  """
+  External Identities provisioned by this Identity Provider
+  """
+  externalIdentities(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ExternalIdentityConnection!
+  id: ID!
+
+  """
+  The x509 certificate used by the Identity Provder to sign assertions and responses.
+  """
+  idpCertificate: X509Certificate
+
+  """
+  The Issuer Entity ID for the SAML Identity Provider
+  """
+  issuer: String
+
+  """
+  Organization this Identity Provider belongs to
+  """
+  organization: Organization
+
+  """
+  The signature algorithm used to sign SAML requests for the Identity Provider.
+  """
+  signatureMethod: URI
+
+  """
+  The URL endpoint for the Identity Provider's SAML SSO.
+  """
+  ssoUrl: URI
+}
+
+"""
+An Invitation for a user to an organization.
+"""
+type OrganizationInvitation implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The email address of the user invited to the organization.
+  """
+  email: String
+  id: ID!
+
+  """
+  The type of invitation that was sent (e.g. email, user).
+  """
+  invitationType: OrganizationInvitationType!
+
+  """
+  The user who was invited to the organization.
+  """
+  invitee: User
+
+  """
+  The user who created the invitation.
+  """
+  inviter: User!
+
+  """
+  The organization the invite is for
+  """
+  organization: Organization!
+
+  """
+  The user's pending role in the organization (e.g. member, owner).
+  """
+  role: OrganizationInvitationRole!
+}
+
+"""
+The connection type for OrganizationInvitation.
+"""
+type OrganizationInvitationConnection {
+  """
+  A list of edges.
+  """
+  edges: [OrganizationInvitationEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [OrganizationInvitation]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type OrganizationInvitationEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: OrganizationInvitation
+}
+
+"""
+The possible organization invitation roles.
+"""
+enum OrganizationInvitationRole {
+  """
+  The user is invited to be an admin of the organization.
+  """
+  ADMIN
+
+  """
+  The user is invited to be a billing manager of the organization.
+  """
+  BILLING_MANAGER
+
+  """
+  The user is invited to be a direct member of the organization.
+  """
+  DIRECT_MEMBER
+
+  """
+  The user's previous role will be reinstated.
+  """
+  REINSTATE
+}
+
+"""
+The possible organization invitation types.
+"""
+enum OrganizationInvitationType {
+  """
+  The invitation was to an email address.
+  """
+  EMAIL
+
+  """
+  The invitation was to an existing user.
+  """
+  USER
+}
+
+"""
+The connection type for User.
+"""
+type OrganizationMemberConnection {
+  """
+  A list of edges.
+  """
+  edges: [OrganizationMemberEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a user within an organization.
+"""
+type OrganizationMemberEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  Whether the organization member has two factor enabled or not. Returns null if information is not available to viewer.
+  """
+  hasTwoFactorEnabled: Boolean
+
+  """
+  The item at the end of the edge.
+  """
+  node: User
+
+  """
+  The role this user has in the organization.
+  """
+  role: OrganizationMemberRole
+}
+
+"""
+The possible roles within an organization for its members.
+"""
+enum OrganizationMemberRole {
+  """
+  The user is an administrator of the organization.
+  """
+  ADMIN
+
+  """
+  The user is a member of the organization.
+  """
+  MEMBER
+}
+
+"""
+The possible values for the members can create repositories setting on an organization.
+"""
+enum OrganizationMembersCanCreateRepositoriesSettingValue {
+  """
+  Members will be able to create public and private repositories.
+  """
+  ALL
+
+  """
+  Members will not be able to create public or private repositories.
+  """
+  DISABLED
+
+  """
+  Members will be able to create only private repositories.
+  """
+  PRIVATE
+}
+
+"""
+Ordering options for organization connections.
+"""
+input OrganizationOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order organizations by.
+  """
+  field: OrganizationOrderField!
+}
+
+"""
+Properties by which organization connections can be ordered.
+"""
+enum OrganizationOrderField {
+  """
+  Order organizations by creation time
+  """
+  CREATED_AT
+
+  """
+  Order organizations by login
+  """
+  LOGIN
+}
+
+"""
+An organization teams hovercard context
+"""
+type OrganizationTeamsHovercardContext implements HovercardContext {
+  """
+  A string describing this context
+  """
+  message: String!
+
+  """
+  An octicon to accompany this context
+  """
+  octicon: String!
+
+  """
+  Teams in this organization the user is a member of that are relevant
+  """
+  relevantTeams(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): TeamConnection!
+
+  """
+  The path for the full team list for this user
+  """
+  teamsResourcePath: URI!
+
+  """
+  The URL for the full team list for this user
+  """
+  teamsUrl: URI!
+
+  """
+  The total number of teams the user is on in the organization
+  """
+  totalTeamCount: Int!
+}
+
+"""
+An organization list hovercard context
+"""
+type OrganizationsHovercardContext implements HovercardContext {
+  """
+  A string describing this context
+  """
+  message: String!
+
+  """
+  An octicon to accompany this context
+  """
+  octicon: String!
+
+  """
+  Organizations this user is a member of that are relevant
+  """
+  relevantOrganizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): OrganizationConnection!
+
+  """
+  The total number of organizations this user is in
+  """
+  totalOrganizationCount: Int!
+}
+
+"""
+Information for an uploaded package.
+"""
+type Package implements Node {
+  id: ID!
+
+  """
+  Find the latest version for the package.
+  """
+  latestVersion: PackageVersion
+
+  """
+  Identifies the name of the package.
+  """
+  name: String!
+
+  """
+  Identifies the type of the package.
+  """
+  packageType: PackageType!
+
+  """
+  The repository this package belongs to.
+  """
+  repository: Repository
+
+  """
+  Statistics about package activity.
+  """
+  statistics: PackageStatistics
+
+  """
+  Find package version by version string.
+  """
+  version(
+    """
+    The package version.
+    """
+    version: String!
+  ): PackageVersion
+
+  """
+  list of versions for this package
+  """
+  versions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering of the returned packages.
+    """
+    orderBy: PackageVersionOrder = { field: CREATED_AT, direction: DESC }
+  ): PackageVersionConnection!
+}
+
+"""
+The connection type for Package.
+"""
+type PackageConnection {
+  """
+  A list of edges.
+  """
+  edges: [PackageEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Package]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PackageEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Package
+}
+
+"""
+A file in a package version.
+"""
+type PackageFile implements Node {
+  id: ID!
+
+  """
+  MD5 hash of the file.
+  """
+  md5: String
+
+  """
+  Name of the file.
+  """
+  name: String!
+
+  """
+  The package version this file belongs to.
+  """
+  packageVersion: PackageVersion
+
+  """
+  SHA1 hash of the file.
+  """
+  sha1: String
+
+  """
+  SHA256 hash of the file.
+  """
+  sha256: String
+
+  """
+  Size of the file in bytes.
+  """
+  size: Int
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  URL to download the asset.
+  """
+  url: URI
+}
+
+"""
+The connection type for PackageFile.
+"""
+type PackageFileConnection {
+  """
+  A list of edges.
+  """
+  edges: [PackageFileEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PackageFile]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PackageFileEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PackageFile
+}
+
+"""
+Ways in which lists of package files can be ordered upon return.
+"""
+input PackageFileOrder {
+  """
+  The direction in which to order package files by the specified field.
+  """
+  direction: OrderDirection
+
+  """
+  The field in which to order package files by.
+  """
+  field: PackageFileOrderField
+}
+
+"""
+Properties by which package file connections can be ordered.
+"""
+enum PackageFileOrderField {
+  """
+  Order package files by creation time
+  """
+  CREATED_AT
+}
+
+"""
+Ways in which lists of packages can be ordered upon return.
+"""
+input PackageOrder {
+  """
+  The direction in which to order packages by the specified field.
+  """
+  direction: OrderDirection
+
+  """
+  The field in which to order packages by.
+  """
+  field: PackageOrderField
+}
+
+"""
+Properties by which package connections can be ordered.
+"""
+enum PackageOrderField {
+  """
+  Order packages by creation time
+  """
+  CREATED_AT
+}
+
+"""
+Represents an owner of a package.
+"""
+interface PackageOwner {
+  id: ID!
+
+  """
+  A list of packages under the owner.
+  """
+  packages(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Find packages by their names.
+    """
+    names: [String]
+
+    """
+    Ordering of the returned packages.
+    """
+    orderBy: PackageOrder = { field: CREATED_AT, direction: DESC }
+
+    """
+    Filter registry package by type.
+    """
+    packageType: PackageType
+
+    """
+    Find packages in a repository by ID.
+    """
+    repositoryId: ID
+  ): PackageConnection!
+}
+
+"""
+Represents a object that contains package activity statistics such as downloads.
+"""
+type PackageStatistics {
+  """
+  Number of times the package was downloaded since it was created.
+  """
+  downloadsTotalCount: Int!
+}
+
+"""
+A version tag contains the mapping between a tag name and a version.
+"""
+type PackageTag implements Node {
+  id: ID!
+
+  """
+  Identifies the tag name of the version.
+  """
+  name: String!
+
+  """
+  Version that the tag is associated with.
+  """
+  version: PackageVersion
+}
+
+"""
+The possible types of a package.
+"""
+enum PackageType {
+  """
+  A debian package.
+  """
+  DEBIAN
+
+  """
+  A docker image.
+  """
+  DOCKER
+
+  """
+  A maven package.
+  """
+  MAVEN
+
+  """
+  An npm package.
+  """
+  NPM
+
+  """
+  A nuget package.
+  """
+  NUGET
+
+  """
+  A python package.
+  """
+  PYPI
+
+  """
+  A rubygems package.
+  """
+  RUBYGEMS
+}
+
+"""
+Information about a specific package version.
+"""
+type PackageVersion implements Node {
+  """
+  List of files associated with this package version
+  """
+  files(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering of the returned package files.
+    """
+    orderBy: PackageFileOrder = { field: CREATED_AT, direction: ASC }
+  ): PackageFileConnection!
+  id: ID!
+
+  """
+  The package associated with this version.
+  """
+  package: Package
+
+  """
+  The platform this version was built for.
+  """
+  platform: String
+
+  """
+  Whether or not this version is a pre-release.
+  """
+  preRelease: Boolean!
+
+  """
+  The README of this package version.
+  """
+  readme: String
+
+  """
+  The release associated with this package version.
+  """
+  release: Release
+
+  """
+  Statistics about package activity.
+  """
+  statistics: PackageVersionStatistics
+
+  """
+  The package version summary.
+  """
+  summary: String
+
+  """
+  The version string.
+  """
+  version: String!
+}
+
+"""
+The connection type for PackageVersion.
+"""
+type PackageVersionConnection {
+  """
+  A list of edges.
+  """
+  edges: [PackageVersionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PackageVersion]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PackageVersionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PackageVersion
+}
+
+"""
+Ways in which lists of package versions can be ordered upon return.
+"""
+input PackageVersionOrder {
+  """
+  The direction in which to order package versions by the specified field.
+  """
+  direction: OrderDirection
+
+  """
+  The field in which to order package versions by.
+  """
+  field: PackageVersionOrderField
+}
+
+"""
+Properties by which package version connections can be ordered.
+"""
+enum PackageVersionOrderField {
+  """
+  Order package versions by creation time
+  """
+  CREATED_AT
+}
+
+"""
+Represents a object that contains package version activity statistics such as downloads.
+"""
+type PackageVersionStatistics {
+  """
+  Number of times the package was downloaded since it was created.
+  """
+  downloadsTotalCount: Int!
+}
+
+"""
+Information about pagination in a connection.
+"""
+type PageInfo {
+  """
+  When paginating forwards, the cursor to continue.
+  """
+  endCursor: String
+
+  """
+  When paginating forwards, are there more items?
+  """
+  hasNextPage: Boolean!
+
+  """
+  When paginating backwards, are there more items?
+  """
+  hasPreviousPage: Boolean!
+
+  """
+  When paginating backwards, the cursor to continue.
+  """
+  startCursor: String
+}
+
+"""
+Types that can grant permissions on a repository to a user
+"""
+union PermissionGranter = Organization | Repository | Team
+
+"""
+A level of permission and source for a user's access to a repository.
+"""
+type PermissionSource {
+  """
+  The organization the repository belongs to.
+  """
+  organization: Organization!
+
+  """
+  The level of access this source has granted to the user.
+  """
+  permission: DefaultRepositoryPermissionField!
+
+  """
+  The source of this permission.
+  """
+  source: PermissionGranter!
+}
+
+"""
+Autogenerated input type of PinIssue
+"""
+input PinIssueInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the issue to be pinned
+  """
+  issueId: ID! @possibleTypes(concreteTypes: ["Issue"])
+}
+
+"""
+Autogenerated return type of PinIssue
+"""
+type PinIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The issue that was pinned
+  """
+  issue: Issue
+}
+
+"""
+Types that can be pinned to a profile page.
+"""
+union PinnableItem = Gist | Repository
+
+"""
+The connection type for PinnableItem.
+"""
+type PinnableItemConnection {
+  """
+  A list of edges.
+  """
+  edges: [PinnableItemEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PinnableItem]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PinnableItemEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PinnableItem
+}
+
+"""
+Represents items that can be pinned to a profile page or dashboard.
+"""
+enum PinnableItemType {
+  """
+  A gist.
+  """
+  GIST
+
+  """
+  An issue.
+  """
+  ISSUE
+
+  """
+  An organization.
+  """
+  ORGANIZATION
+
+  """
+  A project.
+  """
+  PROJECT
+
+  """
+  A pull request.
+  """
+  PULL_REQUEST
+
+  """
+  A repository.
+  """
+  REPOSITORY
+
+  """
+  A team.
+  """
+  TEAM
+
+  """
+  A user.
+  """
+  USER
+}
+
+"""
+Represents a 'pinned' event on a given issue or pull request.
+"""
+type PinnedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the issue associated with the event.
+  """
+  issue: Issue!
+}
+
+"""
+A Pinned Issue is a issue pinned to a repository's index page.
+"""
+type PinnedIssue implements Node @preview(toggledBy: "elektra-preview") {
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  The issue that was pinned.
+  """
+  issue: Issue!
+
+  """
+  The actor that pinned this issue.
+  """
+  pinnedBy: Actor!
+
+  """
+  The repository that this issue was pinned to.
+  """
+  repository: Repository!
+}
+
+"""
+The connection type for PinnedIssue.
+"""
+type PinnedIssueConnection @preview(toggledBy: "elektra-preview") {
+  """
+  A list of edges.
+  """
+  edges: [PinnedIssueEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PinnedIssue]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PinnedIssueEdge @preview(toggledBy: "elektra-preview") {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PinnedIssue
+}
+
+"""
+An ISO-8601 encoded UTC date string with millisecond precison.
+"""
+scalar PreciseDateTime
+
+"""
+Audit log entry for a private_repository_forking.disable event.
+"""
+type PrivateRepositoryForkingDisableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a private_repository_forking.enable event.
+"""
+type PrivateRepositoryForkingEnableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+A curatable list of repositories relating to a repository owner, which defaults
+to showing the most popular repositories they own.
+"""
+type ProfileItemShowcase {
+  """
+  Whether or not the owner has pinned any repositories or gists.
+  """
+  hasPinnedItems: Boolean!
+
+  """
+  The repositories and gists in the showcase. If the profile owner has any
+  pinned items, those will be returned. Otherwise, the profile owner's popular
+  repositories will be returned.
+  """
+  items(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PinnableItemConnection!
+}
+
+"""
+Represents any entity on GitHub that has a profile page.
+"""
+interface ProfileOwner {
+  """
+  Determine if this repository owner has any items that can be pinned to their profile.
+  """
+  anyPinnableItems(
+    """
+    Filter to only a particular kind of pinnable item.
+    """
+    type: PinnableItemType
+  ): Boolean!
+
+  """
+  The public profile email.
+  """
+  email: String
+  id: ID!
+
+  """
+  Showcases a selection of repositories and gists that the profile owner has
+  either curated or that have been selected automatically based on popularity.
+  """
+  itemShowcase: ProfileItemShowcase!
+
+  """
+  The public profile location.
+  """
+  location: String
+
+  """
+  The username used to login.
+  """
+  login: String!
+
+  """
+  The public profile name.
+  """
+  name: String
+
+  """
+  A list of repositories and gists this profile owner can pin to their profile.
+  """
+  pinnableItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter the types of pinnable items that are returned.
+    """
+    types: [PinnableItemType!]
+  ): PinnableItemConnection!
+
+  """
+  A list of repositories and gists this profile owner has pinned to their profile
+  """
+  pinnedItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter the types of pinned items that are returned.
+    """
+    types: [PinnableItemType!]
+  ): PinnableItemConnection!
+
+  """
+  Returns how many more items this profile owner can pin to their profile.
+  """
+  pinnedItemsRemaining: Int!
+
+  """
+  Can the viewer pin repositories and gists to the profile?
+  """
+  viewerCanChangePinnedItems: Boolean!
+
+  """
+  The public profile website URL.
+  """
+  websiteUrl: URI
+}
+
+"""
+Projects manage issues, pull requests and notes within a project owner.
+"""
+type Project implements Closable & Node & Updatable {
+  """
+  The project's description body.
+  """
+  body: String
+
+  """
+  The projects description body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  `true` if the object is closed (definition of closed may depend on type)
+  """
+  closed: Boolean!
+
+  """
+  Identifies the date and time when the object was closed.
+  """
+  closedAt: DateTime
+
+  """
+  List of columns in the project
+  """
+  columns(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ProjectColumnConnection!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The actor who originally created the project.
+  """
+  creator: Actor
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  The project's name.
+  """
+  name: String!
+
+  """
+  The project's number.
+  """
+  number: Int!
+
+  """
+  The project's owner. Currently limited to repositories, organizations, and users.
+  """
+  owner: ProjectOwner!
+
+  """
+  List of pending cards in this project
+  """
+  pendingCards(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    A list of archived states to filter the cards by
+    """
+    archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ProjectCardConnection!
+
+  """
+  The HTTP path for this project
+  """
+  resourcePath: URI!
+
+  """
+  Whether the project is open or closed.
+  """
+  state: ProjectState!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this project
+  """
+  url: URI!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+}
+
+"""
+A card in a project.
+"""
+type ProjectCard implements Node {
+  """
+  The project column this card is associated under. A card may only belong to one
+  project column at a time. The column field will be null if the card is created
+  in a pending state and has yet to be associated with a column. Once cards are
+  associated with a column, they will not become pending in the future.
+  """
+  column: ProjectColumn
+
+  """
+  The card content item
+  """
+  content: ProjectCardItem
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The actor who created this card
+  """
+  creator: Actor
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  Whether the card is archived
+  """
+  isArchived: Boolean!
+
+  """
+  The card note
+  """
+  note: String
+
+  """
+  The project that contains this card.
+  """
+  project: Project!
+
+  """
+  The HTTP path for this card
+  """
+  resourcePath: URI!
+
+  """
+  The state of ProjectCard
+  """
+  state: ProjectCardState
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this card
+  """
+  url: URI!
+}
+
+"""
+The possible archived states of a project card.
+"""
+enum ProjectCardArchivedState {
+  """
+  A project card that is archived
+  """
+  ARCHIVED
+
+  """
+  A project card that is not archived
+  """
+  NOT_ARCHIVED
+}
+
+"""
+The connection type for ProjectCard.
+"""
+type ProjectCardConnection {
+  """
+  A list of edges.
+  """
+  edges: [ProjectCardEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [ProjectCard]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ProjectCardEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: ProjectCard
+}
+
+"""
+An issue or PR and its owning repository to be used in a project card.
+"""
+input ProjectCardImport {
+  """
+  The issue or pull request number.
+  """
+  number: Int!
+
+  """
+  Repository name with owner (owner/repository).
+  """
+  repository: String!
+}
+
+"""
+Types that can be inside Project Cards.
+"""
+union ProjectCardItem = Issue | PullRequest
+
+"""
+Various content states of a ProjectCard
+"""
+enum ProjectCardState {
+  """
+  The card has content only.
+  """
+  CONTENT_ONLY
+
+  """
+  The card has a note only.
+  """
+  NOTE_ONLY
+
+  """
+  The card is redacted.
+  """
+  REDACTED
+}
+
+"""
+A column inside a project.
+"""
+type ProjectColumn implements Node {
+  """
+  List of cards in the column
+  """
+  cards(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    A list of archived states to filter the cards by
+    """
+    archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ProjectCardConnection!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  The project column's name.
+  """
+  name: String!
+
+  """
+  The project that contains this column.
+  """
+  project: Project!
+
+  """
+  The semantic purpose of the column
+  """
+  purpose: ProjectColumnPurpose
+
+  """
+  The HTTP path for this project column
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this project column
+  """
+  url: URI!
+}
+
+"""
+The connection type for ProjectColumn.
+"""
+type ProjectColumnConnection {
+  """
+  A list of edges.
+  """
+  edges: [ProjectColumnEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [ProjectColumn]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ProjectColumnEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: ProjectColumn
+}
+
+"""
+A project column and a list of its issues and PRs.
+"""
+input ProjectColumnImport {
+  """
+  The name of the column.
+  """
+  columnName: String!
+
+  """
+  A list of issues and pull requests in the column.
+  """
+  issues: [ProjectCardImport!]
+
+  """
+  The position of the column, starting from 0.
+  """
+  position: Int!
+}
+
+"""
+The semantic purpose of the column - todo, in progress, or done.
+"""
+enum ProjectColumnPurpose {
+  """
+  The column contains cards which are complete
+  """
+  DONE
+
+  """
+  The column contains cards which are currently being worked on
+  """
+  IN_PROGRESS
+
+  """
+  The column contains cards still to be worked on
+  """
+  TODO
+}
+
+"""
+A list of projects associated with the owner.
+"""
+type ProjectConnection {
+  """
+  A list of edges.
+  """
+  edges: [ProjectEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Project]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ProjectEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Project
+}
+
+"""
+Ways in which lists of projects can be ordered upon return.
+"""
+input ProjectOrder {
+  """
+  The direction in which to order projects by the specified field.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order projects by.
+  """
+  field: ProjectOrderField!
+}
+
+"""
+Properties by which project connections can be ordered.
+"""
+enum ProjectOrderField {
+  """
+  Order projects by creation time
+  """
+  CREATED_AT
+
+  """
+  Order projects by name
+  """
+  NAME
+
+  """
+  Order projects by update time
+  """
+  UPDATED_AT
+}
+
+"""
+Represents an owner of a Project.
+"""
+interface ProjectOwner {
+  id: ID!
+
+  """
+  Find project by number.
+  """
+  project(
+    """
+    The project number to find.
+    """
+    number: Int!
+  ): Project
+
+  """
+  A list of projects under the owner.
+  """
+  projects(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for projects returned from the connection
+    """
+    orderBy: ProjectOrder
+
+    """
+    Query to search projects by, currently only searching by name.
+    """
+    search: String
+
+    """
+    A list of states to filter the projects by.
+    """
+    states: [ProjectState!]
+  ): ProjectConnection!
+
+  """
+  The HTTP path listing owners projects
+  """
+  projectsResourcePath: URI!
+
+  """
+  The HTTP URL listing owners projects
+  """
+  projectsUrl: URI!
+
+  """
+  Can the current viewer create new projects on this owner.
+  """
+  viewerCanCreateProjects: Boolean!
+}
+
+"""
+State of the project; either 'open' or 'closed'
+"""
+enum ProjectState {
+  """
+  The project is closed.
+  """
+  CLOSED
+
+  """
+  The project is open.
+  """
+  OPEN
+}
+
+"""
+GitHub-provided templates for Projects
+"""
+enum ProjectTemplate {
+  """
+  Create a board with v2 triggers to automatically move cards across To do, In progress and Done columns.
+  """
+  AUTOMATED_KANBAN_V2
+
+  """
+  Create a board with triggers to automatically move cards across columns with review automation.
+  """
+  AUTOMATED_REVIEWS_KANBAN
+
+  """
+  Create a board with columns for To do, In progress and Done.
+  """
+  BASIC_KANBAN
+
+  """
+  Create a board to triage and prioritize bugs with To do, priority, and Done columns.
+  """
+  BUG_TRIAGE
+}
+
+"""
+A user's public key.
+"""
+type PublicKey implements Node {
+  """
+  The last time this authorization was used to perform an action. Values will be null for keys not owned by the user.
+  """
+  accessedAt: DateTime
+
+  """
+  Identifies the date and time when the key was created. Keys created before
+  March 5th, 2014 have inaccurate values. Values will be null for keys not owned by the user.
+  """
+  createdAt: DateTime
+
+  """
+  The fingerprint for this PublicKey.
+  """
+  fingerprint: String!
+  id: ID!
+
+  """
+  Whether this PublicKey is read-only or not. Values will be null for keys not owned by the user.
+  """
+  isReadOnly: Boolean
+
+  """
+  The public key string.
+  """
+  key: String!
+
+  """
+  Identifies the date and time when the key was updated. Keys created before
+  March 5th, 2014 may have inaccurate values. Values will be null for keys not
+  owned by the user.
+  """
+  updatedAt: DateTime
+}
+
+"""
+The connection type for PublicKey.
+"""
+type PublicKeyConnection {
+  """
+  A list of edges.
+  """
+  edges: [PublicKeyEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PublicKey]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PublicKeyEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PublicKey
+}
+
+"""
+A repository pull request.
+"""
+type PullRequest implements Assignable & Closable & Comment & Labelable & Lockable & Node & Reactable & RepositoryNode & Subscribable & UniformResourceLocatable & Updatable & UpdatableComment {
+  """
+  Reason that the conversation was locked.
+  """
+  activeLockReason: LockReason
+
+  """
+  The number of additions in this pull request.
+  """
+  additions: Int!
+
+  """
+  A list of Users assigned to this object.
+  """
+  assignees(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the subject of the comment.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  Identifies the base Ref associated with the pull request.
+  """
+  baseRef: Ref
+
+  """
+  Identifies the name of the base Ref associated with the pull request, even if the ref has been deleted.
+  """
+  baseRefName: String!
+
+  """
+  Identifies the oid of the base ref associated with the pull request, even if the ref has been deleted.
+  """
+  baseRefOid: GitObjectID!
+
+  """
+  The repository associated with this pull request's base Ref.
+  """
+  baseRepository: Repository
+
+  """
+  The body as Markdown.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body rendered to text.
+  """
+  bodyText: String!
+
+  """
+  Whether or not the pull request is rebaseable.
+  """
+  canBeRebased: Boolean! @preview(toggledBy: "merge-info-preview")
+
+  """
+  The number of changed files in this pull request.
+  """
+  changedFiles: Int!
+
+  """
+  The HTTP path for the checks of this pull request.
+  """
+  checksResourcePath: URI!
+
+  """
+  The HTTP URL for the checks of this pull request.
+  """
+  checksUrl: URI!
+
+  """
+  `true` if the pull request is closed
+  """
+  closed: Boolean!
+
+  """
+  Identifies the date and time when the object was closed.
+  """
+  closedAt: DateTime
+
+  """
+  A list of comments associated with the pull request.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): IssueCommentConnection!
+
+  """
+  A list of commits present in this pull request's head branch not present in the base branch.
+  """
+  commits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PullRequestCommitConnection!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The number of deletions in this pull request.
+  """
+  deletions: Int!
+
+  """
+  The actor who edited this pull request's body.
+  """
+  editor: Actor
+
+  """
+  Lists the files changed within this pull request.
+  """
+  files(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PullRequestChangedFileConnection
+
+  """
+  Identifies the head Ref associated with the pull request.
+  """
+  headRef: Ref
+
+  """
+  Identifies the name of the head Ref associated with the pull request, even if the ref has been deleted.
+  """
+  headRefName: String!
+
+  """
+  Identifies the oid of the head ref associated with the pull request, even if the ref has been deleted.
+  """
+  headRefOid: GitObjectID!
+
+  """
+  The repository associated with this pull request's head Ref.
+  """
+  headRepository: Repository
+
+  """
+  The owner of the repository associated with this pull request's head Ref.
+  """
+  headRepositoryOwner: RepositoryOwner
+
+  """
+  The hovercard information for this issue
+  """
+  hovercard(
+    """
+    Whether or not to include notification contexts
+    """
+    includeNotificationContexts: Boolean = true
+  ): Hovercard!
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  The head and base repositories are different.
+  """
+  isCrossRepository: Boolean!
+
+  """
+  Identifies if the pull request is a draft.
+  """
+  isDraft: Boolean!
+
+  """
+  A list of labels associated with the object.
+  """
+  labels(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for labels returned from the connection.
+    """
+    orderBy: LabelOrder = { field: CREATED_AT, direction: ASC }
+  ): LabelConnection
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  `true` if the pull request is locked
+  """
+  locked: Boolean!
+
+  """
+  Indicates whether maintainers can modify the pull request.
+  """
+  maintainerCanModify: Boolean!
+
+  """
+  The commit that was created when this pull request was merged.
+  """
+  mergeCommit: Commit
+
+  """
+  Detailed information about the current pull request merge state status.
+  """
+  mergeStateStatus: MergeStateStatus! @preview(toggledBy: "merge-info-preview")
+
+  """
+  Whether or not the pull request can be merged based on the existence of merge conflicts.
+  """
+  mergeable: MergeableState!
+
+  """
+  Whether or not the pull request was merged.
+  """
+  merged: Boolean!
+
+  """
+  The date and time that the pull request was merged.
+  """
+  mergedAt: DateTime
+
+  """
+  The actor who merged the pull request.
+  """
+  mergedBy: Actor
+
+  """
+  Identifies the milestone associated with the pull request.
+  """
+  milestone: Milestone
+
+  """
+  Identifies the pull request number.
+  """
+  number: Int!
+
+  """
+  A list of Users that are participating in the Pull Request conversation.
+  """
+  participants(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+
+  """
+  The permalink to the pull request.
+  """
+  permalink: URI!
+
+  """
+  The commit that GitHub automatically generated to test if this pull request
+  could be merged. This field will not return a value if the pull request is
+  merged, or if the test merge commit is still being generated. See the
+  `mergeable` field for more details on the mergeability of the pull request.
+  """
+  potentialMergeCommit: Commit
+
+  """
+  List of project cards associated with this pull request.
+  """
+  projectCards(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    A list of archived states to filter the cards by
+    """
+    archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ProjectCardConnection!
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path for this pull request.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP path for reverting this pull request.
+  """
+  revertResourcePath: URI!
+
+  """
+  The HTTP URL for reverting this pull request.
+  """
+  revertUrl: URI!
+
+  """
+  The current status of this pull request with respect to code review.
+  """
+  reviewDecision: PullRequestReviewDecision
+
+  """
+  A list of review requests associated with the pull request.
+  """
+  reviewRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ReviewRequestConnection
+
+  """
+  The list of all review threads for this pull request.
+  """
+  reviewThreads(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PullRequestReviewThreadConnection!
+
+  """
+  A list of reviews associated with the pull request.
+  """
+  reviews(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Filter by author of the review.
+    """
+    author: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    A list of states to filter the reviews.
+    """
+    states: [PullRequestReviewState!]
+  ): PullRequestReviewConnection
+
+  """
+  Identifies the state of the pull request.
+  """
+  state: PullRequestState!
+
+  """
+  A list of reviewer suggestions based on commit history and past review comments.
+  """
+  suggestedReviewers: [SuggestedReviewer]!
+
+  """
+  A list of events, comments, commits, etc. associated with the pull request.
+  """
+  timeline(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows filtering timeline events by a `since` timestamp.
+    """
+    since: DateTime
+  ): PullRequestTimelineConnection!
+  @deprecated(
+    reason: "`timeline` will be removed Use PullRequest.timelineItems instead. Removal on 2020-10-01 UTC."
+  )
+
+  """
+  A list of events, comments, commits, etc. associated with the pull request.
+  """
+  timelineItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Filter timeline items by type.
+    """
+    itemTypes: [PullRequestTimelineItemsItemType!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter timeline items by a `since` timestamp.
+    """
+    since: DateTime
+
+    """
+    Skips the first _n_ elements in the list.
+    """
+    skip: Int
+  ): PullRequestTimelineItemsConnection!
+
+  """
+  Identifies the pull request title.
+  """
+  title: String!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this pull request.
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Whether or not the viewer can apply suggestion.
+  """
+  viewerCanApplySuggestion: Boolean!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the viewer is able to change their subscription status for the repository.
+  """
+  viewerCanSubscribe: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+
+  """
+  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
+  """
+  viewerSubscription: SubscriptionState
+}
+
+"""
+A file changed in a pull request.
+"""
+type PullRequestChangedFile {
+  """
+  The number of additions to the file.
+  """
+  additions: Int!
+
+  """
+  The number of deletions to the file.
+  """
+  deletions: Int!
+
+  """
+  The path of the file.
+  """
+  path: String!
+}
+
+"""
+The connection type for PullRequestChangedFile.
+"""
+type PullRequestChangedFileConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestChangedFileEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequestChangedFile]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PullRequestChangedFileEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequestChangedFile
+}
+
+"""
+Represents a Git commit part of a pull request.
+"""
+type PullRequestCommit implements Node & UniformResourceLocatable {
+  """
+  The Git commit object
+  """
+  commit: Commit!
+  id: ID!
+
+  """
+  The pull request this commit belongs to
+  """
+  pullRequest: PullRequest!
+
+  """
+  The HTTP path for this pull request commit
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this pull request commit
+  """
+  url: URI!
+}
+
+"""
+Represents a commit comment thread part of a pull request.
+"""
+type PullRequestCommitCommentThread implements Node & RepositoryNode {
+  """
+  The comments that exist in this thread.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CommitCommentConnection!
+
+  """
+  The commit the comments were made on.
+  """
+  commit: Commit!
+  id: ID!
+
+  """
+  The file the comments were made on.
+  """
+  path: String
+
+  """
+  The position in the diff for the commit that the comment was made on.
+  """
+  position: Int
+
+  """
+  The pull request this commit comment thread belongs to
+  """
+  pullRequest: PullRequest!
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+}
+
+"""
+The connection type for PullRequestCommit.
+"""
+type PullRequestCommitConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestCommitEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequestCommit]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PullRequestCommitEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequestCommit
+}
+
+"""
+The connection type for PullRequest.
+"""
+type PullRequestConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequest]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+This aggregates pull requests opened by a user within one repository.
+"""
+type PullRequestContributionsByRepository {
+  """
+  The pull request contributions.
+  """
+  contributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for contributions returned from the connection.
+    """
+    orderBy: ContributionOrder = { direction: DESC }
+  ): CreatedPullRequestContributionConnection!
+
+  """
+  The repository in which the pull requests were opened.
+  """
+  repository: Repository!
+}
+
+"""
+An edge in a connection.
+"""
+type PullRequestEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequest
+}
+
+"""
+Represents available types of methods to use when merging a pull request.
+"""
+enum PullRequestMergeMethod {
+  """
+  Add all commits from the head branch to the base branch with a merge commit.
+  """
+  MERGE
+
+  """
+  Add all commits from the head branch onto the base branch individually.
+  """
+  REBASE
+
+  """
+  Combine all commits from the head branch into a single commit in the base branch.
+  """
+  SQUASH
+}
+
+"""
+Ways in which lists of issues can be ordered upon return.
+"""
+input PullRequestOrder {
+  """
+  The direction in which to order pull requests by the specified field.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order pull requests by.
+  """
+  field: PullRequestOrderField!
+}
+
+"""
+Properties by which pull_requests connections can be ordered.
+"""
+enum PullRequestOrderField {
+  """
+  Order pull_requests by creation time
+  """
+  CREATED_AT
+
+  """
+  Order pull_requests by update time
+  """
+  UPDATED_AT
+}
+
+"""
+A review object for a given pull request.
+"""
+type PullRequestReview implements Comment & Deletable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the subject of the comment.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  Identifies the pull request review body.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body of this review rendered as plain text.
+  """
+  bodyText: String!
+
+  """
+  A list of review comments for the current pull request review.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PullRequestReviewCommentConnection!
+
+  """
+  Identifies the commit associated with this pull request review.
+  """
+  commit: Commit
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  A list of teams that this review was made on behalf of.
+  """
+  onBehalfOf(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): TeamConnection!
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  Identifies the pull request associated with this pull request review.
+  """
+  pullRequest: PullRequest!
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path permalink for this PullRequestReview.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the current state of the pull request review.
+  """
+  state: PullRequestReviewState!
+
+  """
+  Identifies when the Pull Request Review was submitted
+  """
+  submittedAt: DateTime
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL permalink for this PullRequestReview.
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+}
+
+"""
+A review comment associated with a given repository pull request.
+"""
+type PullRequestReviewComment implements Comment & Deletable & Minimizable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the subject of the comment.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  The comment body of this review comment.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The comment body of this review comment rendered as plain text.
+  """
+  bodyText: String!
+
+  """
+  Identifies the commit associated with the comment.
+  """
+  commit: Commit
+
+  """
+  Identifies when the comment was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The diff hunk to which the comment applies.
+  """
+  diffHunk: String!
+
+  """
+  Identifies when the comment was created in a draft state.
+  """
+  draftedAt: DateTime!
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  Returns whether or not a comment has been minimized.
+  """
+  isMinimized: Boolean!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  Returns why the comment was minimized.
+  """
+  minimizedReason: String
+
+  """
+  Identifies the original commit associated with the comment.
+  """
+  originalCommit: Commit
+
+  """
+  The original line index in the diff to which the comment applies.
+  """
+  originalPosition: Int!
+
+  """
+  Identifies when the comment body is outdated
+  """
+  outdated: Boolean!
+
+  """
+  The path to which the comment applies.
+  """
+  path: String!
+
+  """
+  The line index in the diff to which the comment applies.
+  """
+  position: Int
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  The pull request associated with this review comment.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The pull request review associated with this review comment.
+  """
+  pullRequestReview: PullRequestReview
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The comment this is a reply to.
+  """
+  replyTo: PullRequestReviewComment
+
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+
+  """
+  The HTTP path permalink for this review comment.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the state of the comment.
+  """
+  state: PullRequestReviewCommentState!
+
+  """
+  Identifies when the comment was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL permalink for this review comment.
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+
+  """
+  Check if the current viewer can minimize this object.
+  """
+  viewerCanMinimize: Boolean!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+}
+
+"""
+The connection type for PullRequestReviewComment.
+"""
+type PullRequestReviewCommentConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestReviewCommentEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequestReviewComment]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PullRequestReviewCommentEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequestReviewComment
+}
+
+"""
+The possible states of a pull request review comment.
+"""
+enum PullRequestReviewCommentState {
+  """
+  A comment that is part of a pending review
+  """
+  PENDING
+
+  """
+  A comment that is part of a submitted review
+  """
+  SUBMITTED
+}
+
+"""
+The connection type for PullRequestReview.
+"""
+type PullRequestReviewConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestReviewEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequestReview]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+This aggregates pull request reviews made by a user within one repository.
+"""
+type PullRequestReviewContributionsByRepository {
+  """
+  The pull request review contributions.
+  """
+  contributions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for contributions returned from the connection.
+    """
+    orderBy: ContributionOrder = { direction: DESC }
+  ): CreatedPullRequestReviewContributionConnection!
+
+  """
+  The repository in which the pull request reviews were made.
+  """
+  repository: Repository!
+}
+
+"""
+The review status of a pull request.
+"""
+enum PullRequestReviewDecision {
+  """
+  The pull request has received an approving review.
+  """
+  APPROVED
+
+  """
+  Changes have been requested on the pull request.
+  """
+  CHANGES_REQUESTED
+
+  """
+  A review is required before the pull request can be merged.
+  """
+  REVIEW_REQUIRED
+}
+
+"""
+An edge in a connection.
+"""
+type PullRequestReviewEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequestReview
+}
+
+"""
+The possible events to perform on a pull request review.
+"""
+enum PullRequestReviewEvent {
+  """
+  Submit feedback and approve merging these changes.
+  """
+  APPROVE
+
+  """
+  Submit general feedback without explicit approval.
+  """
+  COMMENT
+
+  """
+  Dismiss review so it now longer effects merging.
+  """
+  DISMISS
+
+  """
+  Submit feedback that must be addressed before merging.
+  """
+  REQUEST_CHANGES
+}
+
+"""
+The possible states of a pull request review.
+"""
+enum PullRequestReviewState {
+  """
+  A review allowing the pull request to merge.
+  """
+  APPROVED
+
+  """
+  A review blocking the pull request from merging.
+  """
+  CHANGES_REQUESTED
+
+  """
+  An informational review.
+  """
+  COMMENTED
+
+  """
+  A review that has been dismissed.
+  """
+  DISMISSED
+
+  """
+  A review that has not yet been submitted.
+  """
+  PENDING
+}
+
+"""
+A threaded list of comments for a given pull request.
+"""
+type PullRequestReviewThread implements Node {
+  """
+  A list of pull request comments associated with the thread.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Skips the first _n_ elements in the list.
+    """
+    skip: Int
+  ): PullRequestReviewCommentConnection!
+
+  """
+  The side of the diff on which this thread was placed.
+  """
+  diffSide: DiffSide!
+  id: ID!
+
+  """
+  Whether this thread has been resolved
+  """
+  isResolved: Boolean!
+
+  """
+  The line in the file to which this thread refers
+  """
+  line: Int
+
+  """
+  The original line in the file to which this thread refers.
+  """
+  originalLine: Int
+
+  """
+  The original start line in the file to which this thread refers (multi-line only).
+  """
+  originalStartLine: Int
+
+  """
+  Identifies the pull request associated with this thread.
+  """
+  pullRequest: PullRequest!
+
+  """
+  Identifies the repository associated with this thread.
+  """
+  repository: Repository!
+
+  """
+  The user who resolved this thread
+  """
+  resolvedBy: User
+
+  """
+  The side of the diff that the first line of the thread starts on (multi-line only)
+  """
+  startDiffSide: DiffSide
+
+  """
+  The start line in the file to which this thread refers (multi-line only)
+  """
+  startLine: Int
+
+  """
+  Whether or not the viewer can resolve this thread
+  """
+  viewerCanResolve: Boolean!
+
+  """
+  Whether or not the viewer can unresolve this thread
+  """
+  viewerCanUnresolve: Boolean!
+}
+
+"""
+Review comment threads for a pull request review.
+"""
+type PullRequestReviewThreadConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestReviewThreadEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequestReviewThread]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PullRequestReviewThreadEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequestReviewThread
+}
+
+"""
+Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits.
+"""
+type PullRequestRevisionMarker {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The last commit the viewer has seen.
+  """
+  lastSeenCommit: Commit!
+
+  """
+  The pull request to which the marker belongs.
+  """
+  pullRequest: PullRequest!
+}
+
+"""
+The possible states of a pull request.
+"""
+enum PullRequestState {
+  """
+  A pull request that has been closed without being merged.
+  """
+  CLOSED
+
+  """
+  A pull request that has been closed by being merged.
+  """
+  MERGED
+
+  """
+  A pull request that is still open.
+  """
+  OPEN
+}
+
+"""
+The connection type for PullRequestTimelineItem.
+"""
+type PullRequestTimelineConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestTimelineItemEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequestTimelineItem]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An item in an pull request timeline
+"""
+union PullRequestTimelineItem =
+    AssignedEvent
+  | BaseRefForcePushedEvent
+  | ClosedEvent
+  | Commit
+  | CommitCommentThread
+  | CrossReferencedEvent
+  | DemilestonedEvent
+  | DeployedEvent
+  | DeploymentEnvironmentChangedEvent
+  | HeadRefDeletedEvent
+  | HeadRefForcePushedEvent
+  | HeadRefRestoredEvent
+  | IssueComment
+  | LabeledEvent
+  | LockedEvent
+  | MergedEvent
+  | MilestonedEvent
+  | PullRequestReview
+  | PullRequestReviewComment
+  | PullRequestReviewThread
+  | ReferencedEvent
+  | RenamedTitleEvent
+  | ReopenedEvent
+  | ReviewDismissedEvent
+  | ReviewRequestRemovedEvent
+  | ReviewRequestedEvent
+  | SubscribedEvent
+  | UnassignedEvent
+  | UnlabeledEvent
+  | UnlockedEvent
+  | UnsubscribedEvent
+  | UserBlockedEvent
+
+"""
+An edge in a connection.
+"""
+type PullRequestTimelineItemEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequestTimelineItem
+}
+
+"""
+An item in a pull request timeline
+"""
+union PullRequestTimelineItems =
+    AddedToProjectEvent
+  | AssignedEvent
+  | AutomaticBaseChangeFailedEvent
+  | AutomaticBaseChangeSucceededEvent
+  | BaseRefChangedEvent
+  | BaseRefForcePushedEvent
+  | ClosedEvent
+  | CommentDeletedEvent
+  | ConnectedEvent
+  | ConvertToDraftEvent
+  | ConvertedNoteToIssueEvent
+  | CrossReferencedEvent
+  | DemilestonedEvent
+  | DeployedEvent
+  | DeploymentEnvironmentChangedEvent
+  | DisconnectedEvent
+  | HeadRefDeletedEvent
+  | HeadRefForcePushedEvent
+  | HeadRefRestoredEvent
+  | IssueComment
+  | LabeledEvent
+  | LockedEvent
+  | MarkedAsDuplicateEvent
+  | MentionedEvent
+  | MergedEvent
+  | MilestonedEvent
+  | MovedColumnsInProjectEvent
+  | PinnedEvent
+  | PullRequestCommit
+  | PullRequestCommitCommentThread
+  | PullRequestReview
+  | PullRequestReviewThread
+  | PullRequestRevisionMarker
+  | ReadyForReviewEvent
+  | ReferencedEvent
+  | RemovedFromProjectEvent
+  | RenamedTitleEvent
+  | ReopenedEvent
+  | ReviewDismissedEvent
+  | ReviewRequestRemovedEvent
+  | ReviewRequestedEvent
+  | SubscribedEvent
+  | TransferredEvent
+  | UnassignedEvent
+  | UnlabeledEvent
+  | UnlockedEvent
+  | UnmarkedAsDuplicateEvent
+  | UnpinnedEvent
+  | UnsubscribedEvent
+  | UserBlockedEvent
+
+"""
+The connection type for PullRequestTimelineItems.
+"""
+type PullRequestTimelineItemsConnection {
+  """
+  A list of edges.
+  """
+  edges: [PullRequestTimelineItemsEdge]
+
+  """
+  Identifies the count of items after applying `before` and `after` filters.
+  """
+  filteredCount: Int!
+
+  """
+  A list of nodes.
+  """
+  nodes: [PullRequestTimelineItems]
+
+  """
+  Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing.
+  """
+  pageCount: Int!
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+
+  """
+  Identifies the date and time when the timeline was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+An edge in a connection.
+"""
+type PullRequestTimelineItemsEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PullRequestTimelineItems
+}
+
+"""
+The possible item types found in a timeline.
+"""
+enum PullRequestTimelineItemsItemType {
+  """
+  Represents a 'added_to_project' event on a given issue or pull request.
+  """
+  ADDED_TO_PROJECT_EVENT
+
+  """
+  Represents an 'assigned' event on any assignable object.
+  """
+  ASSIGNED_EVENT
+
+  """
+  Represents a 'automatic_base_change_failed' event on a given pull request.
+  """
+  AUTOMATIC_BASE_CHANGE_FAILED_EVENT
+
+  """
+  Represents a 'automatic_base_change_succeeded' event on a given pull request.
+  """
+  AUTOMATIC_BASE_CHANGE_SUCCEEDED_EVENT
+
+  """
+  Represents a 'base_ref_changed' event on a given issue or pull request.
+  """
+  BASE_REF_CHANGED_EVENT
+
+  """
+  Represents a 'base_ref_force_pushed' event on a given pull request.
+  """
+  BASE_REF_FORCE_PUSHED_EVENT
+
+  """
+  Represents a 'closed' event on any `Closable`.
+  """
+  CLOSED_EVENT
+
+  """
+  Represents a 'comment_deleted' event on a given issue or pull request.
+  """
+  COMMENT_DELETED_EVENT
+
+  """
+  Represents a 'connected' event on a given issue or pull request.
+  """
+  CONNECTED_EVENT
+
+  """
+  Represents a 'converted_note_to_issue' event on a given issue or pull request.
+  """
+  CONVERTED_NOTE_TO_ISSUE_EVENT
+
+  """
+  Represents a 'convert_to_draft' event on a given pull request.
+  """
+  CONVERT_TO_DRAFT_EVENT
+
+  """
+  Represents a mention made by one issue or pull request to another.
+  """
+  CROSS_REFERENCED_EVENT
+
+  """
+  Represents a 'demilestoned' event on a given issue or pull request.
+  """
+  DEMILESTONED_EVENT
+
+  """
+  Represents a 'deployed' event on a given pull request.
+  """
+  DEPLOYED_EVENT
+
+  """
+  Represents a 'deployment_environment_changed' event on a given pull request.
+  """
+  DEPLOYMENT_ENVIRONMENT_CHANGED_EVENT
+
+  """
+  Represents a 'disconnected' event on a given issue or pull request.
+  """
+  DISCONNECTED_EVENT
+
+  """
+  Represents a 'head_ref_deleted' event on a given pull request.
+  """
+  HEAD_REF_DELETED_EVENT
+
+  """
+  Represents a 'head_ref_force_pushed' event on a given pull request.
+  """
+  HEAD_REF_FORCE_PUSHED_EVENT
+
+  """
+  Represents a 'head_ref_restored' event on a given pull request.
+  """
+  HEAD_REF_RESTORED_EVENT
+
+  """
+  Represents a comment on an Issue.
+  """
+  ISSUE_COMMENT
+
+  """
+  Represents a 'labeled' event on a given issue or pull request.
+  """
+  LABELED_EVENT
+
+  """
+  Represents a 'locked' event on a given issue or pull request.
+  """
+  LOCKED_EVENT
+
+  """
+  Represents a 'marked_as_duplicate' event on a given issue or pull request.
+  """
+  MARKED_AS_DUPLICATE_EVENT
+
+  """
+  Represents a 'mentioned' event on a given issue or pull request.
+  """
+  MENTIONED_EVENT
+
+  """
+  Represents a 'merged' event on a given pull request.
+  """
+  MERGED_EVENT
+
+  """
+  Represents a 'milestoned' event on a given issue or pull request.
+  """
+  MILESTONED_EVENT
+
+  """
+  Represents a 'moved_columns_in_project' event on a given issue or pull request.
+  """
+  MOVED_COLUMNS_IN_PROJECT_EVENT
+
+  """
+  Represents a 'pinned' event on a given issue or pull request.
+  """
+  PINNED_EVENT
+
+  """
+  Represents a Git commit part of a pull request.
+  """
+  PULL_REQUEST_COMMIT
+
+  """
+  Represents a commit comment thread part of a pull request.
+  """
+  PULL_REQUEST_COMMIT_COMMENT_THREAD
+
+  """
+  A review object for a given pull request.
+  """
+  PULL_REQUEST_REVIEW
+
+  """
+  A threaded list of comments for a given pull request.
+  """
+  PULL_REQUEST_REVIEW_THREAD
+
+  """
+  Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits.
+  """
+  PULL_REQUEST_REVISION_MARKER
+
+  """
+  Represents a 'ready_for_review' event on a given pull request.
+  """
+  READY_FOR_REVIEW_EVENT
+
+  """
+  Represents a 'referenced' event on a given `ReferencedSubject`.
+  """
+  REFERENCED_EVENT
+
+  """
+  Represents a 'removed_from_project' event on a given issue or pull request.
+  """
+  REMOVED_FROM_PROJECT_EVENT
+
+  """
+  Represents a 'renamed' event on a given issue or pull request
+  """
+  RENAMED_TITLE_EVENT
+
+  """
+  Represents a 'reopened' event on any `Closable`.
+  """
+  REOPENED_EVENT
+
+  """
+  Represents a 'review_dismissed' event on a given issue or pull request.
+  """
+  REVIEW_DISMISSED_EVENT
+
+  """
+  Represents an 'review_requested' event on a given pull request.
+  """
+  REVIEW_REQUESTED_EVENT
+
+  """
+  Represents an 'review_request_removed' event on a given pull request.
+  """
+  REVIEW_REQUEST_REMOVED_EVENT
+
+  """
+  Represents a 'subscribed' event on a given `Subscribable`.
+  """
+  SUBSCRIBED_EVENT
+
+  """
+  Represents a 'transferred' event on a given issue or pull request.
+  """
+  TRANSFERRED_EVENT
+
+  """
+  Represents an 'unassigned' event on any assignable object.
+  """
+  UNASSIGNED_EVENT
+
+  """
+  Represents an 'unlabeled' event on a given issue or pull request.
+  """
+  UNLABELED_EVENT
+
+  """
+  Represents an 'unlocked' event on a given issue or pull request.
+  """
+  UNLOCKED_EVENT
+
+  """
+  Represents an 'unmarked_as_duplicate' event on a given issue or pull request.
+  """
+  UNMARKED_AS_DUPLICATE_EVENT
+
+  """
+  Represents an 'unpinned' event on a given issue or pull request.
+  """
+  UNPINNED_EVENT
+
+  """
+  Represents an 'unsubscribed' event on a given `Subscribable`.
+  """
+  UNSUBSCRIBED_EVENT
+
+  """
+  Represents a 'user_blocked' event on a given user.
+  """
+  USER_BLOCKED_EVENT
+}
+
+"""
+The possible target states when updating a pull request.
+"""
+enum PullRequestUpdateState {
+  """
+  A pull request that has been closed without being merged.
+  """
+  CLOSED
+
+  """
+  A pull request that is still open.
+  """
+  OPEN
+}
+
+"""
+A Git push.
+"""
+type Push implements Node @preview(toggledBy: "antiope-preview") {
+  id: ID!
+
+  """
+  The SHA after the push
+  """
+  nextSha: GitObjectID
+
+  """
+  The permalink for this push.
+  """
+  permalink: URI!
+
+  """
+  The SHA before the push
+  """
+  previousSha: GitObjectID
+
+  """
+  The user who pushed
+  """
+  pusher: User!
+
+  """
+  The repository that was pushed to
+  """
+  repository: Repository!
+}
+
+"""
+A team, user or app who has the ability to push to a protected branch.
+"""
+type PushAllowance implements Node {
+  """
+  The actor that can push.
+  """
+  actor: PushAllowanceActor
+
+  """
+  Identifies the branch protection rule associated with the allowed user or team.
+  """
+  branchProtectionRule: BranchProtectionRule
+  id: ID!
+}
+
+"""
+Types that can be an actor.
+"""
+union PushAllowanceActor = App | Team | User
+
+"""
+The connection type for PushAllowance.
+"""
+type PushAllowanceConnection {
+  """
+  A list of edges.
+  """
+  edges: [PushAllowanceEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [PushAllowance]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type PushAllowanceEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: PushAllowance
+}
+
+"""
+The query root of GitHub's GraphQL interface.
+"""
+type Query {
+  """
+  Look up a code of conduct by its key
+  """
+  codeOfConduct(
+    """
+    The code of conduct's key
+    """
+    key: String!
+  ): CodeOfConduct
+
+  """
+  Look up a code of conduct by its key
+  """
+  codesOfConduct: [CodeOfConduct]
+
+  """
+  Look up an enterprise by URL slug.
+  """
+  enterprise(
+    """
+    The enterprise invitation token.
+    """
+    invitationToken: String
+
+    """
+    The enterprise URL slug.
+    """
+    slug: String!
+  ): Enterprise
+
+  """
+  Look up a pending enterprise administrator invitation by invitee, enterprise and role.
+  """
+  enterpriseAdministratorInvitation(
+    """
+    The slug of the enterprise the user was invited to join.
+    """
+    enterpriseSlug: String!
+
+    """
+    The role for the business member invitation.
+    """
+    role: EnterpriseAdministratorRole!
+
+    """
+    The login of the user invited to join the business.
+    """
+    userLogin: String!
+  ): EnterpriseAdministratorInvitation
+
+  """
+  Look up a pending enterprise administrator invitation by invitation token.
+  """
+  enterpriseAdministratorInvitationByToken(
+    """
+    The invitation token sent with the invitation email.
+    """
+    invitationToken: String!
+  ): EnterpriseAdministratorInvitation
+
+  """
+  Look up an open source license by its key
+  """
+  license(
+    """
+    The license's downcased SPDX ID
+    """
+    key: String!
+  ): License
+
+  """
+  Return a list of known open source licenses
+  """
+  licenses: [License]!
+
+  """
+  Get alphabetically sorted list of Marketplace categories
+  """
+  marketplaceCategories(
+    """
+    Exclude categories with no listings.
+    """
+    excludeEmpty: Boolean
+
+    """
+    Returns top level categories only, excluding any subcategories.
+    """
+    excludeSubcategories: Boolean
+
+    """
+    Return only the specified categories.
+    """
+    includeCategories: [String!]
+  ): [MarketplaceCategory!]!
+
+  """
+  Look up a Marketplace category by its slug.
+  """
+  marketplaceCategory(
+    """
+    The URL slug of the category.
+    """
+    slug: String!
+
+    """
+    Also check topic aliases for the category slug
+    """
+    useTopicAliases: Boolean
+  ): MarketplaceCategory
+
+  """
+  Look up a single Marketplace listing
+  """
+  marketplaceListing(
+    """
+    Select the listing that matches this slug. It's the short name of the listing used in its URL.
+    """
+    slug: String!
+  ): MarketplaceListing
+
+  """
+  Look up Marketplace listings
+  """
+  marketplaceListings(
+    """
+    Select listings that can be administered by the specified user.
+    """
+    adminId: ID
+
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Select listings visible to the viewer even if they are not approved. If omitted or
+    false, only approved listings will be returned.
+    """
+    allStates: Boolean
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Select only listings with the given category.
+    """
+    categorySlug: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Select listings for products owned by the specified organization.
+    """
+    organizationId: ID
+
+    """
+    Select only listings where the primary category matches the given category slug.
+    """
+    primaryCategoryOnly: Boolean = false
+
+    """
+    Select the listings with these slugs, if they are visible to the viewer.
+    """
+    slugs: [String]
+
+    """
+    Also check topic aliases for the category slug
+    """
+    useTopicAliases: Boolean
+
+    """
+    Select listings to which user has admin access. If omitted, listings visible to the
+    viewer are returned.
+    """
+    viewerCanAdmin: Boolean
+
+    """
+    Select only listings that offer a free trial.
+    """
+    withFreeTrialsOnly: Boolean = false
+  ): MarketplaceListingConnection!
+
+  """
+  Return information about the GitHub instance
+  """
+  meta: GitHubMetadata!
+
+  """
+  Fetches an object given its ID.
+  """
+  node(
+    """
+    ID of the object.
+    """
+    id: ID!
+  ): Node
+
+  """
+  Lookup nodes by a list of IDs.
+  """
+  nodes(
+    """
+    The list of node IDs.
+    """
+    ids: [ID!]!
+  ): [Node]!
+
+  """
+  Lookup a organization by login.
+  """
+  organization(
+    """
+    The organization's login.
+    """
+    login: String!
+  ): Organization
+
+  """
+  The client's rate limit information.
+  """
+  rateLimit(
+    """
+    If true, calculate the cost for the query without evaluating it
+    """
+    dryRun: Boolean = false
+  ): RateLimit
+
+  """
+  Hack to workaround https://github.com/facebook/relay/issues/112 re-exposing the root query object
+  """
+  relay: Query!
+
+  """
+  Lookup a given repository by the owner and repository name.
+  """
+  repository(
+    """
+    The name of the repository
+    """
+    name: String!
+
+    """
+    The login field of a user or organization
+    """
+    owner: String!
+  ): Repository
+
+  """
+  Lookup a repository owner (ie. either a User or an Organization) by login.
+  """
+  repositoryOwner(
+    """
+    The username to lookup the owner by.
+    """
+    login: String!
+  ): RepositoryOwner
+
+  """
+  Lookup resource by a URL.
+  """
+  resource(
+    """
+    The URL.
+    """
+    url: URI!
+  ): UniformResourceLocatable
+
+  """
+  Perform a search across resources.
+  """
+  search(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    The search string to look for.
+    """
+    query: String!
+
+    """
+    The types of search items to search within.
+    """
+    type: SearchType!
+  ): SearchResultItemConnection!
+
+  """
+  GitHub Security Advisories
+  """
+  securityAdvisories(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Filter advisories by identifier, e.g. GHSA or CVE.
+    """
+    identifier: SecurityAdvisoryIdentifierFilter
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for the returned topics.
+    """
+    orderBy: SecurityAdvisoryOrder = { field: UPDATED_AT, direction: DESC }
+
+    """
+    Filter advisories to those published since a time in the past.
+    """
+    publishedSince: DateTime
+
+    """
+    Filter advisories to those updated since a time in the past.
+    """
+    updatedSince: DateTime
+  ): SecurityAdvisoryConnection!
+
+  """
+  Fetch a Security Advisory by its GHSA ID
+  """
+  securityAdvisory(
+    """
+    GitHub Security Advisory ID.
+    """
+    ghsaId: String!
+  ): SecurityAdvisory
+
+  """
+  Software Vulnerabilities documented by GitHub Security Advisories
+  """
+  securityVulnerabilities(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    An ecosystem to filter vulnerabilities by.
+    """
+    ecosystem: SecurityAdvisoryEcosystem
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for the returned topics.
+    """
+    orderBy: SecurityVulnerabilityOrder = { field: UPDATED_AT, direction: DESC }
+
+    """
+    A package name to filter vulnerabilities by.
+    """
+    package: String
+
+    """
+    A list of severities to filter vulnerabilities by.
+    """
+    severities: [SecurityAdvisorySeverity!]
+  ): SecurityVulnerabilityConnection!
+
+  """
+  Look up a single Sponsors Listing
+  """
+  sponsorsListing(
+    """
+    Select the Sponsors listing which matches this slug
+    """
+    slug: String!
+  ): SponsorsListing
+  @deprecated(
+    reason: "`Query.sponsorsListing` will be removed. Use `Sponsorable.sponsorsListing` instead. Removal on 2020-04-01 UTC."
+  )
+
+  """
+  Look up a topic by name.
+  """
+  topic(
+    """
+    The topic's name.
+    """
+    name: String!
+  ): Topic
+
+  """
+  Lookup a user by login.
+  """
+  user(
+    """
+    The user's login.
+    """
+    login: String!
+  ): User
+
+  """
+  The currently authenticated user.
+  """
+  viewer: User!
+}
+
+"""
+Represents the client's rate limit.
+"""
+type RateLimit {
+  """
+  The point cost for the current query counting against the rate limit.
+  """
+  cost: Int!
+
+  """
+  The maximum number of points the client is permitted to consume in a 60 minute window.
+  """
+  limit: Int!
+
+  """
+  The maximum number of nodes this query may return
+  """
+  nodeCount: Int!
+
+  """
+  The number of points remaining in the current rate limit window.
+  """
+  remaining: Int!
+
+  """
+  The time at which the current rate limit window resets in UTC epoch seconds.
+  """
+  resetAt: DateTime!
+
+  """
+  The number of points used in the current rate limit window.
+  """
+  used: Int!
+}
+
+"""
+Represents a subject that can be reacted on.
+"""
+interface Reactable {
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+}
+
+"""
+The connection type for User.
+"""
+type ReactingUserConnection {
+  """
+  A list of edges.
+  """
+  edges: [ReactingUserEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a user that's made a reaction.
+"""
+type ReactingUserEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+  node: User!
+
+  """
+  The moment when the user made the reaction.
+  """
+  reactedAt: DateTime!
+}
+
+"""
+An emoji reaction to a particular piece of content.
+"""
+type Reaction implements Node {
+  """
+  Identifies the emoji reaction.
+  """
+  content: ReactionContent!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  The reactable piece of content
+  """
+  reactable: Reactable!
+
+  """
+  Identifies the user who created this reaction.
+  """
+  user: User
+}
+
+"""
+A list of reactions that have been left on the subject.
+"""
+type ReactionConnection {
+  """
+  A list of edges.
+  """
+  edges: [ReactionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Reaction]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+
+  """
+  Whether or not the authenticated user has left a reaction on the subject.
+  """
+  viewerHasReacted: Boolean!
+}
+
+"""
+Emojis that can be attached to Issues, Pull Requests and Comments.
+"""
+enum ReactionContent {
+  """
+  Represents the `:confused:` emoji.
+  """
+  CONFUSED
+
+  """
+  Represents the `:eyes:` emoji.
+  """
+  EYES
+
+  """
+  Represents the `:heart:` emoji.
+  """
+  HEART
+
+  """
+  Represents the `:hooray:` emoji.
+  """
+  HOORAY
+
+  """
+  Represents the `:laugh:` emoji.
+  """
+  LAUGH
+
+  """
+  Represents the `:rocket:` emoji.
+  """
+  ROCKET
+
+  """
+  Represents the `:-1:` emoji.
+  """
+  THUMBS_DOWN
+
+  """
+  Represents the `:+1:` emoji.
+  """
+  THUMBS_UP
+}
+
+"""
+An edge in a connection.
+"""
+type ReactionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Reaction
+}
+
+"""
+A group of emoji reactions to a particular piece of content.
+"""
+type ReactionGroup {
+  """
+  Identifies the emoji reaction.
+  """
+  content: ReactionContent!
+
+  """
+  Identifies when the reaction was created.
+  """
+  createdAt: DateTime
+
+  """
+  The subject that was reacted to.
+  """
+  subject: Reactable!
+
+  """
+  Users who have reacted to the reaction subject with the emotion represented by this reaction group
+  """
+  users(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): ReactingUserConnection!
+
+  """
+  Whether or not the authenticated user has left a reaction on the subject.
+  """
+  viewerHasReacted: Boolean!
+}
+
+"""
+Ways in which lists of reactions can be ordered upon return.
+"""
+input ReactionOrder {
+  """
+  The direction in which to order reactions by the specified field.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order reactions by.
+  """
+  field: ReactionOrderField!
+}
+
+"""
+A list of fields that reactions can be ordered by.
+"""
+enum ReactionOrderField {
+  """
+  Allows ordering a list of reactions by when they were created.
+  """
+  CREATED_AT
+}
+
+"""
+Represents a 'ready_for_review' event on a given pull request.
+"""
+type ReadyForReviewEvent implements Node & UniformResourceLocatable {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The HTTP path for this ready for review event.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this ready for review event.
+  """
+  url: URI!
+}
+
+"""
+Represents a Git reference.
+"""
+type Ref implements Node {
+  """
+  A list of pull requests with this ref as the head ref.
+  """
+  associatedPullRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    The base ref name to filter the pull requests by.
+    """
+    baseRefName: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    The head ref name to filter the pull requests by.
+    """
+    headRefName: String
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pull requests returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the pull requests by.
+    """
+    states: [PullRequestState!]
+  ): PullRequestConnection!
+  id: ID!
+
+  """
+  The ref name.
+  """
+  name: String!
+
+  """
+  The ref's prefix, such as `refs/heads/` or `refs/tags/`.
+  """
+  prefix: String!
+
+  """
+  The repository the ref belongs to.
+  """
+  repository: Repository!
+
+  """
+  The object the ref points to. Returns null when object does not exist.
+  """
+  target: GitObject
+}
+
+"""
+The connection type for Ref.
+"""
+type RefConnection {
+  """
+  A list of edges.
+  """
+  edges: [RefEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Ref]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type RefEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Ref
+}
+
+"""
+Ways in which lists of git refs can be ordered upon return.
+"""
+input RefOrder {
+  """
+  The direction in which to order refs by the specified field.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order refs by.
+  """
+  field: RefOrderField!
+}
+
+"""
+Properties by which ref connections can be ordered.
+"""
+enum RefOrderField {
+  """
+  Order refs by their alphanumeric name
+  """
+  ALPHABETICAL
+
+  """
+  Order refs by underlying commit date if the ref prefix is refs/tags/
+  """
+  TAG_COMMIT_DATE
+}
+
+"""
+A ref update
+"""
+input RefUpdate @preview(toggledBy: "update-refs-preview") {
+  """
+  The value this ref should be updated to.
+  """
+  afterOid: GitObjectID!
+
+  """
+  The value this ref needs to point to before the update.
+  """
+  beforeOid: GitObjectID
+
+  """
+  Force a non fast-forward update.
+  """
+  force: Boolean = false
+
+  """
+  The fully qualified name of the ref to be update. For example `refs/heads/branch-name`
+  """
+  name: GitRefname!
+}
+
+"""
+Represents a 'referenced' event on a given `ReferencedSubject`.
+"""
+type ReferencedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the commit associated with the 'referenced' event.
+  """
+  commit: Commit
+
+  """
+  Identifies the repository associated with the 'referenced' event.
+  """
+  commitRepository: Repository!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Reference originated in a different repository.
+  """
+  isCrossRepository: Boolean!
+
+  """
+  Checks if the commit message itself references the subject. Can be false in the case of a commit comment reference.
+  """
+  isDirectReference: Boolean!
+
+  """
+  Object referenced by event.
+  """
+  subject: ReferencedSubject!
+}
+
+"""
+Any referencable object
+"""
+union ReferencedSubject = Issue | PullRequest
+
+"""
+Autogenerated input type of RegenerateEnterpriseIdentityProviderRecoveryCodes
+"""
+input RegenerateEnterpriseIdentityProviderRecoveryCodesInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set an identity provider.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+}
+
+"""
+Autogenerated return type of RegenerateEnterpriseIdentityProviderRecoveryCodes
+"""
+type RegenerateEnterpriseIdentityProviderRecoveryCodesPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The identity provider for the enterprise.
+  """
+  identityProvider: EnterpriseIdentityProvider
+}
+
+"""
+A release contains the content for a release.
+"""
+type Release implements Node & UniformResourceLocatable {
+  """
+  The author of the release
+  """
+  author: User
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The description of the release.
+  """
+  description: String
+
+  """
+  The description of this release rendered to HTML.
+  """
+  descriptionHTML: HTML
+  id: ID!
+
+  """
+  Whether or not the release is a draft
+  """
+  isDraft: Boolean!
+
+  """
+  Whether or not the release is a prerelease
+  """
+  isPrerelease: Boolean!
+
+  """
+  The title of the release.
+  """
+  name: String
+
+  """
+  Identifies the date and time when the release was created.
+  """
+  publishedAt: DateTime
+
+  """
+  List of releases assets which are dependent on this release.
+  """
+  releaseAssets(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    A list of names to filter the assets by.
+    """
+    name: String
+  ): ReleaseAssetConnection!
+
+  """
+  The HTTP path for this issue
+  """
+  resourcePath: URI!
+
+  """
+  A description of the release, rendered to HTML without any links in it.
+  """
+  shortDescriptionHTML(
+    """
+    How many characters to return.
+    """
+    limit: Int = 200
+  ): HTML
+
+  """
+  The Git tag the release points to
+  """
+  tag: Ref
+
+  """
+  The name of the release's Git tag
+  """
+  tagName: String!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this issue
+  """
+  url: URI!
+}
+
+"""
+A release asset contains the content for a release asset.
+"""
+type ReleaseAsset implements Node {
+  """
+  The asset's content-type
+  """
+  contentType: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The number of times this asset was downloaded
+  """
+  downloadCount: Int!
+
+  """
+  Identifies the URL where you can download the release asset via the browser.
+  """
+  downloadUrl: URI!
+  id: ID!
+
+  """
+  Identifies the title of the release asset.
+  """
+  name: String!
+
+  """
+  Release that the asset is associated with
+  """
+  release: Release
+
+  """
+  The size (in bytes) of the asset
+  """
+  size: Int!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The user that performed the upload
+  """
+  uploadedBy: User!
+
+  """
+  Identifies the URL of the release asset.
+  """
+  url: URI!
+}
+
+"""
+The connection type for ReleaseAsset.
+"""
+type ReleaseAssetConnection {
+  """
+  A list of edges.
+  """
+  edges: [ReleaseAssetEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [ReleaseAsset]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ReleaseAssetEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: ReleaseAsset
+}
+
+"""
+The connection type for Release.
+"""
+type ReleaseConnection {
+  """
+  A list of edges.
+  """
+  edges: [ReleaseEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Release]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ReleaseEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Release
+}
+
+"""
+Ways in which lists of releases can be ordered upon return.
+"""
+input ReleaseOrder {
+  """
+  The direction in which to order releases by the specified field.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order releases by.
+  """
+  field: ReleaseOrderField!
+}
+
+"""
+Properties by which release connections can be ordered.
+"""
+enum ReleaseOrderField {
+  """
+  Order releases by creation time
+  """
+  CREATED_AT
+
+  """
+  Order releases alphabetically by name
+  """
+  NAME
+}
+
+"""
+Autogenerated input type of RemoveAssigneesFromAssignable
+"""
+input RemoveAssigneesFromAssignableInput {
+  """
+  The id of the assignable object to remove assignees from.
+  """
+  assignableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "Assignable"
+  )
+
+  """
+  The id of users to remove as assignees.
+  """
+  assigneeIds: [ID!]! @possibleTypes(concreteTypes: ["User"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated return type of RemoveAssigneesFromAssignable
+"""
+type RemoveAssigneesFromAssignablePayload {
+  """
+  The item that was unassigned.
+  """
+  assignable: Assignable
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of RemoveEnterpriseAdmin
+"""
+input RemoveEnterpriseAdminInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Enterprise ID from which to remove the administrator.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The login of the user to remove as an administrator.
+  """
+  login: String!
+}
+
+"""
+Autogenerated return type of RemoveEnterpriseAdmin
+"""
+type RemoveEnterpriseAdminPayload {
+  """
+  The user who was removed as an administrator.
+  """
+  admin: User
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated enterprise.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of removing an administrator.
+  """
+  message: String
+
+  """
+  The viewer performing the mutation.
+  """
+  viewer: User
+}
+
+"""
+Autogenerated input type of RemoveEnterpriseIdentityProvider
+"""
+input RemoveEnterpriseIdentityProviderInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise from which to remove the identity provider.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+}
+
+"""
+Autogenerated return type of RemoveEnterpriseIdentityProvider
+"""
+type RemoveEnterpriseIdentityProviderPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The identity provider that was removed from the enterprise.
+  """
+  identityProvider: EnterpriseIdentityProvider
+}
+
+"""
+Autogenerated input type of RemoveEnterpriseOrganization
+"""
+input RemoveEnterpriseOrganizationInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise from which the organization should be removed.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The ID of the organization to remove from the enterprise.
+  """
+  organizationId: ID! @possibleTypes(concreteTypes: ["Organization"])
+}
+
+"""
+Autogenerated return type of RemoveEnterpriseOrganization
+"""
+type RemoveEnterpriseOrganizationPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated enterprise.
+  """
+  enterprise: Enterprise
+
+  """
+  The organization that was removed from the enterprise.
+  """
+  organization: Organization
+
+  """
+  The viewer performing the mutation.
+  """
+  viewer: User
+}
+
+"""
+Autogenerated input type of RemoveLabelsFromLabelable
+"""
+input RemoveLabelsFromLabelableInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ids of labels to remove.
+  """
+  labelIds: [ID!]! @possibleTypes(concreteTypes: ["Label"])
+
+  """
+  The id of the Labelable to remove labels from.
+  """
+  labelableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "Labelable"
+  )
+}
+
+"""
+Autogenerated return type of RemoveLabelsFromLabelable
+"""
+type RemoveLabelsFromLabelablePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Labelable the labels were removed from.
+  """
+  labelable: Labelable
+}
+
+"""
+Autogenerated input type of RemoveOutsideCollaborator
+"""
+input RemoveOutsideCollaboratorInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the organization to remove the outside collaborator from.
+  """
+  organizationId: ID! @possibleTypes(concreteTypes: ["Organization"])
+
+  """
+  The ID of the outside collaborator to remove.
+  """
+  userId: ID! @possibleTypes(concreteTypes: ["User"])
+}
+
+"""
+Autogenerated return type of RemoveOutsideCollaborator
+"""
+type RemoveOutsideCollaboratorPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The user that was removed as an outside collaborator.
+  """
+  removedUser: User
+}
+
+"""
+Autogenerated input type of RemoveReaction
+"""
+input RemoveReactionInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of the emoji reaction to remove.
+  """
+  content: ReactionContent!
+
+  """
+  The Node ID of the subject to modify.
+  """
+  subjectId: ID!
+  @possibleTypes(
+    concreteTypes: [
+      "CommitComment"
+      "Issue"
+      "IssueComment"
+      "PullRequest"
+      "PullRequestReview"
+      "PullRequestReviewComment"
+      "TeamDiscussion"
+      "TeamDiscussionComment"
+    ]
+    abstractType: "Reactable"
+  )
+}
+
+"""
+Autogenerated return type of RemoveReaction
+"""
+type RemoveReactionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The reaction object.
+  """
+  reaction: Reaction
+
+  """
+  The reactable subject.
+  """
+  subject: Reactable
+}
+
+"""
+Autogenerated input type of RemoveStar
+"""
+input RemoveStarInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Starrable ID to unstar.
+  """
+  starrableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Gist", "Repository", "Topic"]
+    abstractType: "Starrable"
+  )
+}
+
+"""
+Autogenerated return type of RemoveStar
+"""
+type RemoveStarPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The starrable.
+  """
+  starrable: Starrable
+}
+
+"""
+Represents a 'removed_from_project' event on a given issue or pull request.
+"""
+type RemovedFromProjectEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  Project referenced by event.
+  """
+  project: Project @preview(toggledBy: "starfox-preview")
+
+  """
+  Column name referenced by this project event.
+  """
+  projectColumnName: String! @preview(toggledBy: "starfox-preview")
+}
+
+"""
+Represents a 'renamed' event on a given issue or pull request
+"""
+type RenamedTitleEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the current title of the issue or pull request.
+  """
+  currentTitle: String!
+  id: ID!
+
+  """
+  Identifies the previous title of the issue or pull request.
+  """
+  previousTitle: String!
+
+  """
+  Subject that was renamed.
+  """
+  subject: RenamedTitleSubject!
+}
+
+"""
+An object which has a renamable title
+"""
+union RenamedTitleSubject = Issue | PullRequest
+
+"""
+Autogenerated input type of ReopenIssue
+"""
+input ReopenIssueInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the issue to be opened.
+  """
+  issueId: ID! @possibleTypes(concreteTypes: ["Issue"])
+}
+
+"""
+Autogenerated return type of ReopenIssue
+"""
+type ReopenIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The issue that was opened.
+  """
+  issue: Issue
+}
+
+"""
+Autogenerated input type of ReopenPullRequest
+"""
+input ReopenPullRequestInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the pull request to be reopened.
+  """
+  pullRequestId: ID! @possibleTypes(concreteTypes: ["PullRequest"])
+}
+
+"""
+Autogenerated return type of ReopenPullRequest
+"""
+type ReopenPullRequestPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The pull request that was reopened.
+  """
+  pullRequest: PullRequest
+}
+
+"""
+Represents a 'reopened' event on any `Closable`.
+"""
+type ReopenedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Object that was reopened.
+  """
+  closable: Closable!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+}
+
+"""
+Audit log entry for a repo.access event.
+"""
+type RepoAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+
+  """
+  The visibility of the repository
+  """
+  visibility: RepoAccessAuditEntryVisibility
+}
+
+"""
+The privacy of a repository
+"""
+enum RepoAccessAuditEntryVisibility {
+  """
+  The repository is visible only to users in the same business.
+  """
+  INTERNAL
+
+  """
+  The repository is visible only to those with explicit access.
+  """
+  PRIVATE
+
+  """
+  The repository is visible to everyone.
+  """
+  PUBLIC
+}
+
+"""
+Audit log entry for a repo.add_member event.
+"""
+type RepoAddMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+
+  """
+  The visibility of the repository
+  """
+  visibility: RepoAddMemberAuditEntryVisibility
+}
+
+"""
+The privacy of a repository
+"""
+enum RepoAddMemberAuditEntryVisibility {
+  """
+  The repository is visible only to users in the same business.
+  """
+  INTERNAL
+
+  """
+  The repository is visible only to those with explicit access.
+  """
+  PRIVATE
+
+  """
+  The repository is visible to everyone.
+  """
+  PUBLIC
+}
+
+"""
+Audit log entry for a repo.add_topic event.
+"""
+type RepoAddTopicAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TopicAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The name of the topic added to the repository
+  """
+  topic: Topic
+
+  """
+  The name of the topic added to the repository
+  """
+  topicName: String
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.archived event.
+"""
+type RepoArchivedAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+
+  """
+  The visibility of the repository
+  """
+  visibility: RepoArchivedAuditEntryVisibility
+}
+
+"""
+The privacy of a repository
+"""
+enum RepoArchivedAuditEntryVisibility {
+  """
+  The repository is visible only to users in the same business.
+  """
+  INTERNAL
+
+  """
+  The repository is visible only to those with explicit access.
+  """
+  PRIVATE
+
+  """
+  The repository is visible to everyone.
+  """
+  PUBLIC
+}
+
+"""
+Audit log entry for a repo.change_merge_setting event.
+"""
+type RepoChangeMergeSettingAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  Whether the change was to enable (true) or disable (false) the merge type
+  """
+  isEnabled: Boolean
+
+  """
+  The merge method affected by the change
+  """
+  mergeType: RepoChangeMergeSettingAuditEntryMergeType
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The merge options available for pull requests to this repository.
+"""
+enum RepoChangeMergeSettingAuditEntryMergeType {
+  """
+  The pull request is added to the base branch in a merge commit.
+  """
+  MERGE
+
+  """
+  Commits from the pull request are added onto the base branch individually without a merge commit.
+  """
+  REBASE
+
+  """
+  The pull request's commits are squashed into a single commit before they are merged to the base branch.
+  """
+  SQUASH
+}
+
+"""
+Audit log entry for a repo.config.disable_anonymous_git_access event.
+"""
+type RepoConfigDisableAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.disable_collaborators_only event.
+"""
+type RepoConfigDisableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.disable_contributors_only event.
+"""
+type RepoConfigDisableContributorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.disable_sockpuppet_disallowed event.
+"""
+type RepoConfigDisableSockpuppetDisallowedAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.enable_anonymous_git_access event.
+"""
+type RepoConfigEnableAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.enable_collaborators_only event.
+"""
+type RepoConfigEnableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.enable_contributors_only event.
+"""
+type RepoConfigEnableContributorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.enable_sockpuppet_disallowed event.
+"""
+type RepoConfigEnableSockpuppetDisallowedAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.lock_anonymous_git_access event.
+"""
+type RepoConfigLockAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.config.unlock_anonymous_git_access event.
+"""
+type RepoConfigUnlockAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repo.create event.
+"""
+type RepoCreateAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The name of the parent repository for this forked repository.
+  """
+  forkParentName: String
+
+  """
+  The name of the root repository for this netork.
+  """
+  forkSourceName: String
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+
+  """
+  The visibility of the repository
+  """
+  visibility: RepoCreateAuditEntryVisibility
+}
+
+"""
+The privacy of a repository
+"""
+enum RepoCreateAuditEntryVisibility {
+  """
+  The repository is visible only to users in the same business.
+  """
+  INTERNAL
+
+  """
+  The repository is visible only to those with explicit access.
+  """
+  PRIVATE
+
+  """
+  The repository is visible to everyone.
+  """
+  PUBLIC
+}
+
+"""
+Audit log entry for a repo.destroy event.
+"""
+type RepoDestroyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+
+  """
+  The visibility of the repository
+  """
+  visibility: RepoDestroyAuditEntryVisibility
+}
+
+"""
+The privacy of a repository
+"""
+enum RepoDestroyAuditEntryVisibility {
+  """
+  The repository is visible only to users in the same business.
+  """
+  INTERNAL
+
+  """
+  The repository is visible only to those with explicit access.
+  """
+  PRIVATE
+
+  """
+  The repository is visible to everyone.
+  """
+  PUBLIC
+}
+
+"""
+Audit log entry for a repo.remove_member event.
+"""
+type RepoRemoveMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+
+  """
+  The visibility of the repository
+  """
+  visibility: RepoRemoveMemberAuditEntryVisibility
+}
+
+"""
+The privacy of a repository
+"""
+enum RepoRemoveMemberAuditEntryVisibility {
+  """
+  The repository is visible only to users in the same business.
+  """
+  INTERNAL
+
+  """
+  The repository is visible only to those with explicit access.
+  """
+  PRIVATE
+
+  """
+  The repository is visible to everyone.
+  """
+  PUBLIC
+}
+
+"""
+Audit log entry for a repo.remove_topic event.
+"""
+type RepoRemoveTopicAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TopicAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The name of the topic added to the repository
+  """
+  topic: Topic
+
+  """
+  The name of the topic added to the repository
+  """
+  topicName: String
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The reasons a piece of content can be reported or minimized.
+"""
+enum ReportedContentClassifiers {
+  """
+  An abusive or harassing piece of content
+  """
+  ABUSE
+
+  """
+  A duplicated piece of content
+  """
+  DUPLICATE
+
+  """
+  An irrelevant piece of content
+  """
+  OFF_TOPIC
+
+  """
+  An outdated piece of content
+  """
+  OUTDATED
+
+  """
+  The content has been resolved
+  """
+  RESOLVED
+
+  """
+  A spammy piece of content
+  """
+  SPAM
+}
+
+"""
+A repository contains the content for a project.
+"""
+type Repository implements Node & PackageOwner & ProjectOwner & RepositoryInfo & Starrable & Subscribable & UniformResourceLocatable {
+  """
+  A list of users that can be assigned to issues in this repository.
+  """
+  assignableUsers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filters users with query on user name and login
+    """
+    query: String
+  ): UserConnection!
+
+  """
+  A list of branch protection rules for this repository.
+  """
+  branchProtectionRules(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): BranchProtectionRuleConnection!
+
+  """
+  Returns the code of conduct for this repository
+  """
+  codeOfConduct: CodeOfConduct
+
+  """
+  A list of collaborators associated with the repository.
+  """
+  collaborators(
+    """
+    Collaborators affiliation level with a repository.
+    """
+    affiliation: CollaboratorAffiliation
+
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filters users with query on user name and login
+    """
+    query: String
+  ): RepositoryCollaboratorConnection
+
+  """
+  A list of commit comments associated with the repository.
+  """
+  commitComments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CommitCommentConnection!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The Ref associated with the repository's default branch.
+  """
+  defaultBranchRef: Ref
+
+  """
+  Whether or not branches are automatically deleted when merged in this repository.
+  """
+  deleteBranchOnMerge: Boolean!
+
+  """
+  A list of dependency manifests contained in the repository
+  """
+  dependencyGraphManifests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Cursor to paginate dependencies
+    """
+    dependenciesAfter: String
+
+    """
+    Number of dependencies to fetch
+    """
+    dependenciesFirst: Int
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Flag to scope to only manifests with dependencies
+    """
+    withDependencies: Boolean
+  ): DependencyGraphManifestConnection @preview(toggledBy: "hawkgirl-preview")
+
+  """
+  A list of deploy keys that are on this repository.
+  """
+  deployKeys(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): DeployKeyConnection!
+
+  """
+  Deployments associated with the repository
+  """
+  deployments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Environments to list deployments for
+    """
+    environments: [String!]
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for deployments returned from the connection.
+    """
+    orderBy: DeploymentOrder = { field: CREATED_AT, direction: ASC }
+  ): DeploymentConnection!
+
+  """
+  The description of the repository.
+  """
+  description: String
+
+  """
+  The description of the repository rendered to HTML.
+  """
+  descriptionHTML: HTML!
+
+  """
+  The number of kilobytes this repository occupies on disk.
+  """
+  diskUsage: Int
+
+  """
+  Returns how many forks there are of this repository in the whole network.
+  """
+  forkCount: Int!
+
+  """
+  A list of direct forked repositories.
+  """
+  forks(
+    """
+    Array of viewer's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    current viewer owns.
+    """
+    affiliations: [RepositoryAffiliation]
+
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    If non-null, filters repositories according to whether they have been locked
+    """
+    isLocked: Boolean
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories returned from the connection
+    """
+    orderBy: RepositoryOrder
+
+    """
+    Array of owner's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    organization or user being viewed owns.
+    """
+    ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+
+    """
+    If non-null, filters repositories according to privacy
+    """
+    privacy: RepositoryPrivacy
+  ): RepositoryConnection!
+
+  """
+  The funding links for this repository
+  """
+  fundingLinks: [FundingLink!]!
+
+  """
+  Indicates if the repository has issues feature enabled.
+  """
+  hasIssuesEnabled: Boolean!
+
+  """
+  Indicates if the repository has the Projects feature enabled.
+  """
+  hasProjectsEnabled: Boolean!
+
+  """
+  Indicates if the repository has wiki feature enabled.
+  """
+  hasWikiEnabled: Boolean!
+
+  """
+  The repository's URL.
+  """
+  homepageUrl: URI
+  id: ID!
+
+  """
+  Indicates if the repository is unmaintained.
+  """
+  isArchived: Boolean!
+
+  """
+  Returns whether or not this repository disabled.
+  """
+  isDisabled: Boolean!
+
+  """
+  Returns whether or not this repository is empty.
+  """
+  isEmpty: Boolean!
+
+  """
+  Identifies if the repository is a fork.
+  """
+  isFork: Boolean!
+
+  """
+  Indicates if the repository has been locked or not.
+  """
+  isLocked: Boolean!
+
+  """
+  Identifies if the repository is a mirror.
+  """
+  isMirror: Boolean!
+
+  """
+  Identifies if the repository is private.
+  """
+  isPrivate: Boolean!
+
+  """
+  Identifies if the repository is a template that can be used to generate new repositories.
+  """
+  isTemplate: Boolean!
+
+  """
+  Returns a single issue from the current repository by number.
+  """
+  issue(
+    """
+    The number for the issue to be returned.
+    """
+    number: Int!
+  ): Issue
+
+  """
+  Returns a single issue-like object from the current repository by number.
+  """
+  issueOrPullRequest(
+    """
+    The number for the issue to be returned.
+    """
+    number: Int!
+  ): IssueOrPullRequest
+
+  """
+  A list of issues that have been opened in the repository.
+  """
+  issues(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Filtering options for issues returned from the connection.
+    """
+    filterBy: IssueFilters
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for issues returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the issues by.
+    """
+    states: [IssueState!]
+  ): IssueConnection!
+
+  """
+  Returns a single label by name
+  """
+  label(
+    """
+    Label name
+    """
+    name: String!
+  ): Label
+
+  """
+  A list of labels associated with the repository.
+  """
+  labels(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for labels returned from the connection.
+    """
+    orderBy: LabelOrder = { field: CREATED_AT, direction: ASC }
+
+    """
+    If provided, searches labels by name and description.
+    """
+    query: String
+  ): LabelConnection
+
+  """
+  A list containing a breakdown of the language composition of the repository.
+  """
+  languages(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: LanguageOrder
+  ): LanguageConnection
+
+  """
+  The license associated with the repository
+  """
+  licenseInfo: License
+
+  """
+  The reason the repository has been locked.
+  """
+  lockReason: RepositoryLockReason
+
+  """
+  A list of Users that can be mentioned in the context of the repository.
+  """
+  mentionableUsers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filters users with query on user name and login
+    """
+    query: String
+  ): UserConnection!
+
+  """
+  Whether or not PRs are merged with a merge commit on this repository.
+  """
+  mergeCommitAllowed: Boolean!
+
+  """
+  Returns a single milestone from the current repository by number.
+  """
+  milestone(
+    """
+    The number for the milestone to be returned.
+    """
+    number: Int!
+  ): Milestone
+
+  """
+  A list of milestones associated with the repository.
+  """
+  milestones(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for milestones.
+    """
+    orderBy: MilestoneOrder
+
+    """
+    Filters milestones with a query on the title
+    """
+    query: String
+
+    """
+    Filter by the state of the milestones.
+    """
+    states: [MilestoneState!]
+  ): MilestoneConnection
+
+  """
+  The repository's original mirror URL.
+  """
+  mirrorUrl: URI
+
+  """
+  The name of the repository.
+  """
+  name: String!
+
+  """
+  The repository's name with owner.
+  """
+  nameWithOwner: String!
+
+  """
+  A Git object in the repository
+  """
+  object(
+    """
+    A Git revision expression suitable for rev-parse
+    """
+    expression: String
+
+    """
+    The Git object ID
+    """
+    oid: GitObjectID
+  ): GitObject
+
+  """
+  The image used to represent this repository in Open Graph data.
+  """
+  openGraphImageUrl: URI!
+
+  """
+  The User owner of the repository.
+  """
+  owner: RepositoryOwner!
+
+  """
+  A list of packages under the owner.
+  """
+  packages(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Find packages by their names.
+    """
+    names: [String]
+
+    """
+    Ordering of the returned packages.
+    """
+    orderBy: PackageOrder = { field: CREATED_AT, direction: DESC }
+
+    """
+    Filter registry package by type.
+    """
+    packageType: PackageType
+
+    """
+    Find packages in a repository by ID.
+    """
+    repositoryId: ID
+  ): PackageConnection!
+
+  """
+  The repository parent, if this is a fork.
+  """
+  parent: Repository
+
+  """
+  A list of pinned issues for this repository.
+  """
+  pinnedIssues(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PinnedIssueConnection @preview(toggledBy: "elektra-preview")
+
+  """
+  The primary language of the repository's code.
+  """
+  primaryLanguage: Language
+
+  """
+  Find project by number.
+  """
+  project(
+    """
+    The project number to find.
+    """
+    number: Int!
+  ): Project
+
+  """
+  A list of projects under the owner.
+  """
+  projects(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for projects returned from the connection
+    """
+    orderBy: ProjectOrder
+
+    """
+    Query to search projects by, currently only searching by name.
+    """
+    search: String
+
+    """
+    A list of states to filter the projects by.
+    """
+    states: [ProjectState!]
+  ): ProjectConnection!
+
+  """
+  The HTTP path listing the repository's projects
+  """
+  projectsResourcePath: URI!
+
+  """
+  The HTTP URL listing the repository's projects
+  """
+  projectsUrl: URI!
+
+  """
+  Returns a single pull request from the current repository by number.
+  """
+  pullRequest(
+    """
+    The number for the pull request to be returned.
+    """
+    number: Int!
+  ): PullRequest
+
+  """
+  A list of pull requests that have been opened in the repository.
+  """
+  pullRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    The base ref name to filter the pull requests by.
+    """
+    baseRefName: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    The head ref name to filter the pull requests by.
+    """
+    headRefName: String
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pull requests returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the pull requests by.
+    """
+    states: [PullRequestState!]
+  ): PullRequestConnection!
+
+  """
+  Identifies when the repository was last pushed to.
+  """
+  pushedAt: DateTime
+
+  """
+  Whether or not rebase-merging is enabled on this repository.
+  """
+  rebaseMergeAllowed: Boolean!
+
+  """
+  Fetch a given ref from the repository
+  """
+  ref(
+    """
+    The ref to retrieve. Fully qualified matches are checked in order
+    (`refs/heads/master`) before falling back onto checks for short name matches (`master`).
+    """
+    qualifiedName: String!
+  ): Ref
+
+  """
+  Fetch a list of refs from the repository
+  """
+  refs(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    DEPRECATED: use orderBy. The ordering direction.
+    """
+    direction: OrderDirection
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for refs returned from the connection.
+    """
+    orderBy: RefOrder
+
+    """
+    Filters refs with query on name
+    """
+    query: String
+
+    """
+    A ref name prefix like `refs/heads/`, `refs/tags/`, etc.
+    """
+    refPrefix: String!
+  ): RefConnection
+
+  """
+  Lookup a single release given various criteria.
+  """
+  release(
+    """
+    The name of the Tag the Release was created from
+    """
+    tagName: String!
+  ): Release
+
+  """
+  List of releases which are dependent on this repository.
+  """
+  releases(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: ReleaseOrder
+  ): ReleaseConnection!
+
+  """
+  A list of applied repository-topic associations for this repository.
+  """
+  repositoryTopics(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): RepositoryTopicConnection!
+
+  """
+  The HTTP path for this repository
+  """
+  resourcePath: URI!
+
+  """
+  A description of the repository, rendered to HTML without any links in it.
+  """
+  shortDescriptionHTML(
+    """
+    How many characters to return.
+    """
+    limit: Int = 200
+  ): HTML!
+
+  """
+  Whether or not squash-merging is enabled on this repository.
+  """
+  squashMergeAllowed: Boolean!
+
+  """
+  The SSH URL to clone this repository
+  """
+  sshUrl: GitSSHRemote!
+
+  """
+  A list of users who have starred this starrable.
+  """
+  stargazers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: StarOrder
+  ): StargazerConnection!
+
+  """
+  Returns a list of all submodules in this repository parsed from the
+  .gitmodules file as of the default branch's HEAD commit.
+  """
+  submodules(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): SubmoduleConnection!
+
+  """
+  Temporary authentication token for cloning this repository.
+  """
+  tempCloneToken: String
+
+  """
+  The repository from which this repository was generated, if any.
+  """
+  templateRepository: Repository
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this repository
+  """
+  url: URI!
+
+  """
+  Whether this repository has a custom image to use with Open Graph as opposed to being represented by the owner's avatar.
+  """
+  usesCustomOpenGraphImage: Boolean!
+
+  """
+  Indicates whether the viewer has admin permissions on this repository.
+  """
+  viewerCanAdminister: Boolean!
+
+  """
+  Can the current viewer create new projects on this owner.
+  """
+  viewerCanCreateProjects: Boolean!
+
+  """
+  Check if the viewer is able to change their subscription status for the repository.
+  """
+  viewerCanSubscribe: Boolean!
+
+  """
+  Indicates whether the viewer can update the topics of this repository.
+  """
+  viewerCanUpdateTopics: Boolean!
+
+  """
+  The last commit email for the viewer.
+  """
+  viewerDefaultCommitEmail: String
+
+  """
+  The last used merge method by the viewer or the default for the repository.
+  """
+  viewerDefaultMergeMethod: PullRequestMergeMethod!
+
+  """
+  Returns a boolean indicating whether the viewing user has starred this starrable.
+  """
+  viewerHasStarred: Boolean!
+
+  """
+  The users permission level on the repository. Will return null if authenticated as an GitHub App.
+  """
+  viewerPermission: RepositoryPermission
+
+  """
+  A list of emails this viewer can commit with.
+  """
+  viewerPossibleCommitEmails: [String!]
+
+  """
+  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
+  """
+  viewerSubscription: SubscriptionState
+
+  """
+  A list of vulnerability alerts that are on this repository.
+  """
+  vulnerabilityAlerts(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): RepositoryVulnerabilityAlertConnection
+
+  """
+  A list of users watching the repository.
+  """
+  watchers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserConnection!
+}
+
+"""
+The affiliation of a user to a repository
+"""
+enum RepositoryAffiliation {
+  """
+  Repositories that the user has been added to as a collaborator.
+  """
+  COLLABORATOR
+
+  """
+  Repositories that the user has access to through being a member of an
+  organization. This includes every repository on every team that the user is on.
+  """
+  ORGANIZATION_MEMBER
+
+  """
+  Repositories that are owned by the authenticated user.
+  """
+  OWNER
+}
+
+"""
+Metadata for an audit entry with action repo.*
+"""
+interface RepositoryAuditEntryData {
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+}
+
+"""
+The connection type for User.
+"""
+type RepositoryCollaboratorConnection {
+  """
+  A list of edges.
+  """
+  edges: [RepositoryCollaboratorEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a user who is a collaborator of a repository.
+"""
+type RepositoryCollaboratorEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+  node: User!
+
+  """
+  The permission the user has on the repository.
+
+  **Upcoming Change on 2020-10-01 UTC**
+  **Description:** Type for `permission` will change from `RepositoryPermission!` to `String`.
+  **Reason:** This field may return additional values
+  """
+  permission: RepositoryPermission!
+
+  """
+  A list of sources for the user's access to the repository.
+  """
+  permissionSources: [PermissionSource!]
+}
+
+"""
+A list of repositories owned by the subject.
+"""
+type RepositoryConnection {
+  """
+  A list of edges.
+  """
+  edges: [RepositoryEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Repository]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+
+  """
+  The total size in kilobytes of all repositories in the connection.
+  """
+  totalDiskUsage: Int!
+}
+
+"""
+The reason a repository is listed as 'contributed'.
+"""
+enum RepositoryContributionType {
+  """
+  Created a commit
+  """
+  COMMIT
+
+  """
+  Created an issue
+  """
+  ISSUE
+
+  """
+  Created a pull request
+  """
+  PULL_REQUEST
+
+  """
+  Reviewed a pull request
+  """
+  PULL_REQUEST_REVIEW
+
+  """
+  Created the repository
+  """
+  REPOSITORY
+}
+
+"""
+An edge in a connection.
+"""
+type RepositoryEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Repository
+}
+
+"""
+A subset of repository info.
+"""
+interface RepositoryInfo {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The description of the repository.
+  """
+  description: String
+
+  """
+  The description of the repository rendered to HTML.
+  """
+  descriptionHTML: HTML!
+
+  """
+  Returns how many forks there are of this repository in the whole network.
+  """
+  forkCount: Int!
+
+  """
+  Indicates if the repository has issues feature enabled.
+  """
+  hasIssuesEnabled: Boolean!
+
+  """
+  Indicates if the repository has the Projects feature enabled.
+  """
+  hasProjectsEnabled: Boolean!
+
+  """
+  Indicates if the repository has wiki feature enabled.
+  """
+  hasWikiEnabled: Boolean!
+
+  """
+  The repository's URL.
+  """
+  homepageUrl: URI
+
+  """
+  Indicates if the repository is unmaintained.
+  """
+  isArchived: Boolean!
+
+  """
+  Identifies if the repository is a fork.
+  """
+  isFork: Boolean!
+
+  """
+  Indicates if the repository has been locked or not.
+  """
+  isLocked: Boolean!
+
+  """
+  Identifies if the repository is a mirror.
+  """
+  isMirror: Boolean!
+
+  """
+  Identifies if the repository is private.
+  """
+  isPrivate: Boolean!
+
+  """
+  Identifies if the repository is a template that can be used to generate new repositories.
+  """
+  isTemplate: Boolean!
+
+  """
+  The license associated with the repository
+  """
+  licenseInfo: License
+
+  """
+  The reason the repository has been locked.
+  """
+  lockReason: RepositoryLockReason
+
+  """
+  The repository's original mirror URL.
+  """
+  mirrorUrl: URI
+
+  """
+  The name of the repository.
+  """
+  name: String!
+
+  """
+  The repository's name with owner.
+  """
+  nameWithOwner: String!
+
+  """
+  The image used to represent this repository in Open Graph data.
+  """
+  openGraphImageUrl: URI!
+
+  """
+  The User owner of the repository.
+  """
+  owner: RepositoryOwner!
+
+  """
+  Identifies when the repository was last pushed to.
+  """
+  pushedAt: DateTime
+
+  """
+  The HTTP path for this repository
+  """
+  resourcePath: URI!
+
+  """
+  A description of the repository, rendered to HTML without any links in it.
+  """
+  shortDescriptionHTML(
+    """
+    How many characters to return.
+    """
+    limit: Int = 200
+  ): HTML!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this repository
+  """
+  url: URI!
+
+  """
+  Whether this repository has a custom image to use with Open Graph as opposed to being represented by the owner's avatar.
+  """
+  usesCustomOpenGraphImage: Boolean!
+}
+
+"""
+An invitation for a user to be added to a repository.
+"""
+type RepositoryInvitation implements Node {
+  """
+  The email address that received the invitation.
+  """
+  email: String
+  id: ID!
+
+  """
+  The user who received the invitation.
+  """
+  invitee: User
+
+  """
+  The user who created the invitation.
+  """
+  inviter: User!
+
+  """
+  The permission granted on this repository by this invitation.
+
+  **Upcoming Change on 2020-10-01 UTC**
+  **Description:** Type for `permission` will change from `RepositoryPermission!` to `String`.
+  **Reason:** This field may return additional values
+  """
+  permission: RepositoryPermission!
+
+  """
+  The Repository the user is invited to.
+  """
+  repository: RepositoryInfo
+}
+
+"""
+The connection type for RepositoryInvitation.
+"""
+type RepositoryInvitationConnection {
+  """
+  A list of edges.
+  """
+  edges: [RepositoryInvitationEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [RepositoryInvitation]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type RepositoryInvitationEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: RepositoryInvitation
+}
+
+"""
+Ordering options for repository invitation connections.
+"""
+input RepositoryInvitationOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order repository invitations by.
+  """
+  field: RepositoryInvitationOrderField!
+}
+
+"""
+Properties by which repository invitation connections can be ordered.
+"""
+enum RepositoryInvitationOrderField {
+  """
+  Order repository invitations by creation time
+  """
+  CREATED_AT
+
+  """
+  Order repository invitations by invitee login
+  """
+  INVITEE_LOGIN
+  @deprecated(
+    reason: "`INVITEE_LOGIN` is no longer a valid field value. Repository invitations can now be associated with an email, not only an invitee. Removal on 2020-10-01 UTC."
+  )
+}
+
+"""
+The possible reasons a given repository could be in a locked state.
+"""
+enum RepositoryLockReason {
+  """
+  The repository is locked due to a billing related reason.
+  """
+  BILLING
+
+  """
+  The repository is locked due to a migration.
+  """
+  MIGRATING
+
+  """
+  The repository is locked due to a move.
+  """
+  MOVING
+
+  """
+  The repository is locked due to a rename.
+  """
+  RENAME
+}
+
+"""
+Represents a object that belongs to a repository.
+"""
+interface RepositoryNode {
+  """
+  The repository associated with this node.
+  """
+  repository: Repository!
+}
+
+"""
+Ordering options for repository connections
+"""
+input RepositoryOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order repositories by.
+  """
+  field: RepositoryOrderField!
+}
+
+"""
+Properties by which repository connections can be ordered.
+"""
+enum RepositoryOrderField {
+  """
+  Order repositories by creation time
+  """
+  CREATED_AT
+
+  """
+  Order repositories by name
+  """
+  NAME
+
+  """
+  Order repositories by push time
+  """
+  PUSHED_AT
+
+  """
+  Order repositories by number of stargazers
+  """
+  STARGAZERS
+
+  """
+  Order repositories by update time
+  """
+  UPDATED_AT
+}
+
+"""
+Represents an owner of a Repository.
+"""
+interface RepositoryOwner {
+  """
+  A URL pointing to the owner's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+  id: ID!
+
+  """
+  The username used to login.
+  """
+  login: String!
+
+  """
+  A list of repositories that the user owns.
+  """
+  repositories(
+    """
+    Array of viewer's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    current viewer owns.
+    """
+    affiliations: [RepositoryAffiliation]
+
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    If non-null, filters repositories according to whether they are forks of another repository
+    """
+    isFork: Boolean
+
+    """
+    If non-null, filters repositories according to whether they have been locked
+    """
+    isLocked: Boolean
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories returned from the connection
+    """
+    orderBy: RepositoryOrder
+
+    """
+    Array of owner's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    organization or user being viewed owns.
+    """
+    ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+
+    """
+    If non-null, filters repositories according to privacy
+    """
+    privacy: RepositoryPrivacy
+  ): RepositoryConnection!
+
+  """
+  Find Repository.
+  """
+  repository(
+    """
+    Name of Repository to find.
+    """
+    name: String!
+  ): Repository
+
+  """
+  The HTTP URL for the owner.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for the owner.
+  """
+  url: URI!
+}
+
+"""
+The access level to a repository
+"""
+enum RepositoryPermission {
+  """
+  Can read, clone, and push to this repository. Can also manage issues, pull
+  requests, and repository settings, including adding collaborators
+  """
+  ADMIN
+
+  """
+  Can read, clone, and push to this repository. They can also manage issues, pull requests, and some repository settings
+  """
+  MAINTAIN
+
+  """
+  Can read and clone this repository. Can also open and comment on issues and pull requests
+  """
+  READ
+
+  """
+  Can read and clone this repository. Can also manage issues and pull requests
+  """
+  TRIAGE
+
+  """
+  Can read, clone, and push to this repository. Can also manage issues and pull requests
+  """
+  WRITE
+}
+
+"""
+The privacy of a repository
+"""
+enum RepositoryPrivacy {
+  """
+  Private
+  """
+  PRIVATE
+
+  """
+  Public
+  """
+  PUBLIC
+}
+
+"""
+A repository-topic connects a repository to a topic.
+"""
+type RepositoryTopic implements Node & UniformResourceLocatable {
+  id: ID!
+
+  """
+  The HTTP path for this repository-topic.
+  """
+  resourcePath: URI!
+
+  """
+  The topic.
+  """
+  topic: Topic!
+
+  """
+  The HTTP URL for this repository-topic.
+  """
+  url: URI!
+}
+
+"""
+The connection type for RepositoryTopic.
+"""
+type RepositoryTopicConnection {
+  """
+  A list of edges.
+  """
+  edges: [RepositoryTopicEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [RepositoryTopic]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type RepositoryTopicEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: RepositoryTopic
+}
+
+"""
+The repository's visibility level.
+"""
+enum RepositoryVisibility {
+  """
+  The repository is visible only to users in the same business.
+  """
+  INTERNAL
+
+  """
+  The repository is visible only to those with explicit access.
+  """
+  PRIVATE
+
+  """
+  The repository is visible to everyone.
+  """
+  PUBLIC
+}
+
+"""
+Audit log entry for a repository_visibility_change.disable event.
+"""
+type RepositoryVisibilityChangeDisableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a repository_visibility_change.enable event.
+"""
+type RepositoryVisibilityChangeEnableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+
+  """
+  The HTTP path for this enterprise.
+  """
+  enterpriseResourcePath: URI
+
+  """
+  The slug of the enterprise.
+  """
+  enterpriseSlug: String
+
+  """
+  The HTTP URL for this enterprise.
+  """
+  enterpriseUrl: URI
+  id: ID!
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+A alert for a repository with an affected vulnerability.
+"""
+type RepositoryVulnerabilityAlert implements Node & RepositoryNode {
+  """
+  When was the alert created?
+  """
+  createdAt: DateTime!
+
+  """
+  The reason the alert was dismissed
+  """
+  dismissReason: String
+
+  """
+  When was the alert dimissed?
+  """
+  dismissedAt: DateTime
+
+  """
+  The user who dismissed the alert
+  """
+  dismisser: User
+  id: ID!
+
+  """
+  The associated repository
+  """
+  repository: Repository!
+
+  """
+  The associated security advisory
+  """
+  securityAdvisory: SecurityAdvisory
+
+  """
+  The associated security vulnerablity
+  """
+  securityVulnerability: SecurityVulnerability
+
+  """
+  The vulnerable manifest filename
+  """
+  vulnerableManifestFilename: String!
+
+  """
+  The vulnerable manifest path
+  """
+  vulnerableManifestPath: String!
+
+  """
+  The vulnerable requirements
+  """
+  vulnerableRequirements: String
+}
+
+"""
+The connection type for RepositoryVulnerabilityAlert.
+"""
+type RepositoryVulnerabilityAlertConnection {
+  """
+  A list of edges.
+  """
+  edges: [RepositoryVulnerabilityAlertEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [RepositoryVulnerabilityAlert]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type RepositoryVulnerabilityAlertEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: RepositoryVulnerabilityAlert
+}
+
+"""
+Autogenerated input type of RequestReviews
+"""
+input RequestReviewsInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the pull request to modify.
+  """
+  pullRequestId: ID! @possibleTypes(concreteTypes: ["PullRequest"])
+
+  """
+  The Node IDs of the team to request.
+  """
+  teamIds: [ID!] @possibleTypes(concreteTypes: ["Team"])
+
+  """
+  Add users to the set rather than replace.
+  """
+  union: Boolean
+
+  """
+  The Node IDs of the user to request.
+  """
+  userIds: [ID!] @possibleTypes(concreteTypes: ["User"])
+}
+
+"""
+Autogenerated return type of RequestReviews
+"""
+type RequestReviewsPayload {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The pull request that is getting requests.
+  """
+  pullRequest: PullRequest
+
+  """
+  The edge from the pull request to the requested reviewers.
+  """
+  requestedReviewersEdge: UserEdge
+}
+
+"""
+The possible states that can be requested when creating a check run.
+"""
+enum RequestableCheckStatusState @preview(toggledBy: "antiope-preview") {
+  """
+  The check suite or run has been completed.
+  """
+  COMPLETED
+
+  """
+  The check suite or run is in progress.
+  """
+  IN_PROGRESS
+
+  """
+  The check suite or run has been queued.
+  """
+  QUEUED
+}
+
+"""
+Types that can be requested reviewers.
+"""
+union RequestedReviewer = Mannequin | Team | User
+
+"""
+Autogenerated input type of RerequestCheckSuite
+"""
+input RerequestCheckSuiteInput @preview(toggledBy: "antiope-preview") {
+  """
+  The Node ID of the check suite.
+  """
+  checkSuiteId: ID! @possibleTypes(concreteTypes: ["CheckSuite"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of RerequestCheckSuite
+"""
+type RerequestCheckSuitePayload @preview(toggledBy: "antiope-preview") {
+  """
+  The requested check suite.
+  """
+  checkSuite: CheckSuite
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of ResolveReviewThread
+"""
+input ResolveReviewThreadInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the thread to resolve
+  """
+  threadId: ID! @possibleTypes(concreteTypes: ["PullRequestReviewThread"])
+}
+
+"""
+Autogenerated return type of ResolveReviewThread
+"""
+type ResolveReviewThreadPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The thread to resolve.
+  """
+  thread: PullRequestReviewThread
+}
+
+"""
+Represents a private contribution a user made on GitHub.
+"""
+type RestrictedContribution implements Contribution {
+  """
+  Whether this contribution is associated with a record you do not have access to. For
+  example, your own 'first issue' contribution may have been made on a repository you can no
+  longer access.
+  """
+  isRestricted: Boolean!
+
+  """
+  When this contribution was made.
+  """
+  occurredAt: DateTime!
+
+  """
+  The HTTP path for this contribution.
+  """
+  resourcePath: URI!
+
+  """
+  The HTTP URL for this contribution.
+  """
+  url: URI!
+
+  """
+  The user who made this contribution.
+  """
+  user: User!
+}
+
+"""
+A team or user who has the ability to dismiss a review on a protected branch.
+"""
+type ReviewDismissalAllowance implements Node {
+  """
+  The actor that can dismiss.
+  """
+  actor: ReviewDismissalAllowanceActor
+
+  """
+  Identifies the branch protection rule associated with the allowed user or team.
+  """
+  branchProtectionRule: BranchProtectionRule
+  id: ID!
+}
+
+"""
+Types that can be an actor.
+"""
+union ReviewDismissalAllowanceActor = Team | User
+
+"""
+The connection type for ReviewDismissalAllowance.
+"""
+type ReviewDismissalAllowanceConnection {
+  """
+  A list of edges.
+  """
+  edges: [ReviewDismissalAllowanceEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [ReviewDismissalAllowance]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ReviewDismissalAllowanceEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: ReviewDismissalAllowance
+}
+
+"""
+Represents a 'review_dismissed' event on a given issue or pull request.
+"""
+type ReviewDismissedEvent implements Node & UniformResourceLocatable {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  Identifies the optional message associated with the 'review_dismissed' event.
+  """
+  dismissalMessage: String
+
+  """
+  Identifies the optional message associated with the event, rendered to HTML.
+  """
+  dismissalMessageHTML: String
+  id: ID!
+
+  """
+  Identifies the previous state of the review with the 'review_dismissed' event.
+  """
+  previousReviewState: PullRequestReviewState!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  Identifies the commit which caused the review to become stale.
+  """
+  pullRequestCommit: PullRequestCommit
+
+  """
+  The HTTP path for this review dismissed event.
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the review associated with the 'review_dismissed' event.
+  """
+  review: PullRequestReview
+
+  """
+  The HTTP URL for this review dismissed event.
+  """
+  url: URI!
+}
+
+"""
+A request for a user to review a pull request.
+"""
+type ReviewRequest implements Node {
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  Identifies the pull request associated with this review request.
+  """
+  pullRequest: PullRequest!
+
+  """
+  The reviewer that is requested.
+  """
+  requestedReviewer: RequestedReviewer
+}
+
+"""
+The connection type for ReviewRequest.
+"""
+type ReviewRequestConnection {
+  """
+  A list of edges.
+  """
+  edges: [ReviewRequestEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [ReviewRequest]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type ReviewRequestEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: ReviewRequest
+}
+
+"""
+Represents an 'review_request_removed' event on a given pull request.
+"""
+type ReviewRequestRemovedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  Identifies the reviewer whose review request was removed.
+  """
+  requestedReviewer: RequestedReviewer
+}
+
+"""
+Represents an 'review_requested' event on a given pull request.
+"""
+type ReviewRequestedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  PullRequest referenced by event.
+  """
+  pullRequest: PullRequest!
+
+  """
+  Identifies the reviewer whose review was requested.
+  """
+  requestedReviewer: RequestedReviewer
+}
+
+"""
+A hovercard context with a message describing the current code review state of the pull
+request.
+"""
+type ReviewStatusHovercardContext implements HovercardContext {
+  """
+  A string describing this context
+  """
+  message: String!
+
+  """
+  An octicon to accompany this context
+  """
+  octicon: String!
+
+  """
+  The current status of the pull request with respect to code review.
+  """
+  reviewDecision: PullRequestReviewDecision
+}
+
+"""
+The possible digest algorithms used to sign SAML requests for an identity provider.
+"""
+enum SamlDigestAlgorithm {
+  """
+  SHA1
+  """
+  SHA1
+
+  """
+  SHA256
+  """
+  SHA256
+
+  """
+  SHA384
+  """
+  SHA384
+
+  """
+  SHA512
+  """
+  SHA512
+}
+
+"""
+The possible signature algorithms used to sign SAML requests for a Identity Provider.
+"""
+enum SamlSignatureAlgorithm {
+  """
+  RSA-SHA1
+  """
+  RSA_SHA1
+
+  """
+  RSA-SHA256
+  """
+  RSA_SHA256
+
+  """
+  RSA-SHA384
+  """
+  RSA_SHA384
+
+  """
+  RSA-SHA512
+  """
+  RSA_SHA512
+}
+
+"""
+A Saved Reply is text a user can use to reply quickly.
+"""
+type SavedReply implements Node {
+  """
+  The body of the saved reply.
+  """
+  body: String!
+
+  """
+  The saved reply body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+  id: ID!
+
+  """
+  The title of the saved reply.
+  """
+  title: String!
+
+  """
+  The user that saved this reply.
+  """
+  user: Actor
+}
+
+"""
+The connection type for SavedReply.
+"""
+type SavedReplyConnection {
+  """
+  A list of edges.
+  """
+  edges: [SavedReplyEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [SavedReply]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type SavedReplyEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: SavedReply
+}
+
+"""
+Ordering options for saved reply connections.
+"""
+input SavedReplyOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order saved replies by.
+  """
+  field: SavedReplyOrderField!
+}
+
+"""
+Properties by which saved reply connections can be ordered.
+"""
+enum SavedReplyOrderField {
+  """
+  Order saved reply by when they were updated.
+  """
+  UPDATED_AT
+}
+
+"""
+The results of a search.
+"""
+union SearchResultItem =
+    App
+  | Issue
+  | MarketplaceListing
+  | Organization
+  | PullRequest
+  | Repository
+  | User
+
+"""
+A list of results that matched against a search query.
+"""
+type SearchResultItemConnection {
+  """
+  The number of pieces of code that matched the search query.
+  """
+  codeCount: Int!
+
+  """
+  A list of edges.
+  """
+  edges: [SearchResultItemEdge]
+
+  """
+  The number of issues that matched the search query.
+  """
+  issueCount: Int!
+
+  """
+  A list of nodes.
+  """
+  nodes: [SearchResultItem]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  The number of repositories that matched the search query.
+  """
+  repositoryCount: Int!
+
+  """
+  The number of users that matched the search query.
+  """
+  userCount: Int!
+
+  """
+  The number of wiki pages that matched the search query.
+  """
+  wikiCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type SearchResultItemEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: SearchResultItem
+
+  """
+  Text matches on the result found.
+  """
+  textMatches: [TextMatch]
+}
+
+"""
+Represents the individual results of a search.
+"""
+enum SearchType {
+  """
+  Returns results matching issues in repositories.
+  """
+  ISSUE
+
+  """
+  Returns results matching repositories.
+  """
+  REPOSITORY
+
+  """
+  Returns results matching users and organizations on GitHub.
+  """
+  USER
+}
+
+"""
+A GitHub Security Advisory
+"""
+type SecurityAdvisory implements Node {
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  This is a long plaintext description of the advisory
+  """
+  description: String!
+
+  """
+  The GitHub Security Advisory ID
+  """
+  ghsaId: String!
+  id: ID!
+
+  """
+  A list of identifiers for this advisory
+  """
+  identifiers: [SecurityAdvisoryIdentifier!]!
+
+  """
+  The organization that originated the advisory
+  """
+  origin: String!
+
+  """
+  The permalink for the advisory
+  """
+  permalink: URI
+
+  """
+  When the advisory was published
+  """
+  publishedAt: DateTime!
+
+  """
+  A list of references for this advisory
+  """
+  references: [SecurityAdvisoryReference!]!
+
+  """
+  The severity of the advisory
+  """
+  severity: SecurityAdvisorySeverity!
+
+  """
+  A short plaintext summary of the advisory
+  """
+  summary: String!
+
+  """
+  When the advisory was last updated
+  """
+  updatedAt: DateTime!
+
+  """
+  Vulnerabilities associated with this Advisory
+  """
+  vulnerabilities(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    An ecosystem to filter vulnerabilities by.
+    """
+    ecosystem: SecurityAdvisoryEcosystem
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for the returned topics.
+    """
+    orderBy: SecurityVulnerabilityOrder = { field: UPDATED_AT, direction: DESC }
+
+    """
+    A package name to filter vulnerabilities by.
+    """
+    package: String
+
+    """
+    A list of severities to filter vulnerabilities by.
+    """
+    severities: [SecurityAdvisorySeverity!]
+  ): SecurityVulnerabilityConnection!
+
+  """
+  When the advisory was withdrawn, if it has been withdrawn
+  """
+  withdrawnAt: DateTime
+}
+
+"""
+The connection type for SecurityAdvisory.
+"""
+type SecurityAdvisoryConnection {
+  """
+  A list of edges.
+  """
+  edges: [SecurityAdvisoryEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [SecurityAdvisory]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+The possible ecosystems of a security vulnerability's package.
+"""
+enum SecurityAdvisoryEcosystem {
+  """
+  PHP packages hosted at packagist.org
+  """
+  COMPOSER
+
+  """
+  Java artifacts hosted at the Maven central repository
+  """
+  MAVEN
+
+  """
+  JavaScript packages hosted at npmjs.com
+  """
+  NPM
+
+  """
+  .NET packages hosted at the NuGet Gallery
+  """
+  NUGET
+
+  """
+  Python packages hosted at PyPI.org
+  """
+  PIP
+
+  """
+  Ruby gems hosted at RubyGems.org
+  """
+  RUBYGEMS
+}
+
+"""
+An edge in a connection.
+"""
+type SecurityAdvisoryEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: SecurityAdvisory
+}
+
+"""
+A GitHub Security Advisory Identifier
+"""
+type SecurityAdvisoryIdentifier {
+  """
+  The identifier type, e.g. GHSA, CVE
+  """
+  type: String!
+
+  """
+  The identifier
+  """
+  value: String!
+}
+
+"""
+An advisory identifier to filter results on.
+"""
+input SecurityAdvisoryIdentifierFilter {
+  """
+  The identifier type.
+  """
+  type: SecurityAdvisoryIdentifierType!
+
+  """
+  The identifier string. Supports exact or partial matching.
+  """
+  value: String!
+}
+
+"""
+Identifier formats available for advisories.
+"""
+enum SecurityAdvisoryIdentifierType {
+  """
+  Common Vulnerabilities and Exposures Identifier.
+  """
+  CVE
+
+  """
+  GitHub Security Advisory ID.
+  """
+  GHSA
+}
+
+"""
+Ordering options for security advisory connections
+"""
+input SecurityAdvisoryOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order security advisories by.
+  """
+  field: SecurityAdvisoryOrderField!
+}
+
+"""
+Properties by which security advisory connections can be ordered.
+"""
+enum SecurityAdvisoryOrderField {
+  """
+  Order advisories by publication time
+  """
+  PUBLISHED_AT
+
+  """
+  Order advisories by update time
+  """
+  UPDATED_AT
+}
+
+"""
+An individual package
+"""
+type SecurityAdvisoryPackage {
+  """
+  The ecosystem the package belongs to, e.g. RUBYGEMS, NPM
+  """
+  ecosystem: SecurityAdvisoryEcosystem!
+
+  """
+  The package name
+  """
+  name: String!
+}
+
+"""
+An individual package version
+"""
+type SecurityAdvisoryPackageVersion {
+  """
+  The package name or version
+  """
+  identifier: String!
+}
+
+"""
+A GitHub Security Advisory Reference
+"""
+type SecurityAdvisoryReference {
+  """
+  A publicly accessible reference
+  """
+  url: URI!
+}
+
+"""
+Severity of the vulnerability.
+"""
+enum SecurityAdvisorySeverity {
+  """
+  Critical.
+  """
+  CRITICAL
+
+  """
+  High.
+  """
+  HIGH
+
+  """
+  Low.
+  """
+  LOW
+
+  """
+  Moderate.
+  """
+  MODERATE
+}
+
+"""
+An individual vulnerability within an Advisory
+"""
+type SecurityVulnerability {
+  """
+  The Advisory associated with this Vulnerability
+  """
+  advisory: SecurityAdvisory!
+
+  """
+  The first version containing a fix for the vulnerability
+  """
+  firstPatchedVersion: SecurityAdvisoryPackageVersion
+
+  """
+  A description of the vulnerable package
+  """
+  package: SecurityAdvisoryPackage!
+
+  """
+  The severity of the vulnerability within this package
+  """
+  severity: SecurityAdvisorySeverity!
+
+  """
+  When the vulnerability was last updated
+  """
+  updatedAt: DateTime!
+
+  """
+  A string that describes the vulnerable package versions.
+  This string follows a basic syntax with a few forms.
+  + `= 0.2.0` denotes a single vulnerable version.
+  + `<= 1.0.8` denotes a version range up to and including the specified version
+  + `< 0.1.11` denotes a version range up to, but excluding, the specified version
+  + `>= 4.3.0, < 4.3.5` denotes a version range with a known minimum and maximum version.
+  + `>= 0.0.1` denotes a version range with a known minimum, but no known maximum
+  """
+  vulnerableVersionRange: String!
+}
+
+"""
+The connection type for SecurityVulnerability.
+"""
+type SecurityVulnerabilityConnection {
+  """
+  A list of edges.
+  """
+  edges: [SecurityVulnerabilityEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [SecurityVulnerability]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type SecurityVulnerabilityEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: SecurityVulnerability
+}
+
+"""
+Ordering options for security vulnerability connections
+"""
+input SecurityVulnerabilityOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order security vulnerabilities by.
+  """
+  field: SecurityVulnerabilityOrderField!
+}
+
+"""
+Properties by which security vulnerability connections can be ordered.
+"""
+enum SecurityVulnerabilityOrderField {
+  """
+  Order vulnerability by update time
+  """
+  UPDATED_AT
+}
+
+"""
+Autogenerated input type of SetEnterpriseIdentityProvider
+"""
+input SetEnterpriseIdentityProviderInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The digest algorithm used to sign SAML requests for the identity provider.
+  """
+  digestMethod: SamlDigestAlgorithm!
+
+  """
+  The ID of the enterprise on which to set an identity provider.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The x509 certificate used by the identity provider to sign assertions and responses.
+  """
+  idpCertificate: String!
+
+  """
+  The Issuer Entity ID for the SAML identity provider
+  """
+  issuer: String
+
+  """
+  The signature algorithm used to sign SAML requests for the identity provider.
+  """
+  signatureMethod: SamlSignatureAlgorithm!
+
+  """
+  The URL endpoint for the identity provider's SAML SSO.
+  """
+  ssoUrl: URI!
+}
+
+"""
+Autogenerated return type of SetEnterpriseIdentityProvider
+"""
+type SetEnterpriseIdentityProviderPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The identity provider for the enterprise.
+  """
+  identityProvider: EnterpriseIdentityProvider
+}
+
+"""
+Represents an S/MIME signature on a Commit or Tag.
+"""
+type SmimeSignature implements GitSignature {
+  """
+  Email used to sign this object.
+  """
+  email: String!
+
+  """
+  True if the signature is valid and verified by GitHub.
+  """
+  isValid: Boolean!
+
+  """
+  Payload for GPG signing object. Raw ODB object without the signature header.
+  """
+  payload: String!
+
+  """
+  ASCII-armored signature header from object.
+  """
+  signature: String!
+
+  """
+  GitHub user corresponding to the email signing this commit.
+  """
+  signer: User
+
+  """
+  The state of this signature. `VALID` if signature is valid and verified by
+  GitHub, otherwise represents reason why signature is considered invalid.
+  """
+  state: GitSignatureState!
+
+  """
+  True if the signature was made with GitHub's signing key.
+  """
+  wasSignedByGitHub: Boolean!
+}
+
+"""
+Entites that can sponsor others via GitHub Sponsors
+"""
+union Sponsor = Organization | User
+
+"""
+Entities that can be sponsored through GitHub Sponsors
+"""
+interface Sponsorable {
+  """
+  The GitHub Sponsors listing for this user.
+  """
+  sponsorsListing: SponsorsListing
+
+  """
+  This object's sponsorships as the maintainer.
+  """
+  sponsorshipsAsMaintainer(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Whether or not to include private sponsorships in the result set
+    """
+    includePrivate: Boolean = false
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for sponsorships returned from this connection. If left
+    blank, the sponsorships will be ordered based on relevancy to the viewer.
+    """
+    orderBy: SponsorshipOrder
+  ): SponsorshipConnection!
+
+  """
+  This object's sponsorships as the sponsor.
+  """
+  sponsorshipsAsSponsor(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for sponsorships returned from this connection. If left
+    blank, the sponsorships will be ordered based on relevancy to the viewer.
+    """
+    orderBy: SponsorshipOrder
+  ): SponsorshipConnection!
+}
+
+"""
+A GitHub Sponsors listing.
+"""
+type SponsorsListing implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The full description of the listing.
+  """
+  fullDescription: String!
+
+  """
+  The full description of the listing rendered to HTML.
+  """
+  fullDescriptionHTML: HTML!
+  id: ID!
+
+  """
+  The listing's full name.
+  """
+  name: String!
+
+  """
+  The short description of the listing.
+  """
+  shortDescription: String!
+
+  """
+  The short name of the listing.
+  """
+  slug: String!
+
+  """
+  The published tiers for this GitHub Sponsors listing.
+  """
+  tiers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for Sponsors tiers returned from the connection.
+    """
+    orderBy: SponsorsTierOrder = {
+      field: MONTHLY_PRICE_IN_CENTS
+      direction: ASC
+    }
+  ): SponsorsTierConnection
+}
+
+"""
+A GitHub Sponsors tier associated with a GitHub Sponsors listing.
+"""
+type SponsorsTier implements Node {
+  """
+  SponsorsTier information only visible to users that can administer the associated Sponsors listing.
+  """
+  adminInfo: SponsorsTierAdminInfo
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The description of the tier.
+  """
+  description: String!
+
+  """
+  The tier description rendered to HTML
+  """
+  descriptionHTML: HTML!
+  id: ID!
+
+  """
+  How much this tier costs per month in cents.
+  """
+  monthlyPriceInCents: Int!
+
+  """
+  How much this tier costs per month in dollars.
+  """
+  monthlyPriceInDollars: Int!
+
+  """
+  The name of the tier.
+  """
+  name: String!
+
+  """
+  The sponsors listing that this tier belongs to.
+  """
+  sponsorsListing: SponsorsListing!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+SponsorsTier information only visible to users that can administer the associated Sponsors listing.
+"""
+type SponsorsTierAdminInfo {
+  """
+  The sponsorships associated with this tier.
+  """
+  sponsorships(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Whether or not to include private sponsorships in the result set
+    """
+    includePrivate: Boolean = false
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for sponsorships returned from this connection. If left
+    blank, the sponsorships will be ordered based on relevancy to the viewer.
+    """
+    orderBy: SponsorshipOrder
+  ): SponsorshipConnection!
+}
+
+"""
+The connection type for SponsorsTier.
+"""
+type SponsorsTierConnection {
+  """
+  A list of edges.
+  """
+  edges: [SponsorsTierEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [SponsorsTier]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type SponsorsTierEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: SponsorsTier
+}
+
+"""
+Ordering options for Sponsors tiers connections.
+"""
+input SponsorsTierOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order tiers by.
+  """
+  field: SponsorsTierOrderField!
+}
+
+"""
+Properties by which Sponsors tiers connections can be ordered.
+"""
+enum SponsorsTierOrderField {
+  """
+  Order tiers by creation time.
+  """
+  CREATED_AT
+
+  """
+  Order tiers by their monthly price in cents
+  """
+  MONTHLY_PRICE_IN_CENTS
+}
+
+"""
+A sponsorship relationship between a sponsor and a maintainer
+"""
+type Sponsorship implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  The entity that is being sponsored
+  """
+  maintainer: User!
+  @deprecated(
+    reason: "`Sponsorship.maintainer` will be removed. Use `Sponsorship.sponsorable` instead. Removal on 2020-04-01 UTC."
+  )
+
+  """
+  The privacy level for this sponsorship.
+  """
+  privacyLevel: SponsorshipPrivacy!
+
+  """
+  The user that is sponsoring. Returns null if the sponsorship is private or if sponsor is not a user.
+  """
+  sponsor: User
+  @deprecated(
+    reason: "`Sponsorship.sponsor` will be removed. Use `Sponsorship.sponsorEntity` instead. Removal on 2020-10-01 UTC."
+  )
+
+  """
+  The user or organization that is sponsoring. Returns null if the sponsorship is private.
+  """
+  sponsorEntity: Sponsor
+
+  """
+  The entity that is being sponsored
+  """
+  sponsorable: Sponsorable!
+
+  """
+  The associated sponsorship tier
+  """
+  tier: SponsorsTier
+}
+
+"""
+The connection type for Sponsorship.
+"""
+type SponsorshipConnection {
+  """
+  A list of edges.
+  """
+  edges: [SponsorshipEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Sponsorship]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type SponsorshipEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Sponsorship
+}
+
+"""
+Ordering options for sponsorship connections.
+"""
+input SponsorshipOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order sponsorship by.
+  """
+  field: SponsorshipOrderField!
+}
+
+"""
+Properties by which sponsorship connections can be ordered.
+"""
+enum SponsorshipOrderField {
+  """
+  Order sponsorship by creation time.
+  """
+  CREATED_AT
+}
+
+"""
+The privacy of a sponsorship
+"""
+enum SponsorshipPrivacy {
+  """
+  Private
+  """
+  PRIVATE
+
+  """
+  Public
+  """
+  PUBLIC
+}
+
+"""
+Ways in which star connections can be ordered.
+"""
+input StarOrder {
+  """
+  The direction in which to order nodes.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order nodes by.
+  """
+  field: StarOrderField!
+}
+
+"""
+Properties by which star connections can be ordered.
+"""
+enum StarOrderField {
+  """
+  Allows ordering a list of stars by when they were created.
+  """
+  STARRED_AT
+}
+
+"""
+The connection type for User.
+"""
+type StargazerConnection {
+  """
+  A list of edges.
+  """
+  edges: [StargazerEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a user that's starred a repository.
+"""
+type StargazerEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+  node: User!
+
+  """
+  Identifies when the item was starred.
+  """
+  starredAt: DateTime!
+}
+
+"""
+Things that can be starred.
+"""
+interface Starrable {
+  id: ID!
+
+  """
+  A list of users who have starred this starrable.
+  """
+  stargazers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: StarOrder
+  ): StargazerConnection!
+
+  """
+  Returns a boolean indicating whether the viewing user has starred this starrable.
+  """
+  viewerHasStarred: Boolean!
+}
+
+"""
+The connection type for Repository.
+"""
+type StarredRepositoryConnection {
+  """
+  A list of edges.
+  """
+  edges: [StarredRepositoryEdge]
+
+  """
+  Is the list of stars for this user truncated? This is true for users that have many stars.
+  """
+  isOverLimit: Boolean!
+
+  """
+  A list of nodes.
+  """
+  nodes: [Repository]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a starred repository.
+"""
+type StarredRepositoryEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+  node: Repository!
+
+  """
+  Identifies when the item was starred.
+  """
+  starredAt: DateTime!
+}
+
+"""
+Represents a commit status.
+"""
+type Status implements Node {
+  """
+  The commit this status is attached to.
+  """
+  commit: Commit
+
+  """
+  Looks up an individual status context by context name.
+  """
+  context(
+    """
+    The context name.
+    """
+    name: String!
+  ): StatusContext
+
+  """
+  The individual status contexts for this commit.
+  """
+  contexts: [StatusContext!]!
+  id: ID!
+
+  """
+  The combined commit status.
+  """
+  state: StatusState!
+}
+
+"""
+Represents the rollup for both the check runs and status for a commit.
+"""
+type StatusCheckRollup implements Node {
+  """
+  The commit the status and check runs are attached to.
+  """
+  commit: Commit
+
+  """
+  A list of status contexts and check runs for this commit.
+  """
+  contexts(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): StatusCheckRollupContextConnection!
+  id: ID!
+
+  """
+  The combined status for the commit.
+  """
+  state: StatusState!
+}
+
+"""
+Types that can be inside a StatusCheckRollup context.
+"""
+union StatusCheckRollupContext = CheckRun | StatusContext
+
+"""
+The connection type for StatusCheckRollupContext.
+"""
+type StatusCheckRollupContextConnection {
+  """
+  A list of edges.
+  """
+  edges: [StatusCheckRollupContextEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [StatusCheckRollupContext]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type StatusCheckRollupContextEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: StatusCheckRollupContext
+}
+
+"""
+Represents an individual commit status context
+"""
+type StatusContext implements Node {
+  """
+  The avatar of the OAuth application or the user that created the status
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int = 40
+  ): URI
+
+  """
+  This commit this status context is attached to.
+  """
+  commit: Commit
+
+  """
+  The name of this status context.
+  """
+  context: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The actor who created this status context.
+  """
+  creator: Actor
+
+  """
+  The description for this status context.
+  """
+  description: String
+  id: ID!
+
+  """
+  The state of this status context.
+  """
+  state: StatusState!
+
+  """
+  The URL for this status context.
+  """
+  targetUrl: URI
+}
+
+"""
+The possible commit status states.
+"""
+enum StatusState {
+  """
+  Status is errored.
+  """
+  ERROR
+
+  """
+  Status is expected.
+  """
+  EXPECTED
+
+  """
+  Status is failing.
+  """
+  FAILURE
+
+  """
+  Status is pending.
+  """
+  PENDING
+
+  """
+  Status is successful.
+  """
+  SUCCESS
+}
+
+"""
+Autogenerated input type of SubmitPullRequestReview
+"""
+input SubmitPullRequestReviewInput {
+  """
+  The text field to set on the Pull Request Review.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The event to send to the Pull Request Review.
+  """
+  event: PullRequestReviewEvent!
+
+  """
+  The Pull Request ID to submit any pending reviews.
+  """
+  pullRequestId: ID @possibleTypes(concreteTypes: ["PullRequest"])
+
+  """
+  The Pull Request Review ID to submit.
+  """
+  pullRequestReviewId: ID @possibleTypes(concreteTypes: ["PullRequestReview"])
+}
+
+"""
+Autogenerated return type of SubmitPullRequestReview
+"""
+type SubmitPullRequestReviewPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The submitted pull request review.
+  """
+  pullRequestReview: PullRequestReview
+}
+
+"""
+A pointer to a repository at a specific revision embedded inside another repository.
+"""
+type Submodule {
+  """
+  The branch of the upstream submodule for tracking updates
+  """
+  branch: String
+
+  """
+  The git URL of the submodule repository
+  """
+  gitUrl: URI!
+
+  """
+  The name of the submodule in .gitmodules
+  """
+  name: String!
+
+  """
+  The path in the superproject that this submodule is located in
+  """
+  path: String!
+
+  """
+  The commit revision of the subproject repository being tracked by the submodule
+  """
+  subprojectCommitOid: GitObjectID
+}
+
+"""
+The connection type for Submodule.
+"""
+type SubmoduleConnection {
+  """
+  A list of edges.
+  """
+  edges: [SubmoduleEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Submodule]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type SubmoduleEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Submodule
+}
+
+"""
+Entities that can be subscribed to for web and email notifications.
+"""
+interface Subscribable {
+  id: ID!
+
+  """
+  Check if the viewer is able to change their subscription status for the repository.
+  """
+  viewerCanSubscribe: Boolean!
+
+  """
+  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
+  """
+  viewerSubscription: SubscriptionState
+}
+
+"""
+Represents a 'subscribed' event on a given `Subscribable`.
+"""
+type SubscribedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Object referenced by event.
+  """
+  subscribable: Subscribable!
+}
+
+"""
+The possible states of a subscription.
+"""
+enum SubscriptionState {
+  """
+  The User is never notified.
+  """
+  IGNORED
+
+  """
+  The User is notified of all conversations.
+  """
+  SUBSCRIBED
+
+  """
+  The User is only notified when participating or @mentioned.
+  """
+  UNSUBSCRIBED
+}
+
+"""
+A suggestion to review a pull request based on a user's commit history and review comments.
+"""
+type SuggestedReviewer {
+  """
+  Is this suggestion based on past commits?
+  """
+  isAuthor: Boolean!
+
+  """
+  Is this suggestion based on past review comments?
+  """
+  isCommenter: Boolean!
+
+  """
+  Identifies the user suggested to review the pull request.
+  """
+  reviewer: User!
+}
+
+"""
+Represents a Git tag.
+"""
+type Tag implements GitObject & Node {
+  """
+  An abbreviated version of the Git object ID
+  """
+  abbreviatedOid: String!
+
+  """
+  The HTTP path for this Git object
+  """
+  commitResourcePath: URI!
+
+  """
+  The HTTP URL for this Git object
+  """
+  commitUrl: URI!
+  id: ID!
+
+  """
+  The Git tag message.
+  """
+  message: String
+
+  """
+  The Git tag name.
+  """
+  name: String!
+
+  """
+  The Git object ID
+  """
+  oid: GitObjectID!
+
+  """
+  The Repository the Git object belongs to
+  """
+  repository: Repository!
+
+  """
+  Details about the tag author.
+  """
+  tagger: GitActor
+
+  """
+  The Git object the tag points to.
+  """
+  target: GitObject!
+}
+
+"""
+A team of users in an organization.
+"""
+type Team implements MemberStatusable & Node & Subscribable {
+  """
+  A list of teams that are ancestors of this team.
+  """
+  ancestors(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): TeamConnection!
+
+  """
+  A URL pointing to the team's avatar.
+  """
+  avatarUrl(
+    """
+    The size in pixels of the resulting square image.
+    """
+    size: Int = 400
+  ): URI
+
+  """
+  List of child teams belonging to this team
+  """
+  childTeams(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Whether to list immediate child teams or all descendant child teams.
+    """
+    immediateOnly: Boolean = true
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: TeamOrder
+
+    """
+    User logins to filter by
+    """
+    userLogins: [String!]
+  ): TeamConnection!
+
+  """
+  The slug corresponding to the organization and team.
+  """
+  combinedSlug: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The description of the team.
+  """
+  description: String
+
+  """
+  Find a team discussion by its number.
+  """
+  discussion(
+    """
+    The sequence number of the discussion to find.
+    """
+    number: Int!
+  ): TeamDiscussion
+
+  """
+  A list of team discussions.
+  """
+  discussions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    If provided, filters discussions according to whether or not they are pinned.
+    """
+    isPinned: Boolean
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: TeamDiscussionOrder
+  ): TeamDiscussionConnection!
+
+  """
+  The HTTP path for team discussions
+  """
+  discussionsResourcePath: URI!
+
+  """
+  The HTTP URL for team discussions
+  """
+  discussionsUrl: URI!
+
+  """
+  The HTTP path for editing this team
+  """
+  editTeamResourcePath: URI!
+
+  """
+  The HTTP URL for editing this team
+  """
+  editTeamUrl: URI!
+  id: ID!
+
+  """
+  A list of pending invitations for users to this team
+  """
+  invitations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): OrganizationInvitationConnection
+
+  """
+  Get the status messages members of this entity have set that are either public or visible only to the organization.
+  """
+  memberStatuses(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for user statuses returned from the connection.
+    """
+    orderBy: UserStatusOrder = { field: UPDATED_AT, direction: DESC }
+  ): UserStatusConnection!
+
+  """
+  A list of users who are members of this team.
+  """
+  members(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter by membership type
+    """
+    membership: TeamMembershipType = ALL
+
+    """
+    Order for the connection.
+    """
+    orderBy: TeamMemberOrder
+
+    """
+    The search string to look for.
+    """
+    query: String
+
+    """
+    Filter by team member role
+    """
+    role: TeamMemberRole
+  ): TeamMemberConnection!
+
+  """
+  The HTTP path for the team' members
+  """
+  membersResourcePath: URI!
+
+  """
+  The HTTP URL for the team' members
+  """
+  membersUrl: URI!
+
+  """
+  The name of the team.
+  """
+  name: String!
+
+  """
+  The HTTP path creating a new team
+  """
+  newTeamResourcePath: URI!
+
+  """
+  The HTTP URL creating a new team
+  """
+  newTeamUrl: URI!
+
+  """
+  The organization that owns this team.
+  """
+  organization: Organization!
+
+  """
+  The parent team of the team.
+  """
+  parentTeam: Team
+
+  """
+  The level of privacy the team has.
+  """
+  privacy: TeamPrivacy!
+
+  """
+  A list of repositories this team has access to.
+  """
+  repositories(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for the connection.
+    """
+    orderBy: TeamRepositoryOrder
+
+    """
+    The search string to look for.
+    """
+    query: String
+  ): TeamRepositoryConnection!
+
+  """
+  The HTTP path for this team's repositories
+  """
+  repositoriesResourcePath: URI!
+
+  """
+  The HTTP URL for this team's repositories
+  """
+  repositoriesUrl: URI!
+
+  """
+  The HTTP path for this team
+  """
+  resourcePath: URI!
+
+  """
+  What algorithm is used for review assignment for this team
+  """
+  reviewRequestDelegationAlgorithm: TeamReviewAssignmentAlgorithm
+  @preview(toggledBy: "stone-crop-preview")
+
+  """
+  True if review assignment is enabled for this team
+  """
+  reviewRequestDelegationEnabled: Boolean!
+  @preview(toggledBy: "stone-crop-preview")
+
+  """
+  How many team members are required for review assignment for this team
+  """
+  reviewRequestDelegationMemberCount: Int
+  @preview(toggledBy: "stone-crop-preview")
+
+  """
+  When assigning team members via delegation, whether the entire team should be notified as well.
+  """
+  reviewRequestDelegationNotifyTeam: Boolean!
+  @preview(toggledBy: "stone-crop-preview")
+
+  """
+  The slug corresponding to the team.
+  """
+  slug: String!
+
+  """
+  The HTTP path for this team's teams
+  """
+  teamsResourcePath: URI!
+
+  """
+  The HTTP URL for this team's teams
+  """
+  teamsUrl: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this team
+  """
+  url: URI!
+
+  """
+  Team is adminable by the viewer.
+  """
+  viewerCanAdminister: Boolean!
+
+  """
+  Check if the viewer is able to change their subscription status for the repository.
+  """
+  viewerCanSubscribe: Boolean!
+
+  """
+  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
+  """
+  viewerSubscription: SubscriptionState
+}
+
+"""
+Audit log entry for a team.add_member event.
+"""
+type TeamAddMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & TeamAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  Whether the team was mapped to an LDAP Group.
+  """
+  isLdapMapped: Boolean
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The team associated with the action
+  """
+  team: Team
+
+  """
+  The name of the team
+  """
+  teamName: String
+
+  """
+  The HTTP path for this team
+  """
+  teamResourcePath: URI
+
+  """
+  The HTTP URL for this team
+  """
+  teamUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a team.add_repository event.
+"""
+type TeamAddRepositoryAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TeamAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  Whether the team was mapped to an LDAP Group.
+  """
+  isLdapMapped: Boolean
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The team associated with the action
+  """
+  team: Team
+
+  """
+  The name of the team
+  """
+  teamName: String
+
+  """
+  The HTTP path for this team
+  """
+  teamResourcePath: URI
+
+  """
+  The HTTP URL for this team
+  """
+  teamUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Metadata for an audit entry with action team.*
+"""
+interface TeamAuditEntryData {
+  """
+  The team associated with the action
+  """
+  team: Team
+
+  """
+  The name of the team
+  """
+  teamName: String
+
+  """
+  The HTTP path for this team
+  """
+  teamResourcePath: URI
+
+  """
+  The HTTP URL for this team
+  """
+  teamUrl: URI
+}
+
+"""
+Audit log entry for a team.change_parent_team event.
+"""
+type TeamChangeParentTeamAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & TeamAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  Whether the team was mapped to an LDAP Group.
+  """
+  isLdapMapped: Boolean
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The new parent team.
+  """
+  parentTeam: Team
+
+  """
+  The name of the new parent team
+  """
+  parentTeamName: String
+
+  """
+  The name of the former parent team
+  """
+  parentTeamNameWas: String
+
+  """
+  The HTTP path for the parent team
+  """
+  parentTeamResourcePath: URI
+
+  """
+  The HTTP URL for the parent team
+  """
+  parentTeamUrl: URI
+
+  """
+  The former parent team.
+  """
+  parentTeamWas: Team
+
+  """
+  The HTTP path for the previous parent team
+  """
+  parentTeamWasResourcePath: URI
+
+  """
+  The HTTP URL for the previous parent team
+  """
+  parentTeamWasUrl: URI
+
+  """
+  The team associated with the action
+  """
+  team: Team
+
+  """
+  The name of the team
+  """
+  teamName: String
+
+  """
+  The HTTP path for this team
+  """
+  teamResourcePath: URI
+
+  """
+  The HTTP URL for this team
+  """
+  teamUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The connection type for Team.
+"""
+type TeamConnection {
+  """
+  A list of edges.
+  """
+  edges: [TeamEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Team]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+A team discussion.
+"""
+type TeamDiscussion implements Comment & Deletable & Node & Reactable & Subscribable & UniformResourceLocatable & Updatable & UpdatableComment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the discussion's team.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  The body as Markdown.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body rendered to text.
+  """
+  bodyText: String!
+
+  """
+  Identifies the discussion body hash.
+  """
+  bodyVersion: String!
+
+  """
+  A list of comments on this discussion.
+  """
+  comments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    When provided, filters the connection such that results begin with the comment with this number.
+    """
+    fromComment: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: TeamDiscussionCommentOrder
+  ): TeamDiscussionCommentConnection!
+
+  """
+  The HTTP path for discussion comments
+  """
+  commentsResourcePath: URI!
+
+  """
+  The HTTP URL for discussion comments
+  """
+  commentsUrl: URI!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  Whether or not the discussion is pinned.
+  """
+  isPinned: Boolean!
+
+  """
+  Whether or not the discussion is only visible to team members and org admins.
+  """
+  isPrivate: Boolean!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  Identifies the discussion within its team.
+  """
+  number: Int!
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The HTTP path for this discussion
+  """
+  resourcePath: URI!
+
+  """
+  The team that defines the context of this discussion.
+  """
+  team: Team!
+
+  """
+  The title of the discussion
+  """
+  title: String!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this discussion
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+
+  """
+  Whether or not the current viewer can pin this discussion.
+  """
+  viewerCanPin: Boolean!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the viewer is able to change their subscription status for the repository.
+  """
+  viewerCanSubscribe: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+
+  """
+  Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.
+  """
+  viewerSubscription: SubscriptionState
+}
+
+"""
+A comment on a team discussion.
+"""
+type TeamDiscussionComment implements Comment & Deletable & Node & Reactable & UniformResourceLocatable & Updatable & UpdatableComment {
+  """
+  The actor who authored the comment.
+  """
+  author: Actor
+
+  """
+  Author's association with the comment's team.
+  """
+  authorAssociation: CommentAuthorAssociation!
+
+  """
+  The body as Markdown.
+  """
+  body: String!
+
+  """
+  The body rendered to HTML.
+  """
+  bodyHTML: HTML!
+
+  """
+  The body rendered to text.
+  """
+  bodyText: String!
+
+  """
+  The current version of the body content.
+  """
+  bodyVersion: String!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Check if this comment was created via an email reply.
+  """
+  createdViaEmail: Boolean!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The discussion this comment is about.
+  """
+  discussion: TeamDiscussion!
+
+  """
+  The actor who edited the comment.
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Check if this comment was edited and includes an edit with the creation data
+  """
+  includesCreatedEdit: Boolean!
+
+  """
+  The moment the editor made the last edit
+  """
+  lastEditedAt: DateTime
+
+  """
+  Identifies the comment number.
+  """
+  number: Int!
+
+  """
+  Identifies when the comment was published at.
+  """
+  publishedAt: DateTime
+
+  """
+  A list of reactions grouped by content left on the subject.
+  """
+  reactionGroups: [ReactionGroup!]
+
+  """
+  A list of Reactions left on the Issue.
+  """
+  reactions(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Allows filtering Reactions by emoji.
+    """
+    content: ReactionContent
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Allows specifying the order in which reactions are returned.
+    """
+    orderBy: ReactionOrder
+  ): ReactionConnection!
+
+  """
+  The HTTP path for this comment
+  """
+  resourcePath: URI!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this comment
+  """
+  url: URI!
+
+  """
+  A list of edits to this content.
+  """
+  userContentEdits(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): UserContentEditConnection
+
+  """
+  Check if the current viewer can delete this object.
+  """
+  viewerCanDelete: Boolean!
+
+  """
+  Can user react to this subject
+  """
+  viewerCanReact: Boolean!
+
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+
+  """
+  Did the viewer author this comment.
+  """
+  viewerDidAuthor: Boolean!
+}
+
+"""
+The connection type for TeamDiscussionComment.
+"""
+type TeamDiscussionCommentConnection {
+  """
+  A list of edges.
+  """
+  edges: [TeamDiscussionCommentEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [TeamDiscussionComment]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type TeamDiscussionCommentEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: TeamDiscussionComment
+}
+
+"""
+Ways in which team discussion comment connections can be ordered.
+"""
+input TeamDiscussionCommentOrder {
+  """
+  The direction in which to order nodes.
+  """
+  direction: OrderDirection!
+
+  """
+  The field by which to order nodes.
+  """
+  field: TeamDiscussionCommentOrderField!
+}
+
+"""
+Properties by which team discussion comment connections can be ordered.
+"""
+enum TeamDiscussionCommentOrderField {
+  """
+  Allows sequential ordering of team discussion comments (which is equivalent to chronological ordering).
+  """
+  NUMBER
+}
+
+"""
+The connection type for TeamDiscussion.
+"""
+type TeamDiscussionConnection {
+  """
+  A list of edges.
+  """
+  edges: [TeamDiscussionEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [TeamDiscussion]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type TeamDiscussionEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: TeamDiscussion
+}
+
+"""
+Ways in which team discussion connections can be ordered.
+"""
+input TeamDiscussionOrder {
+  """
+  The direction in which to order nodes.
+  """
+  direction: OrderDirection!
+
+  """
+  The field by which to order nodes.
+  """
+  field: TeamDiscussionOrderField!
+}
+
+"""
+Properties by which team discussion connections can be ordered.
+"""
+enum TeamDiscussionOrderField {
+  """
+  Allows chronological ordering of team discussions.
+  """
+  CREATED_AT
+}
+
+"""
+An edge in a connection.
+"""
+type TeamEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: Team
+}
+
+"""
+The connection type for User.
+"""
+type TeamMemberConnection {
+  """
+  A list of edges.
+  """
+  edges: [TeamMemberEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a user who is a member of a team.
+"""
+type TeamMemberEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The HTTP path to the organization's member access page.
+  """
+  memberAccessResourcePath: URI!
+
+  """
+  The HTTP URL to the organization's member access page.
+  """
+  memberAccessUrl: URI!
+  node: User!
+
+  """
+  The role the member has on the team.
+  """
+  role: TeamMemberRole!
+}
+
+"""
+Ordering options for team member connections
+"""
+input TeamMemberOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order team members by.
+  """
+  field: TeamMemberOrderField!
+}
+
+"""
+Properties by which team member connections can be ordered.
+"""
+enum TeamMemberOrderField {
+  """
+  Order team members by creation time
+  """
+  CREATED_AT
+
+  """
+  Order team members by login
+  """
+  LOGIN
+}
+
+"""
+The possible team member roles; either 'maintainer' or 'member'.
+"""
+enum TeamMemberRole {
+  """
+  A team maintainer has permission to add and remove team members.
+  """
+  MAINTAINER
+
+  """
+  A team member has no administrative permissions on the team.
+  """
+  MEMBER
+}
+
+"""
+Defines which types of team members are included in the returned list. Can be one of IMMEDIATE, CHILD_TEAM or ALL.
+"""
+enum TeamMembershipType {
+  """
+  Includes immediate and child team members for the team.
+  """
+  ALL
+
+  """
+  Includes only child team members for the team.
+  """
+  CHILD_TEAM
+
+  """
+  Includes only immediate members of the team.
+  """
+  IMMEDIATE
+}
+
+"""
+Ways in which team connections can be ordered.
+"""
+input TeamOrder {
+  """
+  The direction in which to order nodes.
+  """
+  direction: OrderDirection!
+
+  """
+  The field in which to order nodes by.
+  """
+  field: TeamOrderField!
+}
+
+"""
+Properties by which team connections can be ordered.
+"""
+enum TeamOrderField {
+  """
+  Allows ordering a list of teams by name.
+  """
+  NAME
+}
+
+"""
+The possible team privacy values.
+"""
+enum TeamPrivacy {
+  """
+  A secret team can only be seen by its members.
+  """
+  SECRET
+
+  """
+  A visible team can be seen and @mentioned by every member of the organization.
+  """
+  VISIBLE
+}
+
+"""
+Audit log entry for a team.remove_member event.
+"""
+type TeamRemoveMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & TeamAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  Whether the team was mapped to an LDAP Group.
+  """
+  isLdapMapped: Boolean
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The team associated with the action
+  """
+  team: Team
+
+  """
+  The name of the team
+  """
+  teamName: String
+
+  """
+  The HTTP path for this team
+  """
+  teamResourcePath: URI
+
+  """
+  The HTTP URL for this team
+  """
+  teamUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+Audit log entry for a team.remove_repository event.
+"""
+type TeamRemoveRepositoryAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TeamAuditEntryData {
+  """
+  The action name
+  """
+  action: String!
+
+  """
+  The user who initiated the action
+  """
+  actor: AuditEntryActor
+
+  """
+  The IP address of the actor
+  """
+  actorIp: String
+
+  """
+  A readable representation of the actor's location
+  """
+  actorLocation: ActorLocation
+
+  """
+  The username of the user who initiated the action
+  """
+  actorLogin: String
+
+  """
+  The HTTP path for the actor.
+  """
+  actorResourcePath: URI
+
+  """
+  The HTTP URL for the actor.
+  """
+  actorUrl: URI
+
+  """
+  The time the action was initiated
+  """
+  createdAt: PreciseDateTime!
+  id: ID!
+
+  """
+  Whether the team was mapped to an LDAP Group.
+  """
+  isLdapMapped: Boolean
+
+  """
+  The corresponding operation type for the action
+  """
+  operationType: OperationType
+
+  """
+  The Organization associated with the Audit Entry.
+  """
+  organization: Organization
+
+  """
+  The name of the Organization.
+  """
+  organizationName: String
+
+  """
+  The HTTP path for the organization
+  """
+  organizationResourcePath: URI
+
+  """
+  The HTTP URL for the organization
+  """
+  organizationUrl: URI
+
+  """
+  The repository associated with the action
+  """
+  repository: Repository
+
+  """
+  The name of the repository
+  """
+  repositoryName: String
+
+  """
+  The HTTP path for the repository
+  """
+  repositoryResourcePath: URI
+
+  """
+  The HTTP URL for the repository
+  """
+  repositoryUrl: URI
+
+  """
+  The team associated with the action
+  """
+  team: Team
+
+  """
+  The name of the team
+  """
+  teamName: String
+
+  """
+  The HTTP path for this team
+  """
+  teamResourcePath: URI
+
+  """
+  The HTTP URL for this team
+  """
+  teamUrl: URI
+
+  """
+  The user affected by the action
+  """
+  user: User
+
+  """
+  For actions involving two users, the actor is the initiator and the user is the affected user.
+  """
+  userLogin: String
+
+  """
+  The HTTP path for the user.
+  """
+  userResourcePath: URI
+
+  """
+  The HTTP URL for the user.
+  """
+  userUrl: URI
+}
+
+"""
+The connection type for Repository.
+"""
+type TeamRepositoryConnection {
+  """
+  A list of edges.
+  """
+  edges: [TeamRepositoryEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [Repository]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+Represents a team repository.
+"""
+type TeamRepositoryEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+  node: Repository!
+
+  """
+  The permission level the team has on the repository
+
+  **Upcoming Change on 2020-10-01 UTC**
+  **Description:** Type for `permission` will change from `RepositoryPermission!` to `String`.
+  **Reason:** This field may return additional values
+  """
+  permission: RepositoryPermission!
+}
+
+"""
+Ordering options for team repository connections
+"""
+input TeamRepositoryOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order repositories by.
+  """
+  field: TeamRepositoryOrderField!
+}
+
+"""
+Properties by which team repository connections can be ordered.
+"""
+enum TeamRepositoryOrderField {
+  """
+  Order repositories by creation time
+  """
+  CREATED_AT
+
+  """
+  Order repositories by name
+  """
+  NAME
+
+  """
+  Order repositories by permission
+  """
+  PERMISSION
+
+  """
+  Order repositories by push time
+  """
+  PUSHED_AT
+
+  """
+  Order repositories by number of stargazers
+  """
+  STARGAZERS
+
+  """
+  Order repositories by update time
+  """
+  UPDATED_AT
+}
+
+"""
+The possible team review assignment algorithms
+"""
+enum TeamReviewAssignmentAlgorithm @preview(toggledBy: "stone-crop-preview") {
+  """
+  Balance review load across the entire team
+  """
+  LOAD_BALANCE
+
+  """
+  Alternate reviews between each team member
+  """
+  ROUND_ROBIN
+}
+
+"""
+The role of a user on a team.
+"""
+enum TeamRole {
+  """
+  User has admin rights on the team.
+  """
+  ADMIN
+
+  """
+  User is a member of the team.
+  """
+  MEMBER
+}
+
+"""
+A text match within a search result.
+"""
+type TextMatch {
+  """
+  The specific text fragment within the property matched on.
+  """
+  fragment: String!
+
+  """
+  Highlights within the matched fragment.
+  """
+  highlights: [TextMatchHighlight!]!
+
+  """
+  The property matched on.
+  """
+  property: String!
+}
+
+"""
+Represents a single highlight in a search result match.
+"""
+type TextMatchHighlight {
+  """
+  The indice in the fragment where the matched text begins.
+  """
+  beginIndice: Int!
+
+  """
+  The indice in the fragment where the matched text ends.
+  """
+  endIndice: Int!
+
+  """
+  The text matched.
+  """
+  text: String!
+}
+
+"""
+A topic aggregates entities that are related to a subject.
+"""
+type Topic implements Node & Starrable {
+  id: ID!
+
+  """
+  The topic's name.
+  """
+  name: String!
+
+  """
+  A list of related topics, including aliases of this topic, sorted with the most relevant
+  first. Returns up to 10 Topics.
+  """
+  relatedTopics(
+    """
+    How many topics to return.
+    """
+    first: Int = 3
+  ): [Topic!]!
+
+  """
+  A list of users who have starred this starrable.
+  """
+  stargazers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: StarOrder
+  ): StargazerConnection!
+
+  """
+  Returns a boolean indicating whether the viewing user has starred this starrable.
+  """
+  viewerHasStarred: Boolean!
+}
+
+"""
+Metadata for an audit entry with a topic.
+"""
+interface TopicAuditEntryData {
+  """
+  The name of the topic added to the repository
+  """
+  topic: Topic
+
+  """
+  The name of the topic added to the repository
+  """
+  topicName: String
+}
+
+"""
+Reason that the suggested topic is declined.
+"""
+enum TopicSuggestionDeclineReason {
+  """
+  The suggested topic is not relevant to the repository.
+  """
+  NOT_RELEVANT
+
+  """
+  The viewer does not like the suggested topic.
+  """
+  PERSONAL_PREFERENCE
+
+  """
+  The suggested topic is too general for the repository.
+  """
+  TOO_GENERAL
+
+  """
+  The suggested topic is too specific for the repository (e.g. #ruby-on-rails-version-4-2-1).
+  """
+  TOO_SPECIFIC
+}
+
+"""
+Autogenerated input type of TransferIssue
+"""
+input TransferIssueInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the issue to be transferred
+  """
+  issueId: ID! @possibleTypes(concreteTypes: ["Issue"])
+
+  """
+  The Node ID of the repository the issue should be transferred to
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of TransferIssue
+"""
+type TransferIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The issue that was transferred
+  """
+  issue: Issue
+}
+
+"""
+Represents a 'transferred' event on a given issue or pull request.
+"""
+type TransferredEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  The repository this came from
+  """
+  fromRepository: Repository
+  id: ID!
+
+  """
+  Identifies the issue associated with the event.
+  """
+  issue: Issue!
+}
+
+"""
+Represents a Git tree.
+"""
+type Tree implements GitObject & Node {
+  """
+  An abbreviated version of the Git object ID
+  """
+  abbreviatedOid: String!
+
+  """
+  The HTTP path for this Git object
+  """
+  commitResourcePath: URI!
+
+  """
+  The HTTP URL for this Git object
+  """
+  commitUrl: URI!
+
+  """
+  A list of tree entries.
+  """
+  entries: [TreeEntry!]
+  id: ID!
+
+  """
+  The Git object ID
+  """
+  oid: GitObjectID!
+
+  """
+  The Repository the Git object belongs to
+  """
+  repository: Repository!
+}
+
+"""
+Represents a Git tree entry.
+"""
+type TreeEntry {
+  """
+  Entry file mode.
+  """
+  mode: Int!
+
+  """
+  Entry file name.
+  """
+  name: String!
+
+  """
+  Entry file object.
+  """
+  object: GitObject
+
+  """
+  Entry file Git object ID.
+  """
+  oid: GitObjectID!
+
+  """
+  The Repository the tree entry belongs to
+  """
+  repository: Repository!
+
+  """
+  If the TreeEntry is for a directory occupied by a submodule project, this returns the corresponding submodule
+  """
+  submodule: Submodule
+
+  """
+  Entry file type.
+  """
+  type: String!
+}
+
+"""
+An RFC 3986, RFC 3987, and RFC 6570 (level 4) compliant URI string.
+"""
+scalar URI
+
+"""
+Autogenerated input type of UnarchiveRepository
+"""
+input UnarchiveRepositoryInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the repository to unarchive.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of UnarchiveRepository
+"""
+type UnarchiveRepositoryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The repository that was unarchived.
+  """
+  repository: Repository
+}
+
+"""
+Represents an 'unassigned' event on any assignable object.
+"""
+type UnassignedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the assignable associated with the event.
+  """
+  assignable: Assignable!
+
+  """
+  Identifies the user or mannequin that was unassigned.
+  """
+  assignee: Assignee
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the subject (user) who was unassigned.
+  """
+  user: User
+  @deprecated(
+    reason: "Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC."
+  )
+}
+
+"""
+Autogenerated input type of UnfollowUser
+"""
+input UnfollowUserInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the user to unfollow.
+  """
+  userId: ID! @possibleTypes(concreteTypes: ["User"])
+}
+
+"""
+Autogenerated return type of UnfollowUser
+"""
+type UnfollowUserPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The user that was unfollowed.
+  """
+  user: User
+}
+
+"""
+Represents a type that can be retrieved by a URL.
+"""
+interface UniformResourceLocatable {
+  """
+  The HTML path to this resource.
+  """
+  resourcePath: URI!
+
+  """
+  The URL to this resource.
+  """
+  url: URI!
+}
+
+"""
+Represents an unknown signature on a Commit or Tag.
+"""
+type UnknownSignature implements GitSignature {
+  """
+  Email used to sign this object.
+  """
+  email: String!
+
+  """
+  True if the signature is valid and verified by GitHub.
+  """
+  isValid: Boolean!
+
+  """
+  Payload for GPG signing object. Raw ODB object without the signature header.
+  """
+  payload: String!
+
+  """
+  ASCII-armored signature header from object.
+  """
+  signature: String!
+
+  """
+  GitHub user corresponding to the email signing this commit.
+  """
+  signer: User
+
+  """
+  The state of this signature. `VALID` if signature is valid and verified by
+  GitHub, otherwise represents reason why signature is considered invalid.
+  """
+  state: GitSignatureState!
+
+  """
+  True if the signature was made with GitHub's signing key.
+  """
+  wasSignedByGitHub: Boolean!
+}
+
+"""
+Represents an 'unlabeled' event on a given issue or pull request.
+"""
+type UnlabeledEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the label associated with the 'unlabeled' event.
+  """
+  label: Label!
+
+  """
+  Identifies the `Labelable` associated with the event.
+  """
+  labelable: Labelable!
+}
+
+"""
+Autogenerated input type of UnlinkRepositoryFromProject
+"""
+input UnlinkRepositoryFromProjectInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the Project linked to the Repository.
+  """
+  projectId: ID! @possibleTypes(concreteTypes: ["Project"])
+
+  """
+  The ID of the Repository linked to the Project.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of UnlinkRepositoryFromProject
+"""
+type UnlinkRepositoryFromProjectPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The linked Project.
+  """
+  project: Project
+
+  """
+  The linked Repository.
+  """
+  repository: Repository
+}
+
+"""
+Autogenerated input type of UnlockLockable
+"""
+input UnlockLockableInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the issue or pull request to be unlocked.
+  """
+  lockableId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "Lockable"
+  )
+}
+
+"""
+Autogenerated return type of UnlockLockable
+"""
+type UnlockLockablePayload {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The item that was unlocked.
+  """
+  unlockedRecord: Lockable
+}
+
+"""
+Represents an 'unlocked' event on a given issue or pull request.
+"""
+type UnlockedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Object that was unlocked.
+  """
+  lockable: Lockable!
+}
+
+"""
+Autogenerated input type of UnmarkIssueAsDuplicate
+"""
+input UnmarkIssueAsDuplicateInput {
+  """
+  ID of the issue or pull request currently considered canonical/authoritative/original.
+  """
+  canonicalId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "IssueOrPullRequest"
+  )
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  ID of the issue or pull request currently marked as a duplicate.
+  """
+  duplicateId: ID!
+  @possibleTypes(
+    concreteTypes: ["Issue", "PullRequest"]
+    abstractType: "IssueOrPullRequest"
+  )
+}
+
+"""
+Autogenerated return type of UnmarkIssueAsDuplicate
+"""
+type UnmarkIssueAsDuplicatePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The issue or pull request that was marked as a duplicate.
+  """
+  duplicate: IssueOrPullRequest
+}
+
+"""
+Represents an 'unmarked_as_duplicate' event on a given issue or pull request.
+"""
+type UnmarkedAsDuplicateEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+}
+
+"""
+Autogenerated input type of UnminimizeComment
+"""
+input UnminimizeCommentInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the subject to modify.
+  """
+  subjectId: ID!
+  @possibleTypes(
+    concreteTypes: [
+      "CommitComment"
+      "GistComment"
+      "IssueComment"
+      "PullRequestReviewComment"
+    ]
+    abstractType: "Minimizable"
+  )
+}
+
+"""
+Autogenerated return type of UnminimizeComment
+"""
+type UnminimizeCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The comment that was unminimized.
+  """
+  unminimizedComment: Minimizable
+}
+
+"""
+Autogenerated input type of UnpinIssue
+"""
+input UnpinIssueInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the issue to be unpinned
+  """
+  issueId: ID! @possibleTypes(concreteTypes: ["Issue"])
+}
+
+"""
+Autogenerated return type of UnpinIssue
+"""
+type UnpinIssuePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The issue that was unpinned
+  """
+  issue: Issue
+}
+
+"""
+Represents an 'unpinned' event on a given issue or pull request.
+"""
+type UnpinnedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Identifies the issue associated with the event.
+  """
+  issue: Issue!
+}
+
+"""
+Autogenerated input type of UnresolveReviewThread
+"""
+input UnresolveReviewThreadInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the thread to unresolve
+  """
+  threadId: ID! @possibleTypes(concreteTypes: ["PullRequestReviewThread"])
+}
+
+"""
+Autogenerated return type of UnresolveReviewThread
+"""
+type UnresolveReviewThreadPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The thread to resolve.
+  """
+  thread: PullRequestReviewThread
+}
+
+"""
+Represents an 'unsubscribed' event on a given `Subscribable`.
+"""
+type UnsubscribedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  Object referenced by event.
+  """
+  subscribable: Subscribable!
+}
+
+"""
+Entities that can be updated.
+"""
+interface Updatable {
+  """
+  Check if the current viewer can update this object.
+  """
+  viewerCanUpdate: Boolean!
+}
+
+"""
+Comments that can be updated.
+"""
+interface UpdatableComment {
+  """
+  Reasons why the current viewer can not update this comment.
+  """
+  viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+}
+
+"""
+Autogenerated input type of UpdateBranchProtectionRule
+"""
+input UpdateBranchProtectionRuleInput {
+  """
+  The global relay id of the branch protection rule to be updated.
+  """
+  branchProtectionRuleId: ID!
+  @possibleTypes(concreteTypes: ["BranchProtectionRule"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Will new commits pushed to matching branches dismiss pull request review approvals.
+  """
+  dismissesStaleReviews: Boolean
+
+  """
+  Can admins overwrite branch protection.
+  """
+  isAdminEnforced: Boolean
+
+  """
+  The glob-like pattern used to determine matching branches.
+  """
+  pattern: String
+
+  """
+  A list of User, Team or App IDs allowed to push to matching branches.
+  """
+  pushActorIds: [ID!]
+
+  """
+  Number of approving reviews required to update matching branches.
+  """
+  requiredApprovingReviewCount: Int
+
+  """
+  List of required status check contexts that must pass for commits to be accepted to matching branches.
+  """
+  requiredStatusCheckContexts: [String!]
+
+  """
+  Are approving reviews required to update matching branches.
+  """
+  requiresApprovingReviews: Boolean
+
+  """
+  Are reviews from code owners required to update matching branches.
+  """
+  requiresCodeOwnerReviews: Boolean
+
+  """
+  Are commits required to be signed.
+  """
+  requiresCommitSignatures: Boolean
+
+  """
+  Are status checks required to update matching branches.
+  """
+  requiresStatusChecks: Boolean
+
+  """
+  Are branches required to be up to date before merging.
+  """
+  requiresStrictStatusChecks: Boolean
+
+  """
+  Is pushing to matching branches restricted.
+  """
+  restrictsPushes: Boolean
+
+  """
+  Is dismissal of pull request reviews restricted.
+  """
+  restrictsReviewDismissals: Boolean
+
+  """
+  A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches.
+  """
+  reviewDismissalActorIds: [ID!]
+}
+
+"""
+Autogenerated return type of UpdateBranchProtectionRule
+"""
+type UpdateBranchProtectionRulePayload {
+  """
+  The newly created BranchProtectionRule.
+  """
+  branchProtectionRule: BranchProtectionRule
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of UpdateCheckRun
+"""
+input UpdateCheckRunInput @preview(toggledBy: "antiope-preview") {
+  """
+  Possible further actions the integrator can perform, which a user may trigger.
+  """
+  actions: [CheckRunAction!]
+
+  """
+  The node of the check.
+  """
+  checkRunId: ID! @possibleTypes(concreteTypes: ["CheckRun"])
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The time that the check run finished.
+  """
+  completedAt: DateTime
+
+  """
+  The final conclusion of the check.
+  """
+  conclusion: CheckConclusionState
+
+  """
+  The URL of the integrator's site that has the full details of the check.
+  """
+  detailsUrl: URI
+
+  """
+  A reference for the run on the integrator's system.
+  """
+  externalId: String
+
+  """
+  The name of the check.
+  """
+  name: String
+
+  """
+  Descriptive details about the run.
+  """
+  output: CheckRunOutput
+
+  """
+  The node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  The time that the check run began.
+  """
+  startedAt: DateTime
+
+  """
+  The current status.
+  """
+  status: RequestableCheckStatusState
+}
+
+"""
+Autogenerated return type of UpdateCheckRun
+"""
+type UpdateCheckRunPayload @preview(toggledBy: "antiope-preview") {
+  """
+  The updated check run.
+  """
+  checkRun: CheckRun
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of UpdateCheckSuitePreferences
+"""
+input UpdateCheckSuitePreferencesInput @preview(toggledBy: "antiope-preview") {
+  """
+  The check suite preferences to modify.
+  """
+  autoTriggerPreferences: [CheckSuiteAutoTriggerPreference!]!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of UpdateCheckSuitePreferences
+"""
+type UpdateCheckSuitePreferencesPayload @preview(toggledBy: "antiope-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated repository.
+  """
+  repository: Repository
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseActionExecutionCapabilitySetting
+"""
+input UpdateEnterpriseActionExecutionCapabilitySettingInput {
+  """
+  The value for the action execution capability setting on the enterprise.
+  """
+  capability: ActionExecutionCapabilitySetting!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can create repositories setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseActionExecutionCapabilitySetting
+"""
+type UpdateEnterpriseActionExecutionCapabilitySettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated action execution capability setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the action execution capability setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseAdministratorRole
+"""
+input UpdateEnterpriseAdministratorRoleInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the Enterprise which the admin belongs to.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The login of a administrator whose role is being changed.
+  """
+  login: String!
+
+  """
+  The new role for the Enterprise administrator.
+  """
+  role: EnterpriseAdministratorRole!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseAdministratorRole
+"""
+type UpdateEnterpriseAdministratorRolePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A message confirming the result of changing the administrator's role.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseAllowPrivateRepositoryForkingSetting
+"""
+input UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the allow private repository forking setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the allow private repository forking setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseAllowPrivateRepositoryForkingSetting
+"""
+type UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated allow private repository forking setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the allow private repository forking setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseDefaultRepositoryPermissionSetting
+"""
+input UpdateEnterpriseDefaultRepositoryPermissionSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the default repository permission setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the default repository permission setting on the enterprise.
+  """
+  settingValue: EnterpriseDefaultRepositoryPermissionSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseDefaultRepositoryPermissionSetting
+"""
+type UpdateEnterpriseDefaultRepositoryPermissionSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated default repository permission setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the default repository permission setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting
+"""
+input UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can change repository visibility setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the members can change repository visibility setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting
+"""
+type UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can change repository visibility setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can change repository visibility setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanCreateRepositoriesSetting
+"""
+input UpdateEnterpriseMembersCanCreateRepositoriesSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can create repositories setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  Allow members to create internal repositories. Defaults to current value.
+  """
+  membersCanCreateInternalRepositories: Boolean
+
+  """
+  Allow members to create private repositories. Defaults to current value.
+  """
+  membersCanCreatePrivateRepositories: Boolean
+
+  """
+  Allow members to create public repositories. Defaults to current value.
+  """
+  membersCanCreatePublicRepositories: Boolean
+
+  """
+  When false, allow member organizations to set their own repository creation member privileges.
+  """
+  membersCanCreateRepositoriesPolicyEnabled: Boolean
+
+  """
+  Value for the members can create repositories setting on the enterprise. This
+  or the granular public/private/internal allowed fields (but not both) must be provided.
+  """
+  settingValue: EnterpriseMembersCanCreateRepositoriesSettingValue
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanCreateRepositoriesSetting
+"""
+type UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can create repositories setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can create repositories setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanDeleteIssuesSetting
+"""
+input UpdateEnterpriseMembersCanDeleteIssuesSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can delete issues setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the members can delete issues setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanDeleteIssuesSetting
+"""
+type UpdateEnterpriseMembersCanDeleteIssuesSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can delete issues setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can delete issues setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanDeleteRepositoriesSetting
+"""
+input UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can delete repositories setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the members can delete repositories setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanDeleteRepositoriesSetting
+"""
+type UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can delete repositories setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can delete repositories setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanInviteCollaboratorsSetting
+"""
+input UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can invite collaborators setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the members can invite collaborators setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanInviteCollaboratorsSetting
+"""
+type UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can invite collaborators setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can invite collaborators setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanMakePurchasesSetting
+"""
+input UpdateEnterpriseMembersCanMakePurchasesSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can make purchases setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the members can make purchases setting on the enterprise.
+  """
+  settingValue: EnterpriseMembersCanMakePurchasesSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanMakePurchasesSetting
+"""
+type UpdateEnterpriseMembersCanMakePurchasesSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can make purchases setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can make purchases setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting
+"""
+input UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can update protected branches setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the members can update protected branches setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting
+"""
+type UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can update protected branches setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can update protected branches setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseMembersCanViewDependencyInsightsSetting
+"""
+input UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the members can view dependency insights setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the members can view dependency insights setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseMembersCanViewDependencyInsightsSetting
+"""
+type UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated members can view dependency insights setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the members can view dependency insights setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseOrganizationProjectsSetting
+"""
+input UpdateEnterpriseOrganizationProjectsSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the organization projects setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the organization projects setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseOrganizationProjectsSetting
+"""
+type UpdateEnterpriseOrganizationProjectsSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated organization projects setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the organization projects setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseProfile
+"""
+input UpdateEnterpriseProfileInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The description of the enterprise.
+  """
+  description: String
+
+  """
+  The Enterprise ID to update.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The location of the enterprise.
+  """
+  location: String
+
+  """
+  The name of the enterprise.
+  """
+  name: String
+
+  """
+  The URL of the enterprise's website.
+  """
+  websiteUrl: String
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseProfile
+"""
+type UpdateEnterpriseProfilePayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated enterprise.
+  """
+  enterprise: Enterprise
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseRepositoryProjectsSetting
+"""
+input UpdateEnterpriseRepositoryProjectsSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the repository projects setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the repository projects setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseRepositoryProjectsSetting
+"""
+type UpdateEnterpriseRepositoryProjectsSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated repository projects setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the repository projects setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseTeamDiscussionsSetting
+"""
+input UpdateEnterpriseTeamDiscussionsSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the team discussions setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the team discussions setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledDisabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseTeamDiscussionsSetting
+"""
+type UpdateEnterpriseTeamDiscussionsSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated team discussions setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the team discussions setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateEnterpriseTwoFactorAuthenticationRequiredSetting
+"""
+input UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the enterprise on which to set the two factor authentication required setting.
+  """
+  enterpriseId: ID! @possibleTypes(concreteTypes: ["Enterprise"])
+
+  """
+  The value for the two factor authentication required setting on the enterprise.
+  """
+  settingValue: EnterpriseEnabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateEnterpriseTwoFactorAuthenticationRequiredSetting
+"""
+type UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The enterprise with the updated two factor authentication required setting.
+  """
+  enterprise: Enterprise
+
+  """
+  A message confirming the result of updating the two factor authentication required setting.
+  """
+  message: String
+}
+
+"""
+Autogenerated input type of UpdateIpAllowListEnabledSetting
+"""
+input UpdateIpAllowListEnabledSettingInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the owner on which to set the IP allow list enabled setting.
+  """
+  ownerId: ID!
+  @possibleTypes(
+    concreteTypes: ["Enterprise", "Organization"]
+    abstractType: "IpAllowListOwner"
+  )
+
+  """
+  The value for the IP allow list enabled setting.
+  """
+  settingValue: IpAllowListEnabledSettingValue!
+}
+
+"""
+Autogenerated return type of UpdateIpAllowListEnabledSetting
+"""
+type UpdateIpAllowListEnabledSettingPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The IP allow list owner on which the setting was updated.
+  """
+  owner: IpAllowListOwner
+}
+
+"""
+Autogenerated input type of UpdateIpAllowListEntry
+"""
+input UpdateIpAllowListEntryInput {
+  """
+  An IP address or range of addresses in CIDR notation.
+  """
+  allowListValue: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the IP allow list entry to update.
+  """
+  ipAllowListEntryId: ID! @possibleTypes(concreteTypes: ["IpAllowListEntry"])
+
+  """
+  Whether the IP allow list entry is active when an IP allow list is enabled.
+  """
+  isActive: Boolean!
+
+  """
+  An optional name for the IP allow list entry.
+  """
+  name: String
+}
+
+"""
+Autogenerated return type of UpdateIpAllowListEntry
+"""
+type UpdateIpAllowListEntryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The IP allow list entry that was updated.
+  """
+  ipAllowListEntry: IpAllowListEntry
+}
+
+"""
+Autogenerated input type of UpdateIssueComment
+"""
+input UpdateIssueCommentInput {
+  """
+  The updated text of the comment.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the IssueComment to modify.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["IssueComment"])
+}
+
+"""
+Autogenerated return type of UpdateIssueComment
+"""
+type UpdateIssueCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated comment.
+  """
+  issueComment: IssueComment
+}
+
+"""
+Autogenerated input type of UpdateIssue
+"""
+input UpdateIssueInput {
+  """
+  An array of Node IDs of users for this issue.
+  """
+  assigneeIds: [ID!] @possibleTypes(concreteTypes: ["User"])
+
+  """
+  The body for the issue description.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the Issue to modify.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["Issue"])
+
+  """
+  An array of Node IDs of labels for this issue.
+  """
+  labelIds: [ID!] @possibleTypes(concreteTypes: ["Label"])
+
+  """
+  The Node ID of the milestone for this issue.
+  """
+  milestoneId: ID @possibleTypes(concreteTypes: ["Milestone"])
+
+  """
+  An array of Node IDs for projects associated with this issue.
+  """
+  projectIds: [ID!]
+
+  """
+  The desired issue state.
+  """
+  state: IssueState
+
+  """
+  The title for the issue.
+  """
+  title: String
+}
+
+"""
+Autogenerated return type of UpdateIssue
+"""
+type UpdateIssuePayload {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The issue.
+  """
+  issue: Issue
+}
+
+"""
+Autogenerated input type of UpdateLabel
+"""
+input UpdateLabelInput @preview(toggledBy: "bane-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A 6 character hex code, without the leading #, identifying the updated color of the label.
+  """
+  color: String
+
+  """
+  A brief description of the label, such as its purpose.
+  """
+  description: String
+
+  """
+  The Node ID of the label to be updated.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["Label"])
+
+  """
+  The updated name of the label.
+  """
+  name: String
+}
+
+"""
+Autogenerated return type of UpdateLabel
+"""
+type UpdateLabelPayload @preview(toggledBy: "bane-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated label.
+  """
+  label: Label
+}
+
+"""
+Autogenerated input type of UpdateProjectCard
+"""
+input UpdateProjectCardInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Whether or not the ProjectCard should be archived
+  """
+  isArchived: Boolean
+
+  """
+  The note of ProjectCard.
+  """
+  note: String
+
+  """
+  The ProjectCard ID to update.
+  """
+  projectCardId: ID! @possibleTypes(concreteTypes: ["ProjectCard"])
+}
+
+"""
+Autogenerated return type of UpdateProjectCard
+"""
+type UpdateProjectCardPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated ProjectCard.
+  """
+  projectCard: ProjectCard
+}
+
+"""
+Autogenerated input type of UpdateProjectColumn
+"""
+input UpdateProjectColumnInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of project column.
+  """
+  name: String!
+
+  """
+  The ProjectColumn ID to update.
+  """
+  projectColumnId: ID! @possibleTypes(concreteTypes: ["ProjectColumn"])
+}
+
+"""
+Autogenerated return type of UpdateProjectColumn
+"""
+type UpdateProjectColumnPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated project column.
+  """
+  projectColumn: ProjectColumn
+}
+
+"""
+Autogenerated input type of UpdateProject
+"""
+input UpdateProjectInput {
+  """
+  The description of project.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The name of project.
+  """
+  name: String
+
+  """
+  The Project ID to update.
+  """
+  projectId: ID! @possibleTypes(concreteTypes: ["Project"])
+
+  """
+  Whether the project is public or not.
+  """
+  public: Boolean
+
+  """
+  Whether the project is open or closed.
+  """
+  state: ProjectState
+}
+
+"""
+Autogenerated return type of UpdateProject
+"""
+type UpdateProjectPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated project.
+  """
+  project: Project
+}
+
+"""
+Autogenerated input type of UpdatePullRequest
+"""
+input UpdatePullRequestInput {
+  """
+  An array of Node IDs of users for this pull request.
+  """
+  assigneeIds: [ID!] @possibleTypes(concreteTypes: ["User"])
+
+  """
+  The name of the branch you want your changes pulled into. This should be an existing branch
+  on the current repository.
+  """
+  baseRefName: String
+
+  """
+  The contents of the pull request.
+  """
+  body: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  An array of Node IDs of labels for this pull request.
+  """
+  labelIds: [ID!] @possibleTypes(concreteTypes: ["Label"])
+
+  """
+  Indicates whether maintainers can modify the pull request.
+  """
+  maintainerCanModify: Boolean
+
+  """
+  The Node ID of the milestone for this pull request.
+  """
+  milestoneId: ID @possibleTypes(concreteTypes: ["Milestone"])
+
+  """
+  An array of Node IDs for projects associated with this pull request.
+  """
+  projectIds: [ID!]
+
+  """
+  The Node ID of the pull request.
+  """
+  pullRequestId: ID! @possibleTypes(concreteTypes: ["PullRequest"])
+
+  """
+  The target state of the pull request.
+  """
+  state: PullRequestUpdateState
+
+  """
+  The title of the pull request.
+  """
+  title: String
+}
+
+"""
+Autogenerated return type of UpdatePullRequest
+"""
+type UpdatePullRequestPayload {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated pull request.
+  """
+  pullRequest: PullRequest
+}
+
+"""
+Autogenerated input type of UpdatePullRequestReviewComment
+"""
+input UpdatePullRequestReviewCommentInput {
+  """
+  The text of the comment.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the comment to modify.
+  """
+  pullRequestReviewCommentId: ID!
+  @possibleTypes(concreteTypes: ["PullRequestReviewComment"])
+}
+
+"""
+Autogenerated return type of UpdatePullRequestReviewComment
+"""
+type UpdatePullRequestReviewCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated comment.
+  """
+  pullRequestReviewComment: PullRequestReviewComment
+}
+
+"""
+Autogenerated input type of UpdatePullRequestReview
+"""
+input UpdatePullRequestReviewInput {
+  """
+  The contents of the pull request review body.
+  """
+  body: String!
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the pull request review to modify.
+  """
+  pullRequestReviewId: ID! @possibleTypes(concreteTypes: ["PullRequestReview"])
+}
+
+"""
+Autogenerated return type of UpdatePullRequestReview
+"""
+type UpdatePullRequestReviewPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated pull request review.
+  """
+  pullRequestReview: PullRequestReview
+}
+
+"""
+Autogenerated input type of UpdateRef
+"""
+input UpdateRefInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Permit updates of branch Refs that are not fast-forwards?
+  """
+  force: Boolean = false
+
+  """
+  The GitObjectID that the Ref shall be updated to target.
+  """
+  oid: GitObjectID!
+
+  """
+  The Node ID of the Ref to be updated.
+  """
+  refId: ID! @possibleTypes(concreteTypes: ["Ref"])
+}
+
+"""
+Autogenerated return type of UpdateRef
+"""
+type UpdateRefPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated Ref.
+  """
+  ref: Ref
+}
+
+"""
+Autogenerated input type of UpdateRefs
+"""
+input UpdateRefsInput @preview(toggledBy: "update-refs-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A list of ref updates.
+  """
+  refUpdates: [RefUpdate!]!
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+}
+
+"""
+Autogenerated return type of UpdateRefs
+"""
+type UpdateRefsPayload @preview(toggledBy: "update-refs-preview") {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+}
+
+"""
+Autogenerated input type of UpdateRepository
+"""
+input UpdateRepositoryInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  A new description for the repository. Pass an empty string to erase the existing description.
+  """
+  description: String
+
+  """
+  Indicates if the repository should have the issues feature enabled.
+  """
+  hasIssuesEnabled: Boolean
+
+  """
+  Indicates if the repository should have the project boards feature enabled.
+  """
+  hasProjectsEnabled: Boolean
+
+  """
+  Indicates if the repository should have the wiki feature enabled.
+  """
+  hasWikiEnabled: Boolean
+
+  """
+  The URL for a web page about this repository. Pass an empty string to erase the existing URL.
+  """
+  homepageUrl: URI
+
+  """
+  The new name of the repository.
+  """
+  name: String
+
+  """
+  The ID of the repository to update.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  Whether this repository should be marked as a template such that anyone who
+  can access it can create new repositories with the same files and directory structure.
+  """
+  template: Boolean
+}
+
+"""
+Autogenerated return type of UpdateRepository
+"""
+type UpdateRepositoryPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated repository.
+  """
+  repository: Repository
+}
+
+"""
+Autogenerated input type of UpdateSubscription
+"""
+input UpdateSubscriptionInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The new state of the subscription.
+  """
+  state: SubscriptionState!
+
+  """
+  The Node ID of the subscribable object to modify.
+  """
+  subscribableId: ID!
+  @possibleTypes(
+    concreteTypes: [
+      "Commit"
+      "Issue"
+      "PullRequest"
+      "Repository"
+      "Team"
+      "TeamDiscussion"
+    ]
+    abstractType: "Subscribable"
+  )
+}
+
+"""
+Autogenerated return type of UpdateSubscription
+"""
+type UpdateSubscriptionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The input subscribable entity.
+  """
+  subscribable: Subscribable
+}
+
+"""
+Autogenerated input type of UpdateTeamDiscussionComment
+"""
+input UpdateTeamDiscussionCommentInput {
+  """
+  The updated text of the comment.
+  """
+  body: String!
+
+  """
+  The current version of the body content.
+  """
+  bodyVersion: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The ID of the comment to modify.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["TeamDiscussionComment"])
+}
+
+"""
+Autogenerated return type of UpdateTeamDiscussionComment
+"""
+type UpdateTeamDiscussionCommentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated comment.
+  """
+  teamDiscussionComment: TeamDiscussionComment
+}
+
+"""
+Autogenerated input type of UpdateTeamDiscussion
+"""
+input UpdateTeamDiscussionInput {
+  """
+  The updated text of the discussion.
+  """
+  body: String
+
+  """
+  The current version of the body content. If provided, this update operation
+  will be rejected if the given version does not match the latest version on the server.
+  """
+  bodyVersion: String
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the discussion to modify.
+  """
+  id: ID! @possibleTypes(concreteTypes: ["TeamDiscussion"])
+
+  """
+  If provided, sets the pinned state of the updated discussion.
+  """
+  pinned: Boolean
+
+  """
+  The updated title of the discussion.
+  """
+  title: String
+}
+
+"""
+Autogenerated return type of UpdateTeamDiscussion
+"""
+type UpdateTeamDiscussionPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The updated discussion.
+  """
+  teamDiscussion: TeamDiscussion
+}
+
+"""
+Autogenerated input type of UpdateTeamReviewAssignment
+"""
+input UpdateTeamReviewAssignmentInput
+@preview(toggledBy: "stone-crop-preview") {
+  """
+  The algorithm to use for review assignment
+  """
+  algorithm: TeamReviewAssignmentAlgorithm = ROUND_ROBIN
+
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Turn on or off review assignment
+  """
+  enabled: Boolean!
+
+  """
+  An array of team member IDs to exclude
+  """
+  excludedTeamMemberIds: [ID!] @possibleTypes(concreteTypes: ["User"])
+
+  """
+  The Node ID of the team to update review assginments of
+  """
+  id: ID! @possibleTypes(concreteTypes: ["Team"])
+
+  """
+  Notify the entire team of the PR if it is delegated
+  """
+  notifyTeam: Boolean = true
+
+  """
+  The number of team members to assign
+  """
+  teamMemberCount: Int = 1
+}
+
+"""
+Autogenerated return type of UpdateTeamReviewAssignment
+"""
+type UpdateTeamReviewAssignmentPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The team that was modified
+  """
+  team: Team
+}
+
+"""
+Autogenerated input type of UpdateTopics
+"""
+input UpdateTopicsInput {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  The Node ID of the repository.
+  """
+  repositoryId: ID! @possibleTypes(concreteTypes: ["Repository"])
+
+  """
+  An array of topic names.
+  """
+  topicNames: [String!]!
+}
+
+"""
+Autogenerated return type of UpdateTopics
+"""
+type UpdateTopicsPayload {
+  """
+  A unique identifier for the client performing the mutation.
+  """
+  clientMutationId: String
+
+  """
+  Names of the provided topics that are not valid.
+  """
+  invalidTopicNames: [String!]
+
+  """
+  The updated repository.
+  """
+  repository: Repository
+}
+
+"""
+A user is an individual's account on GitHub that owns repositories and can make new content.
+"""
+type User implements Actor & Node & PackageOwner & ProfileOwner & ProjectOwner & RepositoryOwner & Sponsorable & UniformResourceLocatable {
+  """
+  Determine if this repository owner has any items that can be pinned to their profile.
+  """
+  anyPinnableItems(
+    """
+    Filter to only a particular kind of pinnable item.
+    """
+    type: PinnableItemType
+  ): Boolean!
+
+  """
+  A URL pointing to the user's public avatar.
+  """
+  avatarUrl(
+    """
+    The size of the resulting square image.
+    """
+    size: Int
+  ): URI!
+
+  """
+  The user's public profile bio.
+  """
+  bio: String
+
+  """
+  The user's public profile bio as HTML.
+  """
+  bioHTML: HTML!
+
+  """
+  A list of commit comments made by this user.
+  """
+  commitComments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): CommitCommentConnection!
+
+  """
+  The user's public profile company.
+  """
+  company: String
+
+  """
+  The user's public profile company as HTML.
+  """
+  companyHTML: HTML!
+
+  """
+  The collection of contributions this user has made to different repositories.
+  """
+  contributionsCollection(
+    """
+    Only contributions made at this time or later will be counted. If omitted, defaults to a year ago.
+    """
+    from: DateTime
+
+    """
+    The ID of the organization used to filter contributions.
+    """
+    organizationID: ID
+
+    """
+    Only contributions made before and up to and including this time will be
+    counted. If omitted, defaults to the current time.
+    """
+    to: DateTime
+  ): ContributionsCollection!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the primary key from the database.
+  """
+  databaseId: Int
+
+  """
+  The user's publicly visible profile email.
+  """
+  email: String!
+
+  """
+  A list of users the given user is followed by.
+  """
+  followers(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): FollowerConnection!
+
+  """
+  A list of users the given user is following.
+  """
+  following(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): FollowingConnection!
+
+  """
+  Find gist by repo name.
+  """
+  gist(
+    """
+    The gist name to find.
+    """
+    name: String!
+  ): Gist
+
+  """
+  A list of gist comments made by this user.
+  """
+  gistComments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): GistCommentConnection!
+
+  """
+  A list of the Gists the user has created.
+  """
+  gists(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for gists returned from the connection
+    """
+    orderBy: GistOrder
+
+    """
+    Filters Gists according to privacy.
+    """
+    privacy: GistPrivacy
+  ): GistConnection!
+
+  """
+  The hovercard information for this user in a given context
+  """
+  hovercard(
+    """
+    The ID of the subject to get the hovercard in the context of
+    """
+    primarySubjectId: ID
+  ): Hovercard!
+  id: ID!
+
+  """
+  Whether or not this user is a participant in the GitHub Security Bug Bounty.
+  """
+  isBountyHunter: Boolean!
+
+  """
+  Whether or not this user is a participant in the GitHub Campus Experts Program.
+  """
+  isCampusExpert: Boolean!
+
+  """
+  Whether or not this user is a GitHub Developer Program member.
+  """
+  isDeveloperProgramMember: Boolean!
+
+  """
+  Whether or not this user is a GitHub employee.
+  """
+  isEmployee: Boolean!
+
+  """
+  Whether or not the user has marked themselves as for hire.
+  """
+  isHireable: Boolean!
+
+  """
+  Whether or not this user is a site administrator.
+  """
+  isSiteAdmin: Boolean!
+
+  """
+  Whether or not this user is the viewing user.
+  """
+  isViewer: Boolean!
+
+  """
+  A list of issue comments made by this user.
+  """
+  issueComments(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): IssueCommentConnection!
+
+  """
+  A list of issues associated with this user.
+  """
+  issues(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Filtering options for issues returned from the connection.
+    """
+    filterBy: IssueFilters
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for issues returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the issues by.
+    """
+    states: [IssueState!]
+  ): IssueConnection!
+
+  """
+  Showcases a selection of repositories and gists that the profile owner has
+  either curated or that have been selected automatically based on popularity.
+  """
+  itemShowcase: ProfileItemShowcase!
+
+  """
+  The user's public profile location.
+  """
+  location: String
+
+  """
+  The username used to login.
+  """
+  login: String!
+
+  """
+  The user's public profile name.
+  """
+  name: String
+
+  """
+  Find an organization by its login that the user belongs to.
+  """
+  organization(
+    """
+    The login of the organization to find.
+    """
+    login: String!
+  ): Organization
+
+  """
+  Verified email addresses that match verified domains for a specified organization the user is a member of.
+  """
+  organizationVerifiedDomainEmails(
+    """
+    The login of the organization to match verified domains from.
+    """
+    login: String!
+  ): [String!]!
+
+  """
+  A list of organizations the user belongs to.
+  """
+  organizations(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): OrganizationConnection!
+
+  """
+  A list of packages under the owner.
+  """
+  packages(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Find packages by their names.
+    """
+    names: [String]
+
+    """
+    Ordering of the returned packages.
+    """
+    orderBy: PackageOrder = { field: CREATED_AT, direction: DESC }
+
+    """
+    Filter registry package by type.
+    """
+    packageType: PackageType
+
+    """
+    Find packages in a repository by ID.
+    """
+    repositoryId: ID
+  ): PackageConnection!
+
+  """
+  A list of repositories and gists this profile owner can pin to their profile.
+  """
+  pinnableItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter the types of pinnable items that are returned.
+    """
+    types: [PinnableItemType!]
+  ): PinnableItemConnection!
+
+  """
+  A list of repositories and gists this profile owner has pinned to their profile
+  """
+  pinnedItems(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Filter the types of pinned items that are returned.
+    """
+    types: [PinnableItemType!]
+  ): PinnableItemConnection!
+
+  """
+  Returns how many more items this profile owner can pin to their profile.
+  """
+  pinnedItemsRemaining: Int!
+
+  """
+  Find project by number.
+  """
+  project(
+    """
+    The project number to find.
+    """
+    number: Int!
+  ): Project
+
+  """
+  A list of projects under the owner.
+  """
+  projects(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for projects returned from the connection
+    """
+    orderBy: ProjectOrder
+
+    """
+    Query to search projects by, currently only searching by name.
+    """
+    search: String
+
+    """
+    A list of states to filter the projects by.
+    """
+    states: [ProjectState!]
+  ): ProjectConnection!
+
+  """
+  The HTTP path listing user's projects
+  """
+  projectsResourcePath: URI!
+
+  """
+  The HTTP URL listing user's projects
+  """
+  projectsUrl: URI!
+
+  """
+  A list of public keys associated with this user.
+  """
+  publicKeys(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+  ): PublicKeyConnection!
+
+  """
+  A list of pull requests associated with this user.
+  """
+  pullRequests(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    The base ref name to filter the pull requests by.
+    """
+    baseRefName: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    The head ref name to filter the pull requests by.
+    """
+    headRefName: String
+
+    """
+    A list of label names to filter the pull requests by.
+    """
+    labels: [String!]
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for pull requests returned from the connection.
+    """
+    orderBy: IssueOrder
+
+    """
+    A list of states to filter the pull requests by.
+    """
+    states: [PullRequestState!]
+  ): PullRequestConnection!
+
+  """
+  A list of repositories that the user owns.
+  """
+  repositories(
+    """
+    Array of viewer's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    current viewer owns.
+    """
+    affiliations: [RepositoryAffiliation]
+
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    If non-null, filters repositories according to whether they are forks of another repository
+    """
+    isFork: Boolean
+
+    """
+    If non-null, filters repositories according to whether they have been locked
+    """
+    isLocked: Boolean
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories returned from the connection
+    """
+    orderBy: RepositoryOrder
+
+    """
+    Array of owner's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    organization or user being viewed owns.
+    """
+    ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+
+    """
+    If non-null, filters repositories according to privacy
+    """
+    privacy: RepositoryPrivacy
+  ): RepositoryConnection!
+
+  """
+  A list of repositories that the user recently contributed to.
+  """
+  repositoriesContributedTo(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    If non-null, include only the specified types of contributions. The
+    GitHub.com UI uses [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY]
+    """
+    contributionTypes: [RepositoryContributionType]
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    If true, include user repositories
+    """
+    includeUserRepositories: Boolean
+
+    """
+    If non-null, filters repositories according to whether they have been locked
+    """
+    isLocked: Boolean
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories returned from the connection
+    """
+    orderBy: RepositoryOrder
+
+    """
+    If non-null, filters repositories according to privacy
+    """
+    privacy: RepositoryPrivacy
+  ): RepositoryConnection!
+
+  """
+  Find Repository.
+  """
+  repository(
+    """
+    Name of Repository to find.
+    """
+    name: String!
+  ): Repository
+
+  """
+  The HTTP path for this user
+  """
+  resourcePath: URI!
+
+  """
+  Replies this user has saved
+  """
+  savedReplies(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    The field to order saved replies by.
+    """
+    orderBy: SavedReplyOrder = { field: UPDATED_AT, direction: DESC }
+  ): SavedReplyConnection
+
+  """
+  The GitHub Sponsors listing for this user.
+  """
+  sponsorsListing: SponsorsListing
+
+  """
+  This object's sponsorships as the maintainer.
+  """
+  sponsorshipsAsMaintainer(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Whether or not to include private sponsorships in the result set
+    """
+    includePrivate: Boolean = false
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for sponsorships returned from this connection. If left
+    blank, the sponsorships will be ordered based on relevancy to the viewer.
+    """
+    orderBy: SponsorshipOrder
+  ): SponsorshipConnection!
+
+  """
+  This object's sponsorships as the sponsor.
+  """
+  sponsorshipsAsSponsor(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for sponsorships returned from this connection. If left
+    blank, the sponsorships will be ordered based on relevancy to the viewer.
+    """
+    orderBy: SponsorshipOrder
+  ): SponsorshipConnection!
+
+  """
+  Repositories the user has starred.
+  """
+  starredRepositories(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Order for connection
+    """
+    orderBy: StarOrder
+
+    """
+    Filters starred repositories to only return repositories owned by the viewer.
+    """
+    ownedByViewer: Boolean
+  ): StarredRepositoryConnection!
+
+  """
+  The user's description of what they're currently doing.
+  """
+  status: UserStatus
+
+  """
+  Repositories the user has contributed to, ordered by contribution rank, plus repositories the user has created
+  """
+  topRepositories(
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories returned from the connection
+    """
+    orderBy: RepositoryOrder!
+
+    """
+    How far back in time to fetch contributed repositories
+    """
+    since: DateTime
+  ): RepositoryConnection!
+
+  """
+  The user's Twitter username.
+  """
+  twitterUsername: String
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The HTTP URL for this user
+  """
+  url: URI!
+
+  """
+  Can the viewer pin repositories and gists to the profile?
+  """
+  viewerCanChangePinnedItems: Boolean!
+
+  """
+  Can the current viewer create new projects on this owner.
+  """
+  viewerCanCreateProjects: Boolean!
+
+  """
+  Whether or not the viewer is able to follow the user.
+  """
+  viewerCanFollow: Boolean!
+
+  """
+  Whether or not this user is followed by the viewer.
+  """
+  viewerIsFollowing: Boolean!
+
+  """
+  A list of repositories the given user is watching.
+  """
+  watching(
+    """
+    Affiliation options for repositories returned from the connection. If none
+    specified, the results will include repositories for which the current
+    viewer is an owner or collaborator, or member.
+    """
+    affiliations: [RepositoryAffiliation]
+
+    """
+    Returns the elements in the list that come after the specified cursor.
+    """
+    after: String
+
+    """
+    Returns the elements in the list that come before the specified cursor.
+    """
+    before: String
+
+    """
+    Returns the first _n_ elements from the list.
+    """
+    first: Int
+
+    """
+    If non-null, filters repositories according to whether they have been locked
+    """
+    isLocked: Boolean
+
+    """
+    Returns the last _n_ elements from the list.
+    """
+    last: Int
+
+    """
+    Ordering options for repositories returned from the connection
+    """
+    orderBy: RepositoryOrder
+
+    """
+    Array of owner's affiliation options for repositories returned from the
+    connection. For example, OWNER will include only repositories that the
+    organization or user being viewed owns.
+    """
+    ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+
+    """
+    If non-null, filters repositories according to privacy
+    """
+    privacy: RepositoryPrivacy
+  ): RepositoryConnection!
+
+  """
+  A URL pointing to the user's public website/blog.
+  """
+  websiteUrl: URI
+}
+
+"""
+The possible durations that a user can be blocked for.
+"""
+enum UserBlockDuration {
+  """
+  The user was blocked for 1 day
+  """
+  ONE_DAY
+
+  """
+  The user was blocked for 30 days
+  """
+  ONE_MONTH
+
+  """
+  The user was blocked for 7 days
+  """
+  ONE_WEEK
+
+  """
+  The user was blocked permanently
+  """
+  PERMANENT
+
+  """
+  The user was blocked for 3 days
+  """
+  THREE_DAYS
+}
+
+"""
+Represents a 'user_blocked' event on a given user.
+"""
+type UserBlockedEvent implements Node {
+  """
+  Identifies the actor who performed the event.
+  """
+  actor: Actor
+
+  """
+  Number of days that the user was blocked for.
+  """
+  blockDuration: UserBlockDuration!
+
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+  id: ID!
+
+  """
+  The user who was blocked.
+  """
+  subject: User
+}
+
+"""
+The connection type for User.
+"""
+type UserConnection {
+  """
+  A list of edges.
+  """
+  edges: [UserEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [User]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edit on user content
+"""
+type UserContentEdit implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  Identifies the date and time when the object was deleted.
+  """
+  deletedAt: DateTime
+
+  """
+  The actor who deleted this content
+  """
+  deletedBy: Actor
+
+  """
+  A summary of the changes for this edit
+  """
+  diff: String
+
+  """
+  When this content was edited
+  """
+  editedAt: DateTime!
+
+  """
+  The actor who edited this content
+  """
+  editor: Actor
+  id: ID!
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+}
+
+"""
+A list of edits to content.
+"""
+type UserContentEditConnection {
+  """
+  A list of edges.
+  """
+  edges: [UserContentEditEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [UserContentEdit]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type UserContentEditEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: UserContentEdit
+}
+
+"""
+Represents a user.
+"""
+type UserEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: User
+}
+
+"""
+Email attributes from External Identity
+"""
+type UserEmailMetadata {
+  """
+  Boolean to identify primary emails
+  """
+  primary: Boolean
+
+  """
+  Type of email
+  """
+  type: String
+
+  """
+  Email id
+  """
+  value: String!
+}
+
+"""
+The user's description of what they're currently doing.
+"""
+type UserStatus implements Node {
+  """
+  Identifies the date and time when the object was created.
+  """
+  createdAt: DateTime!
+
+  """
+  An emoji summarizing the user's status.
+  """
+  emoji: String
+
+  """
+  The status emoji as HTML.
+  """
+  emojiHTML: HTML
+
+  """
+  If set, the status will not be shown after this date.
+  """
+  expiresAt: DateTime
+
+  """
+  ID of the object.
+  """
+  id: ID!
+
+  """
+  Whether this status indicates the user is not fully available on GitHub.
+  """
+  indicatesLimitedAvailability: Boolean!
+
+  """
+  A brief message describing what the user is doing.
+  """
+  message: String
+
+  """
+  The organization whose members can see this status. If null, this status is publicly visible.
+  """
+  organization: Organization
+
+  """
+  Identifies the date and time when the object was last updated.
+  """
+  updatedAt: DateTime!
+
+  """
+  The user who has this status.
+  """
+  user: User!
+}
+
+"""
+The connection type for UserStatus.
+"""
+type UserStatusConnection {
+  """
+  A list of edges.
+  """
+  edges: [UserStatusEdge]
+
+  """
+  A list of nodes.
+  """
+  nodes: [UserStatus]
+
+  """
+  Information to aid in pagination.
+  """
+  pageInfo: PageInfo!
+
+  """
+  Identifies the total count of items in the connection.
+  """
+  totalCount: Int!
+}
+
+"""
+An edge in a connection.
+"""
+type UserStatusEdge {
+  """
+  A cursor for use in pagination.
+  """
+  cursor: String!
+
+  """
+  The item at the end of the edge.
+  """
+  node: UserStatus
+}
+
+"""
+Ordering options for user status connections.
+"""
+input UserStatusOrder {
+  """
+  The ordering direction.
+  """
+  direction: OrderDirection!
+
+  """
+  The field to order user statuses by.
+  """
+  field: UserStatusOrderField!
+}
+
+"""
+Properties by which user status connections can be ordered.
+"""
+enum UserStatusOrderField {
+  """
+  Order user statuses by when they were updated.
+  """
+  UPDATED_AT
+}
+
+"""
+A hovercard context with a message describing how the viewer is related.
+"""
+type ViewerHovercardContext implements HovercardContext {
+  """
+  A string describing this context
+  """
+  message: String!
+
+  """
+  An octicon to accompany this context
+  """
+  octicon: String!
+
+  """
+  Identifies the user who is related to this context.
+  """
+  viewer: User!
+}
+
+"""
+A valid x509 certificate string
+"""
+scalar X509Certificate
