diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index d8ae3277..7d62ce45 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -24,7 +24,7 @@
-
+
diff --git a/src/GraphQLParser.Benchmarks/Benchmarks/IBenchmark.cs b/src/GraphQLParser.Benchmarks/Benchmarks/IBenchmark.cs
new file mode 100644
index 00000000..67aa7952
--- /dev/null
+++ b/src/GraphQLParser.Benchmarks/Benchmarks/IBenchmark.cs
@@ -0,0 +1,9 @@
+namespace GraphQLParser.Benchmarks
+{
+ internal interface IBenchmark
+ {
+ void GlobalSetup();
+
+ void Run();
+ }
+}
diff --git a/src/GraphQLParser.Benchmarks/Benchmarks/LexerBenchmark.cs b/src/GraphQLParser.Benchmarks/Benchmarks/LexerBenchmark.cs
new file mode 100644
index 00000000..48a5d507
--- /dev/null
+++ b/src/GraphQLParser.Benchmarks/Benchmarks/LexerBenchmark.cs
@@ -0,0 +1,44 @@
+using System.Collections.Generic;
+using BenchmarkDotNet.Attributes;
+
+namespace GraphQLParser.Benchmarks
+{
+ [MemoryDiagnoser]
+ public class LexerBenchmark : IBenchmark
+ {
+ private string _escapes = null!;
+ private string _kitchen = null!;
+ private string _github = null!;
+
+ [GlobalSetup]
+ public void GlobalSetup()
+ {
+ _escapes = "query_with_many_escape_symbols".ReadGraphQLFile();
+ _kitchen = "kitchenSink".ReadGraphQLFile();
+ _github = "github".ReadGraphQLFile();
+ }
+
+ [Benchmark]
+ [ArgumentsSource(nameof(Queries))]
+ public void Lex(string query)
+ {
+ var lexer = new Lexer();
+ var source = new Source(query);
+ int resetPosition = 0;
+ Token token;
+ while ((token = lexer.Lex(source, resetPosition)).Kind != TokenKind.EOF)
+ {
+ resetPosition = token.End;
+ }
+ }
+
+ public IEnumerable Queries()
+ {
+ yield return _escapes;
+ yield return _kitchen;
+ yield return _github;
+ }
+
+ void IBenchmark.Run() => Lex(_github);
+ }
+}
diff --git a/src/GraphQLParser.Benchmarks/ParserBenchmark.cs b/src/GraphQLParser.Benchmarks/Benchmarks/ParserBenchmark.cs
similarity index 53%
rename from src/GraphQLParser.Benchmarks/ParserBenchmark.cs
rename to src/GraphQLParser.Benchmarks/Benchmarks/ParserBenchmark.cs
index 61b5a080..62fbee15 100644
--- a/src/GraphQLParser.Benchmarks/ParserBenchmark.cs
+++ b/src/GraphQLParser.Benchmarks/Benchmarks/ParserBenchmark.cs
@@ -1,11 +1,11 @@
-using BenchmarkDotNet.Attributes;
using System.Collections.Generic;
+using BenchmarkDotNet.Attributes;
namespace GraphQLParser.Benchmarks
{
[MemoryDiagnoser]
- [RPlotExporter, CsvMeasurementsExporter]
- public class ParserBenchmark
+ //[RPlotExporter, CsvMeasurementsExporter]
+ public class ParserBenchmark : IBenchmark
{
private ILexemeCache? _serial;
private ILexemeCache? _concurrent;
@@ -44,10 +44,12 @@ public void Concurrent(Query query)
public IEnumerable Queries()
{
yield return new Query { Name = "Simple", Text = SMALL_QUERY };
- yield return new Query { Name = "Schema", Text = INTROSPECTION_QUERY };
+ yield return new Query { Name = "Schema", Text = _introspectionQuery };
yield return new Query { Name = "Params", Text = PARAMS_QUERY };
}
+ void IBenchmark.Run() => Parse(new Query { Name = "Simple", Text = SMALL_QUERY });
+
public struct Query
{
public string Text;
@@ -57,105 +59,6 @@ public struct Query
private const string SMALL_QUERY = "query test { field1 field2(id: 5) { name address } field3 }";
private const string PARAMS_QUERY = @"query { something(name: ""one"", names: [""abc"", ""def"", ""klmn"", ""abra"", ""blabla"", ""kadabra"", ""100500""] code: 123, values: [1,2,3,4,5,6,7,8,9,0,10,20,30,40,50,60,70,80,90,100], modified: true, percents: [10.1, 20.2, 30.3, 40.4, 50.5, 60.6, 70.7], mask: [true, false, true, false, true, false], struct: { name: ""tom"", age: 42, height: 1.82, friends: [ { name: ""nik"" }, { name: ""ben"" }]}) }";
- private const string INTROSPECTION_QUERY = @"
- query IntrospectionQuery {
- __schema {
- queryType { name }
- mutationType { name }
- subscriptionType { name }
- types {
- ...FullType
- }
- directives {
- name
- description
- locations
- args {
- ...InputValue
- }
- }
- }
- }
-
- fragment FullType on __Type {
- kind
- name
- description
- fields(includeDeprecated: true) {
- name
- description
- args {
- ...InputValue
- }
- type {
- ...TypeRef
- }
- isDeprecated
- deprecationReason
- directives {
- name
- args {
- name
- value
- }
- }
- }
- inputFields {
- ...InputValue
- }
- interfaces {
- ...TypeRef
- }
- enumValues(includeDeprecated: true) {
- name
- description
- isDeprecated
- deprecationReason
- }
- possibleTypes {
- ...TypeRef
- }
- }
-
- fragment InputValue on __InputValue {
- name
- description
- type { ...TypeRef }
- defaultValue
- }
-
- fragment TypeRef on __Type {
- kind
- name
- ofType {
- kind
- name
- ofType {
- kind
- name
- ofType {
- kind
- name
- ofType {
- kind
- name
- ofType {
- kind
- name
- ofType {
- kind
- name
- ofType {
- kind
- name
- }
- }
- }
- }
- }
- }
- }
- }
-";
+ private static readonly string _introspectionQuery = "introspectionQuery".ReadGraphQLFile();
}
-}
\ No newline at end of file
+}
diff --git a/src/GraphQLParser.Benchmarks/ParserBinaryBenchmark.cs b/src/GraphQLParser.Benchmarks/Benchmarks/ParserBinaryBenchmark.cs
similarity index 53%
rename from src/GraphQLParser.Benchmarks/ParserBinaryBenchmark.cs
rename to src/GraphQLParser.Benchmarks/Benchmarks/ParserBinaryBenchmark.cs
index 67035082..11747348 100644
--- a/src/GraphQLParser.Benchmarks/ParserBinaryBenchmark.cs
+++ b/src/GraphQLParser.Benchmarks/Benchmarks/ParserBinaryBenchmark.cs
@@ -1,23 +1,32 @@
-using System.IO;
using BenchmarkDotNet.Attributes;
using GraphQLParser.Exceptions;
namespace GraphQLParser.Benchmarks
{
[MemoryDiagnoser]
- public class ParserBinaryBenchmark
+ public class ParserBinaryBenchmark : IBenchmark
{
+ private string _binaryTest = null!;
+
+ [GlobalSetup]
+ public void GlobalSetup()
+ {
+ _binaryTest = "BinaryTest".ReadGraphQLFile();
+ }
+
[Benchmark]
public void ParseBinaryFile()
{
try
{
var parser = new Parser(new Lexer());
- parser.Parse(new Source(File.ReadAllText("BinaryTest.graphql")));
+ parser.Parse(new Source(_binaryTest));
}
catch (GraphQLSyntaxErrorException)
{
}
}
+
+ void IBenchmark.Run() => ParseBinaryFile();
}
}
diff --git a/src/GraphQLParser.Benchmarks/BinaryTest.graphql b/src/GraphQLParser.Benchmarks/Files/BinaryTest.graphql
similarity index 100%
rename from src/GraphQLParser.Benchmarks/BinaryTest.graphql
rename to src/GraphQLParser.Benchmarks/Files/BinaryTest.graphql
diff --git a/src/GraphQLParser.Benchmarks/Files/github.graphql b/src/GraphQLParser.Benchmarks/Files/github.graphql
new file mode 100644
index 00000000..8af9e877
--- /dev/null
+++ b/src/GraphQLParser.Benchmarks/Files/github.graphql
@@ -0,0 +1,9272 @@
+schema {
+ query: Query
+ mutation: Mutation
+}
+
+input AcceptEnterpriseAdministratorInvitationInput {
+ invitationId: ID!
+ clientMutationId: String
+}
+
+type AcceptEnterpriseAdministratorInvitationPayload {
+ clientMutationId: String
+ invitation: EnterpriseAdministratorInvitation
+ message: String
+}
+
+input AcceptTopicSuggestionInput {
+ repositoryId: ID!
+ name: String!
+ clientMutationId: String
+}
+
+type AcceptTopicSuggestionPayload {
+ clientMutationId: String
+ topic: Topic
+}
+
+enum ActionExecutionCapabilitySetting {
+ DISABLED
+ ALL_ACTIONS
+ LOCAL_ACTIONS_ONLY
+ NO_POLICY
+}
+
+interface Actor {
+ avatarUrl(
+ size: Int
+ ): URI!
+ login: String!
+ resourcePath: URI!
+ url: URI!
+}
+
+type ActorLocation {
+ city: String
+ country: String
+ countryCode: String
+ region: String
+ regionCode: String
+}
+
+input AddAssigneesToAssignableInput {
+ assignableId: ID!
+ assigneeIds: [ID!]!
+ clientMutationId: String
+}
+
+type AddAssigneesToAssignablePayload {
+ assignable: Assignable
+ clientMutationId: String
+}
+
+input AddCommentInput {
+ subjectId: ID!
+ body: String!
+ clientMutationId: String
+}
+
+type AddCommentPayload {
+ clientMutationId: String
+ commentEdge: IssueCommentEdge
+ subject: Node
+ timelineEdge: IssueTimelineItemEdge
+}
+
+input AddLabelsToLabelableInput {
+ labelableId: ID!
+ labelIds: [ID!]!
+ clientMutationId: String
+}
+
+type AddLabelsToLabelablePayload {
+ clientMutationId: String
+ labelable: Labelable
+}
+
+input AddProjectCardInput {
+ projectColumnId: ID!
+ contentId: ID
+ note: String
+ clientMutationId: String
+}
+
+type AddProjectCardPayload {
+ cardEdge: ProjectCardEdge
+ clientMutationId: String
+ projectColumn: ProjectColumn
+}
+
+input AddProjectColumnInput {
+ projectId: ID!
+ name: String!
+ clientMutationId: String
+}
+
+type AddProjectColumnPayload {
+ clientMutationId: String
+ columnEdge: ProjectColumnEdge
+ project: Project
+}
+
+input AddPullRequestReviewCommentInput {
+ pullRequestReviewId: ID!
+ commitOID: GitObjectID
+ body: String!
+ path: String
+ position: Int
+ inReplyTo: ID
+ clientMutationId: String
+}
+
+type AddPullRequestReviewCommentPayload {
+ clientMutationId: String
+ comment: PullRequestReviewComment
+ commentEdge: PullRequestReviewCommentEdge
+}
+
+input AddPullRequestReviewInput {
+ pullRequestId: ID!
+ commitOID: GitObjectID
+ body: String
+ event: PullRequestReviewEvent
+ comments: [DraftPullRequestReviewComment]
+ clientMutationId: String
+}
+
+type AddPullRequestReviewPayload {
+ clientMutationId: String
+ pullRequestReview: PullRequestReview
+ reviewEdge: PullRequestReviewEdge
+}
+
+input AddReactionInput {
+ subjectId: ID!
+ content: ReactionContent!
+ clientMutationId: String
+}
+
+type AddReactionPayload {
+ clientMutationId: String
+ reaction: Reaction
+ subject: Reactable
+}
+
+input AddStarInput {
+ starrableId: ID!
+ clientMutationId: String
+}
+
+type AddStarPayload {
+ clientMutationId: String
+ starrable: Starrable
+}
+
+type AddedToProjectEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+}
+
+type App implements Node {
+ createdAt: DateTime!
+ databaseId: Int
+ description: String
+ id: ID!
+ logoBackgroundColor: String!
+ logoUrl(
+ size: Int
+ ): URI!
+ name: String!
+ slug: String!
+ updatedAt: DateTime!
+ url: URI!
+}
+
+type AppEdge {
+ cursor: String!
+ node: App
+}
+
+input ArchiveRepositoryInput {
+ repositoryId: ID!
+ clientMutationId: String
+}
+
+type ArchiveRepositoryPayload {
+ clientMutationId: String
+ repository: Repository
+}
+
+interface Assignable {
+ assignees(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+}
+
+type AssignedEvent implements Node {
+ actor: Actor
+ assignable: Assignable!
+ assignee: Assignee
+ createdAt: DateTime!
+ id: ID!
+ user: User @deprecated(reason: "Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC.")
+}
+
+union Assignee = Bot | Mannequin | Organization | User
+
+interface AuditEntry {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ operationType: OperationType
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+union AuditEntryActor = Bot | Organization | User
+
+input AuditLogOrder {
+ field: AuditLogOrderField
+ direction: OrderDirection
+}
+
+enum AuditLogOrderField {
+ CREATED_AT
+}
+
+type BaseRefChangedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+}
+
+type BaseRefForcePushedEvent implements Node {
+ actor: Actor
+ afterCommit: Commit
+ beforeCommit: Commit
+ createdAt: DateTime!
+ id: ID!
+ pullRequest: PullRequest!
+ ref: Ref
+}
+
+type Blame {
+ ranges: [BlameRange!]!
+}
+
+type BlameRange {
+ age: Int!
+ commit: Commit!
+ endingLine: Int!
+ startingLine: Int!
+}
+
+type Blob implements Node, GitObject {
+ abbreviatedOid: String!
+ byteSize: Int!
+ commitResourcePath: URI!
+ commitUrl: URI!
+ id: ID!
+ isBinary: Boolean!
+ isTruncated: Boolean!
+ oid: GitObjectID!
+ repository: Repository!
+ text: String
+}
+
+scalar Boolean
+
+type Bot implements Node, Actor, UniformResourceLocatable {
+ avatarUrl(
+ size: Int
+ ): URI!
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+ login: String!
+ resourcePath: URI!
+ updatedAt: DateTime!
+ url: URI!
+}
+
+type BranchProtectionRule implements Node {
+ branchProtectionRuleConflicts(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): BranchProtectionRuleConflictConnection!
+ creator: Actor
+ databaseId: Int
+ dismissesStaleReviews: Boolean!
+ id: ID!
+ isAdminEnforced: Boolean!
+ matchingRefs(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RefConnection!
+ pattern: String!
+ pushAllowances(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PushAllowanceConnection!
+ repository: Repository
+ requiredApprovingReviewCount: Int
+ requiredStatusCheckContexts: [String]
+ requiresApprovingReviews: Boolean!
+ requiresCodeOwnerReviews: Boolean!
+ requiresCommitSignatures: Boolean!
+ requiresStatusChecks: Boolean!
+ requiresStrictStatusChecks: Boolean!
+ restrictsPushes: Boolean!
+ restrictsReviewDismissals: Boolean!
+ reviewDismissalAllowances(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ReviewDismissalAllowanceConnection!
+}
+
+type BranchProtectionRuleConflict {
+ branchProtectionRule: BranchProtectionRule
+ conflictingBranchProtectionRule: BranchProtectionRule
+ ref: Ref
+}
+
+type BranchProtectionRuleConflictConnection {
+ edges: [BranchProtectionRuleConflictEdge]
+ nodes: [BranchProtectionRuleConflict]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type BranchProtectionRuleConflictEdge {
+ cursor: String!
+ node: BranchProtectionRuleConflict
+}
+
+type BranchProtectionRuleConnection {
+ edges: [BranchProtectionRuleEdge]
+ nodes: [BranchProtectionRule]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type BranchProtectionRuleEdge {
+ cursor: String!
+ node: BranchProtectionRule
+}
+
+input CancelEnterpriseAdminInvitationInput {
+ invitationId: ID!
+ clientMutationId: String
+}
+
+type CancelEnterpriseAdminInvitationPayload {
+ clientMutationId: String
+ invitation: EnterpriseAdministratorInvitation
+ message: String
+}
+
+input ChangeUserStatusInput {
+ emoji: String
+ message: String
+ organizationId: ID
+ limitedAvailability: Boolean = false
+ expiresAt: DateTime
+ clientMutationId: String
+}
+
+type ChangeUserStatusPayload {
+ clientMutationId: String
+ status: UserStatus
+}
+
+input ClearLabelsFromLabelableInput {
+ labelableId: ID!
+ clientMutationId: String
+}
+
+type ClearLabelsFromLabelablePayload {
+ clientMutationId: String
+ labelable: Labelable
+}
+
+input CloneProjectInput {
+ targetOwnerId: ID!
+ sourceId: ID!
+ includeWorkflows: Boolean!
+ name: String!
+ body: String
+ public: Boolean
+ clientMutationId: String
+}
+
+type CloneProjectPayload {
+ clientMutationId: String
+ jobStatusId: String
+ project: Project
+}
+
+input CloneTemplateRepositoryInput {
+ repositoryId: ID!
+ name: String!
+ ownerId: ID!
+ description: String
+ visibility: RepositoryVisibility!
+ clientMutationId: String
+}
+
+type CloneTemplateRepositoryPayload {
+ clientMutationId: String
+ repository: Repository
+}
+
+interface Closable {
+ closed: Boolean!
+ closedAt: DateTime
+}
+
+input CloseIssueInput {
+ issueId: ID!
+ clientMutationId: String
+}
+
+type CloseIssuePayload {
+ clientMutationId: String
+ issue: Issue
+}
+
+input ClosePullRequestInput {
+ pullRequestId: ID!
+ clientMutationId: String
+}
+
+type ClosePullRequestPayload {
+ clientMutationId: String
+ pullRequest: PullRequest
+}
+
+type ClosedEvent implements Node, UniformResourceLocatable {
+ actor: Actor
+ closable: Closable!
+ closer: Closer
+ createdAt: DateTime!
+ id: ID!
+ resourcePath: URI!
+ url: URI!
+}
+
+union Closer = Commit | PullRequest
+
+type CodeOfConduct implements Node {
+ body: String
+ id: ID!
+ key: String!
+ name: String!
+ resourcePath: URI
+ url: URI
+}
+
+enum CollaboratorAffiliation {
+ OUTSIDE
+ DIRECT
+ ALL
+}
+
+union CollectionItemContent = Organization | Repository | User
+
+interface Comment {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ editor: Actor
+ id: ID!
+ includesCreatedEdit: Boolean!
+ lastEditedAt: DateTime
+ publishedAt: DateTime
+ updatedAt: DateTime!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerDidAuthor: Boolean!
+}
+
+enum CommentAuthorAssociation {
+ MEMBER
+ OWNER
+ COLLABORATOR
+ CONTRIBUTOR
+ FIRST_TIME_CONTRIBUTOR
+ FIRST_TIMER
+ NONE
+}
+
+enum CommentCannotUpdateReason {
+ ARCHIVED
+ INSUFFICIENT_ACCESS
+ LOCKED
+ LOGIN_REQUIRED
+ MAINTENANCE
+ VERIFIED_EMAIL_REQUIRED
+ DENIED
+}
+
+type CommentDeletedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+}
+
+type Commit implements Node, GitObject, Subscribable, UniformResourceLocatable {
+ abbreviatedOid: String!
+ additions: Int!
+ associatedPullRequests(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: PullRequestOrder = {field: CREATED_AT, direction: ASC}
+ ): PullRequestConnection
+ author: GitActor
+ authoredByCommitter: Boolean!
+ authoredDate: DateTime!
+ blame(
+ path: String!
+ ): Blame!
+ changedFiles: Int!
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): CommitCommentConnection!
+ commitResourcePath: URI!
+ commitUrl: URI!
+ committedDate: DateTime!
+ committedViaWeb: Boolean!
+ committer: GitActor
+ deletions: Int!
+ deployments(
+ environments: [String!]
+ orderBy: DeploymentOrder = {field: CREATED_AT, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): DeploymentConnection
+ history(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ path: String
+ author: CommitAuthor
+ since: GitTimestamp
+ until: GitTimestamp
+ ): CommitHistoryConnection!
+ id: ID!
+ message: String!
+ messageBody: String!
+ messageBodyHTML: HTML!
+ messageHeadline: String!
+ messageHeadlineHTML: HTML!
+ oid: GitObjectID!
+ parents(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): CommitConnection!
+ pushedDate: DateTime
+ repository: Repository!
+ resourcePath: URI!
+ signature: GitSignature
+ status: Status
+ tarballUrl: URI!
+ tree: Tree!
+ treeResourcePath: URI!
+ treeUrl: URI!
+ url: URI!
+ viewerCanSubscribe: Boolean!
+ viewerSubscription: SubscriptionState
+ zipballUrl: URI!
+}
+
+input CommitAuthor {
+ id: ID
+ emails: [String!]
+}
+
+type CommitComment implements Node, Comment, Deletable, Updatable, UpdatableComment, Reactable, RepositoryNode {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ commit: Commit
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ editor: Actor
+ id: ID!
+ includesCreatedEdit: Boolean!
+ isMinimized: Boolean!
+ lastEditedAt: DateTime
+ minimizedReason: String
+ path: String
+ position: Int
+ publishedAt: DateTime
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ repository: Repository!
+ resourcePath: URI!
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanDelete: Boolean!
+ viewerCanMinimize: Boolean!
+ viewerCanReact: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+}
+
+type CommitCommentConnection {
+ edges: [CommitCommentEdge]
+ nodes: [CommitComment]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type CommitCommentEdge {
+ cursor: String!
+ node: CommitComment
+}
+
+type CommitCommentThread implements Node, RepositoryNode {
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): CommitCommentConnection!
+ commit: Commit
+ id: ID!
+ path: String
+ position: Int
+ repository: Repository!
+}
+
+type CommitConnection {
+ edges: [CommitEdge]
+ nodes: [Commit]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+input CommitContributionOrder {
+ field: CommitContributionOrderField!
+ direction: OrderDirection!
+}
+
+enum CommitContributionOrderField {
+ OCCURRED_AT
+ COMMIT_COUNT
+}
+
+type CommitContributionsByRepository {
+ contributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: CommitContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedCommitContributionConnection!
+ repository: Repository!
+ resourcePath: URI!
+ url: URI!
+}
+
+type CommitEdge {
+ cursor: String!
+ node: Commit
+}
+
+type CommitHistoryConnection {
+ edges: [CommitEdge]
+ nodes: [Commit]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ContentAttachment {
+ body: String!
+ contentReference: ContentReference!
+ databaseId: Int!
+ id: ID!
+ title: String!
+}
+
+type ContentReference {
+ databaseId: Int!
+ id: ID!
+ reference: String!
+}
+
+interface Contribution {
+ isRestricted: Boolean!
+ occurredAt: DateTime!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type ContributionCalendar {
+ colors: [String!]!
+ isHalloween: Boolean!
+ months: [ContributionCalendarMonth!]!
+ totalContributions: Int!
+ weeks: [ContributionCalendarWeek!]!
+}
+
+type ContributionCalendarDay {
+ color: String!
+ contributionCount: Int!
+ date: Date!
+ weekday: Int!
+}
+
+type ContributionCalendarMonth {
+ firstDay: Date!
+ name: String!
+ totalWeeks: Int!
+ year: Int!
+}
+
+type ContributionCalendarWeek {
+ contributionDays: [ContributionCalendarDay!]!
+ firstDay: Date!
+}
+
+input ContributionOrder {
+ field: ContributionOrderField
+ direction: OrderDirection!
+}
+
+enum ContributionOrderField {
+ OCCURRED_AT
+}
+
+type ContributionsCollection {
+ commitContributionsByRepository(
+ maxRepositories: Int = 25
+ ): [CommitContributionsByRepository!]!
+ contributionCalendar: ContributionCalendar!
+ contributionYears: [Int!]!
+ doesEndInCurrentMonth: Boolean!
+ earliestRestrictedContributionDate: Date
+ endedAt: DateTime!
+ firstIssueContribution: CreatedIssueOrRestrictedContribution
+ firstPullRequestContribution: CreatedPullRequestOrRestrictedContribution
+ firstRepositoryContribution: CreatedRepositoryOrRestrictedContribution
+ hasActivityInThePast: Boolean!
+ hasAnyContributions: Boolean!
+ hasAnyRestrictedContributions: Boolean!
+ isSingleDay: Boolean!
+ issueContributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ orderBy: ContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedIssueContributionConnection!
+ issueContributionsByRepository(
+ maxRepositories: Int = 25
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ ): [IssueContributionsByRepository!]!
+ joinedGitHubContribution: JoinedGitHubContribution
+ latestRestrictedContributionDate: Date
+ mostRecentCollectionWithActivity: ContributionsCollection
+ mostRecentCollectionWithoutActivity: ContributionsCollection
+ popularIssueContribution: CreatedIssueContribution
+ popularPullRequestContribution: CreatedPullRequestContribution
+ pullRequestContributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ orderBy: ContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedPullRequestContributionConnection!
+ pullRequestContributionsByRepository(
+ maxRepositories: Int = 25
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ ): [PullRequestContributionsByRepository!]!
+ pullRequestReviewContributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: ContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedPullRequestReviewContributionConnection!
+ pullRequestReviewContributionsByRepository(
+ maxRepositories: Int = 25
+ ): [PullRequestReviewContributionsByRepository!]!
+ repositoryContributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ excludeFirst: Boolean = false
+ orderBy: ContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedRepositoryContributionConnection!
+ restrictedContributionsCount: Int!
+ startedAt: DateTime!
+ totalCommitContributions: Int!
+ totalIssueContributions(
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ ): Int!
+ totalPullRequestContributions(
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ ): Int!
+ totalPullRequestReviewContributions: Int!
+ totalRepositoriesWithContributedCommits: Int!
+ totalRepositoriesWithContributedIssues(
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ ): Int!
+ totalRepositoriesWithContributedPullRequestReviews: Int!
+ totalRepositoriesWithContributedPullRequests(
+ excludeFirst: Boolean = false
+ excludePopular: Boolean = false
+ ): Int!
+ totalRepositoryContributions(
+ excludeFirst: Boolean = false
+ ): Int!
+ user: User!
+}
+
+input ConvertProjectCardNoteToIssueInput {
+ projectCardId: ID!
+ repositoryId: ID!
+ title: String
+ body: String
+ clientMutationId: String
+}
+
+type ConvertProjectCardNoteToIssuePayload {
+ clientMutationId: String
+ projectCard: ProjectCard
+}
+
+type ConvertedNoteToIssueEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+}
+
+input CreateBranchProtectionRuleInput {
+ repositoryId: ID!
+ pattern: String!
+ requiresApprovingReviews: Boolean
+ requiredApprovingReviewCount: Int
+ requiresCommitSignatures: Boolean
+ isAdminEnforced: Boolean
+ requiresStatusChecks: Boolean
+ requiresStrictStatusChecks: Boolean
+ requiresCodeOwnerReviews: Boolean
+ dismissesStaleReviews: Boolean
+ restrictsReviewDismissals: Boolean
+ reviewDismissalActorIds: [ID!]
+ restrictsPushes: Boolean
+ pushActorIds: [ID!]
+ requiredStatusCheckContexts: [String!]
+ clientMutationId: String
+}
+
+type CreateBranchProtectionRulePayload {
+ branchProtectionRule: BranchProtectionRule
+ clientMutationId: String
+}
+
+input CreateContentAttachmentInput {
+ contentReferenceId: ID!
+ title: String!
+ body: String!
+ clientMutationId: String
+}
+
+input CreateEnterpriseOrganizationInput {
+ enterpriseId: ID!
+ login: String!
+ profileName: String!
+ billingEmail: String!
+ adminLogins: [String!]!
+ clientMutationId: String
+}
+
+type CreateEnterpriseOrganizationPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ organization: Organization
+}
+
+input CreateIssueInput {
+ repositoryId: ID!
+ title: String!
+ body: String
+ assigneeIds: [ID!]
+ milestoneId: ID
+ labelIds: [ID!]
+ projectIds: [ID!]
+ clientMutationId: String
+}
+
+type CreateIssuePayload {
+ clientMutationId: String
+ issue: Issue
+}
+
+input CreateProjectInput {
+ ownerId: ID!
+ name: String!
+ body: String
+ template: ProjectTemplate
+ repositoryIds: [ID!]
+ clientMutationId: String
+}
+
+type CreateProjectPayload {
+ clientMutationId: String
+ project: Project
+}
+
+input CreatePullRequestInput {
+ repositoryId: ID!
+ baseRefName: String!
+ headRefName: String!
+ title: String!
+ body: String
+ maintainerCanModify: Boolean = true
+ clientMutationId: String
+}
+
+type CreatePullRequestPayload {
+ clientMutationId: String
+ pullRequest: PullRequest
+}
+
+input CreateRefInput {
+ repositoryId: ID!
+ name: String!
+ oid: GitObjectID!
+ clientMutationId: String
+}
+
+type CreateRefPayload {
+ clientMutationId: String
+ ref: Ref
+}
+
+input CreateRepositoryInput {
+ name: String!
+ ownerId: ID
+ description: String
+ visibility: RepositoryVisibility!
+ template: Boolean = false
+ homepageUrl: URI
+ hasWikiEnabled: Boolean = false
+ hasIssuesEnabled: Boolean = true
+ teamId: ID
+ clientMutationId: String
+}
+
+type CreateRepositoryPayload {
+ clientMutationId: String
+ repository: Repository
+}
+
+input CreateTeamDiscussionCommentInput {
+ discussionId: ID!
+ body: String!
+ clientMutationId: String
+}
+
+type CreateTeamDiscussionCommentPayload {
+ clientMutationId: String
+ teamDiscussionComment: TeamDiscussionComment
+}
+
+input CreateTeamDiscussionInput {
+ teamId: ID!
+ title: String!
+ body: String!
+ private: Boolean
+ clientMutationId: String
+}
+
+type CreateTeamDiscussionPayload {
+ clientMutationId: String
+ teamDiscussion: TeamDiscussion
+}
+
+type CreatedCommitContribution implements Contribution {
+ commitCount: Int!
+ isRestricted: Boolean!
+ occurredAt: DateTime!
+ repository: Repository!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type CreatedCommitContributionConnection {
+ edges: [CreatedCommitContributionEdge]
+ nodes: [CreatedCommitContribution]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type CreatedCommitContributionEdge {
+ cursor: String!
+ node: CreatedCommitContribution
+}
+
+type CreatedIssueContribution implements Contribution {
+ isRestricted: Boolean!
+ issue: Issue!
+ occurredAt: DateTime!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type CreatedIssueContributionConnection {
+ edges: [CreatedIssueContributionEdge]
+ nodes: [CreatedIssueContribution]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type CreatedIssueContributionEdge {
+ cursor: String!
+ node: CreatedIssueContribution
+}
+
+union CreatedIssueOrRestrictedContribution = CreatedIssueContribution | RestrictedContribution
+
+type CreatedPullRequestContribution implements Contribution {
+ isRestricted: Boolean!
+ occurredAt: DateTime!
+ pullRequest: PullRequest!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type CreatedPullRequestContributionConnection {
+ edges: [CreatedPullRequestContributionEdge]
+ nodes: [CreatedPullRequestContribution]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type CreatedPullRequestContributionEdge {
+ cursor: String!
+ node: CreatedPullRequestContribution
+}
+
+union CreatedPullRequestOrRestrictedContribution = CreatedPullRequestContribution | RestrictedContribution
+
+type CreatedPullRequestReviewContribution implements Contribution {
+ isRestricted: Boolean!
+ occurredAt: DateTime!
+ pullRequest: PullRequest!
+ pullRequestReview: PullRequestReview!
+ repository: Repository!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type CreatedPullRequestReviewContributionConnection {
+ edges: [CreatedPullRequestReviewContributionEdge]
+ nodes: [CreatedPullRequestReviewContribution]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type CreatedPullRequestReviewContributionEdge {
+ cursor: String!
+ node: CreatedPullRequestReviewContribution
+}
+
+type CreatedRepositoryContribution implements Contribution {
+ isRestricted: Boolean!
+ occurredAt: DateTime!
+ repository: Repository!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type CreatedRepositoryContributionConnection {
+ edges: [CreatedRepositoryContributionEdge]
+ nodes: [CreatedRepositoryContribution]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type CreatedRepositoryContributionEdge {
+ cursor: String!
+ node: CreatedRepositoryContribution
+}
+
+union CreatedRepositoryOrRestrictedContribution = CreatedRepositoryContribution | RestrictedContribution
+
+type CrossReferencedEvent implements Node, UniformResourceLocatable {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ isCrossRepository: Boolean!
+ referencedAt: DateTime!
+ resourcePath: URI!
+ source: ReferencedSubject!
+ target: ReferencedSubject!
+ url: URI!
+ willCloseTarget: Boolean!
+}
+
+scalar Date
+
+scalar DateTime
+
+input DeclineTopicSuggestionInput {
+ repositoryId: ID!
+ name: String!
+ reason: TopicSuggestionDeclineReason!
+ clientMutationId: String
+}
+
+type DeclineTopicSuggestionPayload {
+ clientMutationId: String
+ topic: Topic
+}
+
+enum DefaultRepositoryPermissionField {
+ NONE
+ READ
+ WRITE
+ ADMIN
+}
+
+interface Deletable {
+ viewerCanDelete: Boolean!
+}
+
+input DeleteBranchProtectionRuleInput {
+ branchProtectionRuleId: ID!
+ clientMutationId: String
+}
+
+type DeleteBranchProtectionRulePayload {
+ clientMutationId: String
+}
+
+input DeleteIssueCommentInput {
+ id: ID!
+ clientMutationId: String
+}
+
+type DeleteIssueCommentPayload {
+ clientMutationId: String
+}
+
+input DeleteIssueInput {
+ issueId: ID!
+ clientMutationId: String
+}
+
+type DeleteIssuePayload {
+ clientMutationId: String
+ repository: Repository
+}
+
+input DeletePackageVersionInput {
+ packageVersionId: ID!
+ clientMutationId: String
+}
+
+input DeleteProjectCardInput {
+ cardId: ID!
+ clientMutationId: String
+}
+
+type DeleteProjectCardPayload {
+ clientMutationId: String
+ column: ProjectColumn
+ deletedCardId: ID
+}
+
+input DeleteProjectColumnInput {
+ columnId: ID!
+ clientMutationId: String
+}
+
+type DeleteProjectColumnPayload {
+ clientMutationId: String
+ deletedColumnId: ID
+ project: Project
+}
+
+input DeleteProjectInput {
+ projectId: ID!
+ clientMutationId: String
+}
+
+type DeleteProjectPayload {
+ clientMutationId: String
+ owner: ProjectOwner
+}
+
+input DeletePullRequestReviewCommentInput {
+ id: ID!
+ clientMutationId: String
+}
+
+type DeletePullRequestReviewCommentPayload {
+ clientMutationId: String
+ pullRequestReview: PullRequestReview
+}
+
+input DeletePullRequestReviewInput {
+ pullRequestReviewId: ID!
+ clientMutationId: String
+}
+
+type DeletePullRequestReviewPayload {
+ clientMutationId: String
+ pullRequestReview: PullRequestReview
+}
+
+input DeleteRefInput {
+ refId: ID!
+ clientMutationId: String
+}
+
+type DeleteRefPayload {
+ clientMutationId: String
+}
+
+input DeleteTeamDiscussionCommentInput {
+ id: ID!
+ clientMutationId: String
+}
+
+type DeleteTeamDiscussionCommentPayload {
+ clientMutationId: String
+}
+
+input DeleteTeamDiscussionInput {
+ id: ID!
+ clientMutationId: String
+}
+
+type DeleteTeamDiscussionPayload {
+ clientMutationId: String
+}
+
+type DemilestonedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ milestoneTitle: String!
+ subject: MilestoneItem!
+}
+
+type DeployKey implements Node {
+ createdAt: DateTime!
+ id: ID!
+ key: String!
+ readOnly: Boolean!
+ title: String!
+ verified: Boolean!
+}
+
+type DeployKeyConnection {
+ edges: [DeployKeyEdge]
+ nodes: [DeployKey]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type DeployKeyEdge {
+ cursor: String!
+ node: DeployKey
+}
+
+type DeployedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ deployment: Deployment!
+ id: ID!
+ pullRequest: PullRequest!
+ ref: Ref
+}
+
+type Deployment implements Node {
+ commit: Commit
+ commitOid: String!
+ createdAt: DateTime!
+ creator: Actor
+ databaseId: Int
+ description: String
+ environment: String
+ id: ID!
+ latestStatus: DeploymentStatus
+ payload: String
+ ref: Ref
+ repository: Repository!
+ state: DeploymentState
+ statuses(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): DeploymentStatusConnection
+ task: String
+ updatedAt: DateTime!
+}
+
+type DeploymentConnection {
+ edges: [DeploymentEdge]
+ nodes: [Deployment]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type DeploymentEdge {
+ cursor: String!
+ node: Deployment
+}
+
+type DeploymentEnvironmentChangedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ deploymentStatus: DeploymentStatus!
+ id: ID!
+ pullRequest: PullRequest!
+}
+
+input DeploymentOrder {
+ field: DeploymentOrderField!
+ direction: OrderDirection!
+}
+
+enum DeploymentOrderField {
+ CREATED_AT
+}
+
+enum DeploymentState {
+ ABANDONED
+ ACTIVE
+ DESTROYED
+ ERROR
+ FAILURE
+ INACTIVE
+ PENDING
+ QUEUED
+ IN_PROGRESS
+}
+
+type DeploymentStatus implements Node {
+ createdAt: DateTime!
+ creator: Actor
+ deployment: Deployment!
+ description: String
+ environmentUrl: URI
+ id: ID!
+ logUrl: URI
+ state: DeploymentStatusState!
+ updatedAt: DateTime!
+}
+
+type DeploymentStatusConnection {
+ edges: [DeploymentStatusEdge]
+ nodes: [DeploymentStatus]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type DeploymentStatusEdge {
+ cursor: String!
+ node: DeploymentStatus
+}
+
+enum DeploymentStatusState {
+ PENDING
+ SUCCESS
+ FAILURE
+ INACTIVE
+ ERROR
+ QUEUED
+ IN_PROGRESS
+}
+
+input DismissPullRequestReviewInput {
+ pullRequestReviewId: ID!
+ message: String!
+ clientMutationId: String
+}
+
+type DismissPullRequestReviewPayload {
+ clientMutationId: String
+ pullRequestReview: PullRequestReview
+}
+
+input DraftPullRequestReviewComment {
+ path: String!
+ position: Int!
+ body: String!
+}
+
+type Enterprise implements Node {
+ avatarUrl(
+ size: Int
+ ): URI!
+ billingInfo: EnterpriseBillingInfo
+ createdAt: DateTime!
+ databaseId: Int
+ description: String
+ descriptionHTML: HTML!
+ id: ID!
+ location: String
+ members(
+ organizationLogins: [String!]
+ query: String
+ orderBy: EnterpriseMemberOrder = {field: LOGIN, direction: ASC}
+ role: EnterpriseUserAccountMembershipRole
+ deployment: EnterpriseUserDeployment
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseMemberConnection!
+ name: String!
+ organizations(
+ query: String
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): OrganizationConnection!
+ ownerInfo: EnterpriseOwnerInfo
+ resourcePath: URI!
+ url: URI!
+ userAccounts(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseUserAccountConnection!
+ viewerIsAdmin: Boolean!
+ websiteUrl: URI
+}
+
+type EnterpriseAdministratorConnection {
+ edges: [EnterpriseAdministratorEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseAdministratorEdge {
+ cursor: String!
+ node: User
+ role: EnterpriseAdministratorRole!
+}
+
+type EnterpriseAdministratorInvitation implements Node {
+ createdAt: DateTime!
+ email: String
+ enterprise: Enterprise!
+ id: ID!
+ invitee: User
+ inviter: User
+ role: EnterpriseAdministratorRole!
+}
+
+type EnterpriseAdministratorInvitationConnection {
+ edges: [EnterpriseAdministratorInvitationEdge]
+ nodes: [EnterpriseAdministratorInvitation]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseAdministratorInvitationEdge {
+ cursor: String!
+ node: EnterpriseAdministratorInvitation
+}
+
+input EnterpriseAdministratorInvitationOrder {
+ field: EnterpriseAdministratorInvitationOrderField!
+ direction: OrderDirection!
+}
+
+enum EnterpriseAdministratorInvitationOrderField {
+ CREATED_AT
+}
+
+enum EnterpriseAdministratorRole {
+ OWNER
+ BILLING_MANAGER
+}
+
+interface EnterpriseAuditEntryData {
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+}
+
+type EnterpriseBillingInfo {
+ allLicensableUsersCount: Int!
+ assetPacks: Int!
+ 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.")
+ bandwidthQuota: Float!
+ bandwidthUsage: Float!
+ bandwidthUsagePercentage: Int!
+ 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.")
+ storageQuota: Float!
+ storageUsage: Float!
+ storageUsagePercentage: Int!
+ totalAvailableLicenses: Int!
+ totalLicenses: Int!
+}
+
+enum EnterpriseDefaultRepositoryPermissionSettingValue {
+ NO_POLICY
+ ADMIN
+ WRITE
+ READ
+ NONE
+}
+
+type EnterpriseEdge {
+ cursor: String!
+ node: Enterprise
+}
+
+enum EnterpriseEnabledDisabledSettingValue {
+ ENABLED
+ DISABLED
+ NO_POLICY
+}
+
+enum EnterpriseEnabledSettingValue {
+ ENABLED
+ NO_POLICY
+}
+
+type EnterpriseIdentityProvider implements Node {
+ digestMethod: SamlDigestAlgorithm
+ enterprise: Enterprise
+ externalIdentities(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ExternalIdentityConnection!
+ id: ID!
+ idpCertificate: X509Certificate
+ issuer: String
+ recoveryCodes: [String!]
+ signatureMethod: SamlSignatureAlgorithm
+ ssoUrl: URI
+}
+
+union EnterpriseMember = EnterpriseUserAccount | User
+
+type EnterpriseMemberConnection {
+ edges: [EnterpriseMemberEdge]
+ nodes: [EnterpriseMember]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseMemberEdge {
+ cursor: String!
+ isUnlicensed: Boolean!
+ node: EnterpriseMember
+}
+
+input EnterpriseMemberOrder {
+ field: EnterpriseMemberOrderField!
+ direction: OrderDirection!
+}
+
+enum EnterpriseMemberOrderField {
+ LOGIN
+ CREATED_AT
+}
+
+enum EnterpriseMembersCanCreateRepositoriesSettingValue {
+ NO_POLICY
+ ALL
+ PUBLIC
+ PRIVATE
+ DISABLED
+}
+
+enum EnterpriseMembersCanMakePurchasesSettingValue {
+ ENABLED
+ DISABLED
+}
+
+enum EnterpriseMembershipType {
+ ALL
+ ADMIN
+ BILLING_MANAGER
+ ORG_MEMBERSHIP
+}
+
+input EnterpriseOrder {
+ field: EnterpriseOrderField!
+ direction: OrderDirection!
+}
+
+enum EnterpriseOrderField {
+ NAME
+}
+
+type EnterpriseOrganizationMembershipConnection {
+ edges: [EnterpriseOrganizationMembershipEdge]
+ nodes: [Organization]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseOrganizationMembershipEdge {
+ cursor: String!
+ node: Organization
+ role: EnterpriseUserAccountMembershipRole!
+}
+
+type EnterpriseOutsideCollaboratorConnection {
+ edges: [EnterpriseOutsideCollaboratorEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseOutsideCollaboratorEdge {
+ cursor: String!
+ isUnlicensed: Boolean!
+ node: User
+ repositories(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: RepositoryOrder = {field: NAME, direction: ASC}
+ ): EnterpriseRepositoryInfoConnection!
+}
+
+type EnterpriseOwnerInfo {
+ actionExecutionCapabilitySettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ admins(
+ query: String
+ role: EnterpriseAdministratorRole
+ orderBy: EnterpriseMemberOrder = {field: LOGIN, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseAdministratorConnection!
+ affiliatedUsersWithTwoFactorDisabled(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ affiliatedUsersWithTwoFactorDisabledExist: Boolean!
+ allowPrivateRepositoryForkingSetting: EnterpriseEnabledDisabledSettingValue!
+ allowPrivateRepositoryForkingSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ defaultRepositoryPermissionSetting: EnterpriseDefaultRepositoryPermissionSettingValue!
+ defaultRepositoryPermissionSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: DefaultRepositoryPermissionField!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ enterpriseServerInstallations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ connectedOnly: Boolean = false
+ orderBy: EnterpriseServerInstallationOrder = {field: HOST_NAME, direction: ASC}
+ ): EnterpriseServerInstallationConnection!
+ isUpdatingDefaultRepositoryPermission: Boolean!
+ isUpdatingTwoFactorRequirement: Boolean!
+ membersCanChangeRepositoryVisibilitySetting: EnterpriseEnabledDisabledSettingValue!
+ membersCanChangeRepositoryVisibilitySettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ membersCanCreateInternalRepositoriesSetting: Boolean
+ membersCanCreatePrivateRepositoriesSetting: Boolean
+ membersCanCreatePublicRepositoriesSetting: Boolean
+ membersCanCreateRepositoriesSetting: EnterpriseMembersCanCreateRepositoriesSettingValue
+ membersCanCreateRepositoriesSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: OrganizationMembersCanCreateRepositoriesSettingValue!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ membersCanDeleteIssuesSetting: EnterpriseEnabledDisabledSettingValue!
+ membersCanDeleteIssuesSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ membersCanDeleteRepositoriesSetting: EnterpriseEnabledDisabledSettingValue!
+ membersCanDeleteRepositoriesSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ membersCanInviteCollaboratorsSetting: EnterpriseEnabledDisabledSettingValue!
+ membersCanInviteCollaboratorsSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ membersCanMakePurchasesSetting: EnterpriseMembersCanMakePurchasesSettingValue!
+ membersCanUpdateProtectedBranchesSetting: EnterpriseEnabledDisabledSettingValue!
+ membersCanUpdateProtectedBranchesSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ membersCanViewDependencyInsightsSetting: EnterpriseEnabledDisabledSettingValue!
+ membersCanViewDependencyInsightsSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ organizationProjectsSetting: EnterpriseEnabledDisabledSettingValue!
+ organizationProjectsSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ outsideCollaborators(
+ login: String
+ query: String
+ orderBy: EnterpriseMemberOrder = {field: LOGIN, direction: ASC}
+ visibility: RepositoryVisibility
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseOutsideCollaboratorConnection!
+ pendingAdminInvitations(
+ query: String
+ orderBy: EnterpriseAdministratorInvitationOrder = {field: CREATED_AT, direction: DESC}
+ role: EnterpriseAdministratorRole
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseAdministratorInvitationConnection!
+ pendingCollaborators(
+ query: String
+ orderBy: RepositoryInvitationOrder = {field: INVITEE_LOGIN, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterprisePendingCollaboratorConnection!
+ pendingMemberInvitations(
+ query: String
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterprisePendingMemberInvitationConnection!
+ repositoryProjectsSetting: EnterpriseEnabledDisabledSettingValue!
+ repositoryProjectsSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ samlIdentityProvider: EnterpriseIdentityProvider
+ samlIdentityProviderSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: IdentityProviderConfigurationState!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ teamDiscussionsSetting: EnterpriseEnabledDisabledSettingValue!
+ teamDiscussionsSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+ twoFactorRequiredSetting: EnterpriseEnabledSettingValue!
+ twoFactorRequiredSettingOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ value: Boolean!
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ ): OrganizationConnection!
+}
+
+type EnterprisePendingCollaboratorConnection {
+ edges: [EnterprisePendingCollaboratorEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterprisePendingCollaboratorEdge {
+ cursor: String!
+ isUnlicensed: Boolean!
+ node: User
+ repositories(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: RepositoryOrder = {field: NAME, direction: ASC}
+ ): EnterpriseRepositoryInfoConnection!
+}
+
+type EnterprisePendingMemberInvitationConnection {
+ edges: [EnterprisePendingMemberInvitationEdge]
+ nodes: [OrganizationInvitation]
+ pageInfo: PageInfo!
+ totalCount: Int!
+ totalUniqueUserCount: Int!
+}
+
+type EnterprisePendingMemberInvitationEdge {
+ cursor: String!
+ isUnlicensed: Boolean!
+ node: OrganizationInvitation
+}
+
+type EnterpriseRepositoryInfo implements Node {
+ id: ID!
+ isPrivate: Boolean!
+ name: String!
+ nameWithOwner: String!
+}
+
+type EnterpriseRepositoryInfoConnection {
+ edges: [EnterpriseRepositoryInfoEdge]
+ nodes: [EnterpriseRepositoryInfo]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseRepositoryInfoEdge {
+ cursor: String!
+ node: EnterpriseRepositoryInfo
+}
+
+type EnterpriseServerInstallation implements Node {
+ createdAt: DateTime!
+ customerName: String!
+ hostName: String!
+ id: ID!
+ isConnected: Boolean!
+ updatedAt: DateTime!
+ userAccounts(
+ orderBy: EnterpriseServerUserAccountOrder = {field: LOGIN, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseServerUserAccountConnection!
+ userAccountsUploads(
+ orderBy: EnterpriseServerUserAccountsUploadOrder = {field: CREATED_AT, direction: DESC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseServerUserAccountsUploadConnection!
+}
+
+type EnterpriseServerInstallationConnection {
+ edges: [EnterpriseServerInstallationEdge]
+ nodes: [EnterpriseServerInstallation]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseServerInstallationEdge {
+ cursor: String!
+ node: EnterpriseServerInstallation
+}
+
+input EnterpriseServerInstallationOrder {
+ field: EnterpriseServerInstallationOrderField!
+ direction: OrderDirection!
+}
+
+enum EnterpriseServerInstallationOrderField {
+ HOST_NAME
+ CUSTOMER_NAME
+ CREATED_AT
+}
+
+type EnterpriseServerUserAccount implements Node {
+ createdAt: DateTime!
+ emails(
+ orderBy: EnterpriseServerUserAccountEmailOrder = {field: EMAIL, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseServerUserAccountEmailConnection!
+ enterpriseServerInstallation: EnterpriseServerInstallation!
+ id: ID!
+ isSiteAdmin: Boolean!
+ login: String!
+ profileName: String
+ remoteCreatedAt: DateTime!
+ remoteUserId: Int!
+ updatedAt: DateTime!
+}
+
+type EnterpriseServerUserAccountConnection {
+ edges: [EnterpriseServerUserAccountEdge]
+ nodes: [EnterpriseServerUserAccount]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseServerUserAccountEdge {
+ cursor: String!
+ node: EnterpriseServerUserAccount
+}
+
+type EnterpriseServerUserAccountEmail implements Node {
+ createdAt: DateTime!
+ email: String!
+ id: ID!
+ isPrimary: Boolean!
+ updatedAt: DateTime!
+ userAccount: EnterpriseServerUserAccount!
+}
+
+type EnterpriseServerUserAccountEmailConnection {
+ edges: [EnterpriseServerUserAccountEmailEdge]
+ nodes: [EnterpriseServerUserAccountEmail]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseServerUserAccountEmailEdge {
+ cursor: String!
+ node: EnterpriseServerUserAccountEmail
+}
+
+input EnterpriseServerUserAccountEmailOrder {
+ field: EnterpriseServerUserAccountEmailOrderField!
+ direction: OrderDirection!
+}
+
+enum EnterpriseServerUserAccountEmailOrderField {
+ EMAIL
+}
+
+input EnterpriseServerUserAccountOrder {
+ field: EnterpriseServerUserAccountOrderField!
+ direction: OrderDirection!
+}
+
+enum EnterpriseServerUserAccountOrderField {
+ LOGIN
+ REMOTE_CREATED_AT
+}
+
+type EnterpriseServerUserAccountsUpload implements Node {
+ createdAt: DateTime!
+ enterprise: Enterprise!
+ enterpriseServerInstallation: EnterpriseServerInstallation!
+ id: ID!
+ name: String!
+ syncState: EnterpriseServerUserAccountsUploadSyncState!
+ updatedAt: DateTime!
+}
+
+type EnterpriseServerUserAccountsUploadConnection {
+ edges: [EnterpriseServerUserAccountsUploadEdge]
+ nodes: [EnterpriseServerUserAccountsUpload]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseServerUserAccountsUploadEdge {
+ cursor: String!
+ node: EnterpriseServerUserAccountsUpload
+}
+
+input EnterpriseServerUserAccountsUploadOrder {
+ field: EnterpriseServerUserAccountsUploadOrderField!
+ direction: OrderDirection!
+}
+
+enum EnterpriseServerUserAccountsUploadOrderField {
+ CREATED_AT
+}
+
+enum EnterpriseServerUserAccountsUploadSyncState {
+ PENDING
+ SUCCESS
+ FAILURE
+}
+
+type EnterpriseUserAccount implements Node, Actor {
+ avatarUrl(
+ size: Int
+ ): URI!
+ createdAt: DateTime!
+ enterprise: Enterprise!
+ id: ID!
+ login: String!
+ name: String
+ organizations(
+ query: String
+ orderBy: OrganizationOrder = {field: LOGIN, direction: ASC}
+ role: EnterpriseUserAccountMembershipRole
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): EnterpriseOrganizationMembershipConnection!
+ resourcePath: URI!
+ updatedAt: DateTime!
+ url: URI!
+ user: User
+}
+
+type EnterpriseUserAccountConnection {
+ edges: [EnterpriseUserAccountEdge]
+ nodes: [EnterpriseUserAccount]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type EnterpriseUserAccountEdge {
+ cursor: String!
+ node: EnterpriseUserAccount
+}
+
+enum EnterpriseUserAccountMembershipRole {
+ MEMBER
+ OWNER
+}
+
+enum EnterpriseUserDeployment {
+ CLOUD
+ SERVER
+}
+
+type ExternalIdentity implements Node {
+ guid: String!
+ id: ID!
+ organizationInvitation: OrganizationInvitation
+ samlIdentity: ExternalIdentitySamlAttributes
+ scimIdentity: ExternalIdentityScimAttributes
+ user: User
+}
+
+type ExternalIdentityConnection {
+ edges: [ExternalIdentityEdge]
+ nodes: [ExternalIdentity]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ExternalIdentityEdge {
+ cursor: String!
+ node: ExternalIdentity
+}
+
+type ExternalIdentitySamlAttributes {
+ nameId: String
+}
+
+type ExternalIdentityScimAttributes {
+ username: String
+}
+
+scalar Float
+
+input FollowUserInput {
+ userId: ID!
+ clientMutationId: String
+}
+
+type FollowUserPayload {
+ clientMutationId: String
+ user: User
+}
+
+type FollowerConnection {
+ edges: [UserEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type FollowingConnection {
+ edges: [UserEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type FundingLink {
+ platform: FundingPlatform!
+ url: URI!
+}
+
+enum FundingPlatform {
+ GITHUB
+ PATREON
+ OPEN_COLLECTIVE
+ KO_FI
+ TIDELIFT
+ COMMUNITY_BRIDGE
+ LIBERAPAY
+ ISSUEHUNT
+ OTECHIE
+ CUSTOM
+}
+
+type GenericHovercardContext implements HovercardContext {
+ message: String!
+ octicon: String!
+}
+
+type Gist implements Node, Starrable, UniformResourceLocatable {
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): GistCommentConnection!
+ createdAt: DateTime!
+ description: String
+ files(
+ limit: Int = 10
+ oid: GitObjectID
+ ): [GistFile]
+ forks(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: GistOrder
+ ): GistConnection!
+ id: ID!
+ isFork: Boolean!
+ isPublic: Boolean!
+ name: String!
+ owner: RepositoryOwner
+ pushedAt: DateTime
+ resourcePath: URI!
+ stargazers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: StarOrder
+ ): StargazerConnection!
+ updatedAt: DateTime!
+ url: URI!
+ viewerHasStarred: Boolean!
+}
+
+type GistComment implements Node, Comment, Deletable, Updatable, UpdatableComment {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ editor: Actor
+ gist: Gist!
+ id: ID!
+ includesCreatedEdit: Boolean!
+ isMinimized: Boolean!
+ lastEditedAt: DateTime
+ minimizedReason: String
+ publishedAt: DateTime
+ updatedAt: DateTime!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanDelete: Boolean!
+ viewerCanMinimize: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+}
+
+type GistCommentConnection {
+ edges: [GistCommentEdge]
+ nodes: [GistComment]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type GistCommentEdge {
+ cursor: String!
+ node: GistComment
+}
+
+type GistConnection {
+ edges: [GistEdge]
+ nodes: [Gist]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type GistEdge {
+ cursor: String!
+ node: Gist
+}
+
+type GistFile {
+ encodedName: String
+ encoding: String
+ extension: String
+ isImage: Boolean!
+ isTruncated: Boolean!
+ language: Language
+ name: String
+ size: Int
+ text(
+ truncate: Int
+ ): String
+}
+
+input GistOrder {
+ field: GistOrderField!
+ direction: OrderDirection!
+}
+
+enum GistOrderField {
+ CREATED_AT
+ UPDATED_AT
+ PUSHED_AT
+}
+
+enum GistPrivacy {
+ PUBLIC
+ SECRET
+ ALL
+}
+
+type GitActor {
+ avatarUrl(
+ size: Int
+ ): URI!
+ date: GitTimestamp
+ email: String
+ name: String
+ user: User
+}
+
+type GitHubMetadata {
+ gitHubServicesSha: GitObjectID!
+ gitIpAddresses: [String!]
+ hookIpAddresses: [String!]
+ importerIpAddresses: [String!]
+ isPasswordAuthenticationVerifiable: Boolean!
+ pagesIpAddresses: [String!]
+}
+
+interface GitObject {
+ abbreviatedOid: String!
+ commitResourcePath: URI!
+ commitUrl: URI!
+ id: ID!
+ oid: GitObjectID!
+ repository: Repository!
+}
+
+scalar GitObjectID
+
+scalar GitSSHRemote
+
+interface GitSignature {
+ email: String!
+ isValid: Boolean!
+ payload: String!
+ signature: String!
+ signer: User
+ state: GitSignatureState!
+ wasSignedByGitHub: Boolean!
+}
+
+enum GitSignatureState {
+ VALID
+ INVALID
+ MALFORMED_SIG
+ UNKNOWN_KEY
+ BAD_EMAIL
+ UNVERIFIED_EMAIL
+ NO_USER
+ UNKNOWN_SIG_TYPE
+ UNSIGNED
+ GPGVERIFY_UNAVAILABLE
+ GPGVERIFY_ERROR
+ NOT_SIGNING_KEY
+ EXPIRED_KEY
+ OCSP_PENDING
+ OCSP_ERROR
+ BAD_CERT
+ OCSP_REVOKED
+}
+
+scalar GitTimestamp
+
+type GpgSignature implements GitSignature {
+ email: String!
+ isValid: Boolean!
+ keyId: String
+ payload: String!
+ signature: String!
+ signer: User
+ state: GitSignatureState!
+ wasSignedByGitHub: Boolean!
+}
+
+scalar HTML
+
+type HeadRefDeletedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ headRef: Ref
+ headRefName: String!
+ id: ID!
+ pullRequest: PullRequest!
+}
+
+type HeadRefForcePushedEvent implements Node {
+ actor: Actor
+ afterCommit: Commit
+ beforeCommit: Commit
+ createdAt: DateTime!
+ id: ID!
+ pullRequest: PullRequest!
+ ref: Ref
+}
+
+type HeadRefRestoredEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ pullRequest: PullRequest!
+}
+
+type Hovercard {
+ contexts: [HovercardContext!]!
+}
+
+interface HovercardContext {
+ message: String!
+ octicon: String!
+}
+
+scalar ID
+
+enum IdentityProviderConfigurationState {
+ ENFORCED
+ CONFIGURED
+ UNCONFIGURED
+}
+
+input ImportProjectInput {
+ ownerName: String!
+ name: String!
+ body: String
+ public: Boolean = false
+ columnImports: [ProjectColumnImport!]!
+ clientMutationId: String
+}
+
+scalar Int
+
+input InviteEnterpriseAdminInput {
+ enterpriseId: ID!
+ invitee: String
+ email: String
+ role: EnterpriseAdministratorRole
+ clientMutationId: String
+}
+
+type InviteEnterpriseAdminPayload {
+ clientMutationId: String
+ invitation: EnterpriseAdministratorInvitation
+}
+
+type Issue implements Node, Assignable, Closable, Comment, Updatable, UpdatableComment, Labelable, Lockable, Reactable, RepositoryNode, Subscribable, UniformResourceLocatable {
+ activeLockReason: LockReason
+ assignees(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ closed: Boolean!
+ closedAt: DateTime
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueCommentConnection!
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ editor: Actor
+ hovercard(
+ includeNotificationContexts: Boolean = true
+ ): Hovercard!
+ id: ID!
+ includesCreatedEdit: Boolean!
+ labels(
+ orderBy: LabelOrder = {field: CREATED_AT, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): LabelConnection
+ lastEditedAt: DateTime
+ locked: Boolean!
+ milestone: Milestone
+ number: Int!
+ participants(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ projectCards(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+ ): ProjectCardConnection!
+ publishedAt: DateTime
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ repository: Repository!
+ resourcePath: URI!
+ state: IssueState!
+ timeline(
+ since: DateTime
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueTimelineConnection! @deprecated(reason: "`timeline` will be removed Use Issue.timelineItems instead. Removal on 2019-10-01 UTC.")
+ timelineItems(
+ since: DateTime
+ skip: Int
+ itemTypes: [IssueTimelineItemsItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueTimelineItemsConnection!
+ title: String!
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanReact: Boolean!
+ viewerCanSubscribe: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+ viewerSubscription: SubscriptionState
+}
+
+type IssueComment implements Node, Comment, Deletable, Updatable, UpdatableComment, Reactable, RepositoryNode {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ editor: Actor
+ id: ID!
+ includesCreatedEdit: Boolean!
+ isMinimized: Boolean!
+ issue: Issue!
+ lastEditedAt: DateTime
+ minimizedReason: String
+ publishedAt: DateTime
+ pullRequest: PullRequest
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ repository: Repository!
+ resourcePath: URI!
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanDelete: Boolean!
+ viewerCanMinimize: Boolean!
+ viewerCanReact: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+}
+
+type IssueCommentConnection {
+ edges: [IssueCommentEdge]
+ nodes: [IssueComment]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type IssueCommentEdge {
+ cursor: String!
+ node: IssueComment
+}
+
+type IssueConnection {
+ edges: [IssueEdge]
+ nodes: [Issue]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type IssueContributionsByRepository {
+ contributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: ContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedIssueContributionConnection!
+ repository: Repository!
+}
+
+type IssueEdge {
+ cursor: String!
+ node: Issue
+}
+
+input IssueFilters {
+ assignee: String
+ createdBy: String
+ labels: [String!]
+ mentioned: String
+ milestone: String
+ since: DateTime
+ states: [IssueState!]
+ viewerSubscribed: Boolean = false
+}
+
+union IssueOrPullRequest = Issue | PullRequest
+
+type IssueOrPullRequestEdge {
+ cursor: String!
+ node: IssueOrPullRequest
+}
+
+input IssueOrder {
+ field: IssueOrderField!
+ direction: OrderDirection!
+}
+
+enum IssueOrderField {
+ CREATED_AT
+ UPDATED_AT
+ COMMENTS
+}
+
+enum IssuePubSubTopic {
+ UPDATED
+ MARKASREAD
+ TIMELINE
+ STATE
+}
+
+enum IssueState {
+ OPEN
+ CLOSED
+}
+
+type IssueTimelineConnection {
+ edges: [IssueTimelineItemEdge]
+ nodes: [IssueTimelineItem]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+union IssueTimelineItem = AssignedEvent | ClosedEvent | Commit | CrossReferencedEvent | DemilestonedEvent | IssueComment | LabeledEvent | LockedEvent | MilestonedEvent | ReferencedEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnsubscribedEvent | UserBlockedEvent
+
+type IssueTimelineItemEdge {
+ cursor: String!
+ node: IssueTimelineItem
+}
+
+union IssueTimelineItems = AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | CrossReferencedEvent | DemilestonedEvent | IssueComment | LabeledEvent | LockedEvent | MarkedAsDuplicateEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnpinnedEvent | UnsubscribedEvent | UserBlockedEvent
+
+type IssueTimelineItemsConnection {
+ edges: [IssueTimelineItemsEdge]
+ filteredCount: Int!
+ nodes: [IssueTimelineItems]
+ pageCount: Int!
+ pageInfo: PageInfo!
+ totalCount: Int!
+ updatedAt: DateTime!
+}
+
+type IssueTimelineItemsEdge {
+ cursor: String!
+ node: IssueTimelineItems
+}
+
+enum IssueTimelineItemsItemType {
+ ISSUE_COMMENT
+ CROSS_REFERENCED_EVENT
+ ADDED_TO_PROJECT_EVENT
+ ASSIGNED_EVENT
+ CLOSED_EVENT
+ COMMENT_DELETED_EVENT
+ CONVERTED_NOTE_TO_ISSUE_EVENT
+ DEMILESTONED_EVENT
+ LABELED_EVENT
+ LOCKED_EVENT
+ MARKED_AS_DUPLICATE_EVENT
+ MENTIONED_EVENT
+ MILESTONED_EVENT
+ MOVED_COLUMNS_IN_PROJECT_EVENT
+ PINNED_EVENT
+ REFERENCED_EVENT
+ REMOVED_FROM_PROJECT_EVENT
+ RENAMED_TITLE_EVENT
+ REOPENED_EVENT
+ SUBSCRIBED_EVENT
+ TRANSFERRED_EVENT
+ UNASSIGNED_EVENT
+ UNLABELED_EVENT
+ UNLOCKED_EVENT
+ USER_BLOCKED_EVENT
+ UNPINNED_EVENT
+ UNSUBSCRIBED_EVENT
+}
+
+type JoinedGitHubContribution implements Contribution {
+ isRestricted: Boolean!
+ occurredAt: DateTime!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type Label implements Node {
+ color: String!
+ createdAt: DateTime
+ description: String
+ id: ID!
+ isDefault: Boolean!
+ issues(
+ orderBy: IssueOrder
+ labels: [String!]
+ states: [IssueState!]
+ filterBy: IssueFilters
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueConnection!
+ name: String!
+ pullRequests(
+ states: [PullRequestState!]
+ labels: [String!]
+ headRefName: String
+ baseRefName: String
+ orderBy: IssueOrder
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestConnection!
+ repository: Repository!
+ resourcePath: URI!
+ updatedAt: DateTime
+ url: URI!
+}
+
+type LabelConnection {
+ edges: [LabelEdge]
+ nodes: [Label]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type LabelEdge {
+ cursor: String!
+ node: Label
+}
+
+input LabelOrder {
+ field: LabelOrderField!
+ direction: OrderDirection!
+}
+
+enum LabelOrderField {
+ NAME
+ CREATED_AT
+}
+
+interface Labelable {
+ labels(
+ orderBy: LabelOrder = {field: CREATED_AT, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): LabelConnection
+}
+
+type LabeledEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ label: Label!
+ labelable: Labelable!
+}
+
+type Language implements Node {
+ color: String
+ id: ID!
+ name: String!
+}
+
+type LanguageConnection {
+ edges: [LanguageEdge]
+ nodes: [Language]
+ pageInfo: PageInfo!
+ totalCount: Int!
+ totalSize: Int!
+}
+
+type LanguageEdge {
+ cursor: String!
+ node: Language!
+ size: Int!
+}
+
+input LanguageOrder {
+ field: LanguageOrderField!
+ direction: OrderDirection!
+}
+
+enum LanguageOrderField {
+ SIZE
+}
+
+type License implements Node {
+ body: String!
+ conditions: [LicenseRule]!
+ description: String
+ featured: Boolean!
+ hidden: Boolean!
+ id: ID!
+ implementation: String
+ key: String!
+ limitations: [LicenseRule]!
+ name: String!
+ nickname: String
+ permissions: [LicenseRule]!
+ pseudoLicense: Boolean!
+ spdxId: String
+ url: URI
+}
+
+type LicenseRule {
+ description: String!
+ key: String!
+ label: String!
+}
+
+input LinkRepositoryToProjectInput {
+ projectId: ID!
+ repositoryId: ID!
+ clientMutationId: String
+}
+
+type LinkRepositoryToProjectPayload {
+ clientMutationId: String
+ project: Project
+ repository: Repository
+}
+
+input LockLockableInput {
+ lockableId: ID!
+ lockReason: LockReason
+ clientMutationId: String
+}
+
+type LockLockablePayload {
+ actor: Actor
+ clientMutationId: String
+ lockedRecord: Lockable
+}
+
+enum LockReason {
+ OFF_TOPIC
+ TOO_HEATED
+ RESOLVED
+ SPAM
+}
+
+interface Lockable {
+ activeLockReason: LockReason
+ locked: Boolean!
+}
+
+type LockedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ lockReason: LockReason
+ lockable: Lockable!
+}
+
+type Mannequin implements Node, Actor, UniformResourceLocatable {
+ avatarUrl(
+ size: Int
+ ): URI!
+ createdAt: DateTime!
+ databaseId: Int
+ email: String
+ id: ID!
+ login: String!
+ resourcePath: URI!
+ updatedAt: DateTime!
+ url: URI!
+}
+
+type MarkedAsDuplicateEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+}
+
+type MarketplaceCategory implements Node {
+ description: String
+ howItWorks: String
+ id: ID!
+ name: String!
+ primaryListingCount: Int!
+ resourcePath: URI!
+ secondaryListingCount: Int!
+ slug: String!
+ url: URI!
+}
+
+type MarketplaceListing implements Node {
+ app: App
+ companyUrl: URI
+ configurationResourcePath: URI!
+ configurationUrl: URI!
+ documentationUrl: URI
+ extendedDescription: String
+ extendedDescriptionHTML: HTML!
+ fullDescription: String!
+ fullDescriptionHTML: HTML!
+ hasApprovalBeenRequested: Boolean! @deprecated(reason: "`hasApprovalBeenRequested` will be removed. Use `isVerificationPendingFromDraft` instead. Removal on 2019-10-01 UTC.")
+ hasPublishedFreeTrialPlans: Boolean!
+ hasTermsOfService: Boolean!
+ howItWorks: String
+ howItWorksHTML: HTML!
+ id: ID!
+ installationUrl: URI
+ installedForViewer: Boolean!
+ isApproved: Boolean! @deprecated(reason: "`isApproved` will be removed. Use `isPublic` instead. Removal on 2019-10-01 UTC.")
+ isArchived: Boolean!
+ isDelisted: Boolean! @deprecated(reason: "`isDelisted` will be removed. Use `isArchived` instead. Removal on 2019-10-01 UTC.")
+ isDraft: Boolean!
+ isPaid: Boolean!
+ isPublic: Boolean!
+ isRejected: Boolean!
+ isUnverified: Boolean!
+ isUnverifiedPending: Boolean!
+ isVerificationPendingFromDraft: Boolean!
+ isVerificationPendingFromUnverified: Boolean!
+ isVerified: Boolean!
+ logoBackgroundColor: String!
+ logoUrl(
+ size: Int = 400
+ ): URI
+ name: String!
+ normalizedShortDescription: String!
+ pricingUrl: URI
+ primaryCategory: MarketplaceCategory!
+ privacyPolicyUrl: URI!
+ resourcePath: URI!
+ screenshotUrls: [String]!
+ secondaryCategory: MarketplaceCategory
+ shortDescription: String!
+ slug: String!
+ statusUrl: URI
+ supportEmail: String
+ supportUrl: URI!
+ termsOfServiceUrl: URI
+ url: URI!
+ viewerCanAddPlans: Boolean!
+ viewerCanApprove: Boolean!
+ viewerCanDelist: Boolean!
+ viewerCanEdit: Boolean!
+ viewerCanEditCategories: Boolean!
+ viewerCanEditPlans: Boolean!
+ viewerCanRedraft: Boolean!
+ viewerCanReject: Boolean!
+ viewerCanRequestApproval: Boolean!
+ viewerHasPurchased: Boolean!
+ viewerHasPurchasedForAllOrganizations: Boolean!
+ viewerIsListingAdmin: Boolean!
+}
+
+type MarketplaceListingConnection {
+ edges: [MarketplaceListingEdge]
+ nodes: [MarketplaceListing]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type MarketplaceListingEdge {
+ cursor: String!
+ node: MarketplaceListing
+}
+
+interface MemberStatusable {
+ memberStatuses(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: UserStatusOrder = {field: UPDATED_AT, direction: DESC}
+ ): UserStatusConnection!
+}
+
+type MembersCanDeleteReposClearAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type MembersCanDeleteReposDisableAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type MembersCanDeleteReposEnableAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type MentionedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+}
+
+input MergeBranchInput {
+ repositoryId: ID!
+ base: String!
+ head: String!
+ commitMessage: String
+ clientMutationId: String
+}
+
+type MergeBranchPayload {
+ clientMutationId: String
+ mergeCommit: Commit
+}
+
+input MergePullRequestInput {
+ pullRequestId: ID!
+ commitHeadline: String
+ commitBody: String
+ expectedHeadOid: GitObjectID
+ mergeMethod: PullRequestMergeMethod = MERGE
+ clientMutationId: String
+}
+
+type MergePullRequestPayload {
+ actor: Actor
+ clientMutationId: String
+ pullRequest: PullRequest
+}
+
+enum MergeableState {
+ MERGEABLE
+ CONFLICTING
+ UNKNOWN
+}
+
+type MergedEvent implements Node, UniformResourceLocatable {
+ actor: Actor
+ commit: Commit
+ createdAt: DateTime!
+ id: ID!
+ mergeRef: Ref
+ mergeRefName: String!
+ pullRequest: PullRequest!
+ resourcePath: URI!
+ url: URI!
+}
+
+type Milestone implements Node, Closable, UniformResourceLocatable {
+ closed: Boolean!
+ closedAt: DateTime
+ createdAt: DateTime!
+ creator: Actor
+ description: String
+ dueOn: DateTime
+ id: ID!
+ issuePrioritiesDebug: String!
+ issues(
+ orderBy: IssueOrder
+ labels: [String!]
+ states: [IssueState!]
+ filterBy: IssueFilters
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueConnection!
+ number: Int!
+ pullRequests(
+ states: [PullRequestState!]
+ labels: [String!]
+ headRefName: String
+ baseRefName: String
+ orderBy: IssueOrder
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestConnection!
+ repository: Repository!
+ resourcePath: URI!
+ state: MilestoneState!
+ title: String!
+ updatedAt: DateTime!
+ url: URI!
+}
+
+type MilestoneConnection {
+ edges: [MilestoneEdge]
+ nodes: [Milestone]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type MilestoneEdge {
+ cursor: String!
+ node: Milestone
+}
+
+union MilestoneItem = Issue | PullRequest
+
+input MilestoneOrder {
+ field: MilestoneOrderField!
+ direction: OrderDirection!
+}
+
+enum MilestoneOrderField {
+ DUE_DATE
+ CREATED_AT
+ UPDATED_AT
+ NUMBER
+}
+
+enum MilestoneState {
+ OPEN
+ CLOSED
+}
+
+type MilestonedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ milestoneTitle: String!
+ subject: MilestoneItem!
+}
+
+input MinimizeCommentInput {
+ subjectId: ID!
+ classifier: ReportedContentClassifiers!
+ clientMutationId: String
+}
+
+input MoveProjectCardInput {
+ cardId: ID!
+ columnId: ID!
+ afterCardId: ID
+ clientMutationId: String
+}
+
+type MoveProjectCardPayload {
+ cardEdge: ProjectCardEdge
+ clientMutationId: String
+}
+
+input MoveProjectColumnInput {
+ columnId: ID!
+ afterColumnId: ID
+ clientMutationId: String
+}
+
+type MoveProjectColumnPayload {
+ clientMutationId: String
+ columnEdge: ProjectColumnEdge
+}
+
+type MovedColumnsInProjectEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+}
+
+type Mutation {
+ acceptEnterpriseAdministratorInvitation(input: AcceptEnterpriseAdministratorInvitationInput!): AcceptEnterpriseAdministratorInvitationPayload
+ acceptTopicSuggestion(input: AcceptTopicSuggestionInput!): AcceptTopicSuggestionPayload
+ addAssigneesToAssignable(input: AddAssigneesToAssignableInput!): AddAssigneesToAssignablePayload
+ addComment(input: AddCommentInput!): AddCommentPayload
+ addLabelsToLabelable(input: AddLabelsToLabelableInput!): AddLabelsToLabelablePayload
+ addProjectCard(input: AddProjectCardInput!): AddProjectCardPayload
+ addProjectColumn(input: AddProjectColumnInput!): AddProjectColumnPayload
+ addPullRequestReview(input: AddPullRequestReviewInput!): AddPullRequestReviewPayload
+ addPullRequestReviewComment(input: AddPullRequestReviewCommentInput!): AddPullRequestReviewCommentPayload
+ addReaction(input: AddReactionInput!): AddReactionPayload
+ addStar(input: AddStarInput!): AddStarPayload
+ archiveRepository(input: ArchiveRepositoryInput!): ArchiveRepositoryPayload
+ cancelEnterpriseAdminInvitation(input: CancelEnterpriseAdminInvitationInput!): CancelEnterpriseAdminInvitationPayload
+ changeUserStatus(input: ChangeUserStatusInput!): ChangeUserStatusPayload
+ clearLabelsFromLabelable(input: ClearLabelsFromLabelableInput!): ClearLabelsFromLabelablePayload
+ cloneProject(input: CloneProjectInput!): CloneProjectPayload
+ cloneTemplateRepository(input: CloneTemplateRepositoryInput!): CloneTemplateRepositoryPayload
+ closeIssue(input: CloseIssueInput!): CloseIssuePayload
+ closePullRequest(input: ClosePullRequestInput!): ClosePullRequestPayload
+ convertProjectCardNoteToIssue(input: ConvertProjectCardNoteToIssueInput!): ConvertProjectCardNoteToIssuePayload
+ createBranchProtectionRule(input: CreateBranchProtectionRuleInput!): CreateBranchProtectionRulePayload
+ createEnterpriseOrganization(input: CreateEnterpriseOrganizationInput!): CreateEnterpriseOrganizationPayload
+ createIssue(input: CreateIssueInput!): CreateIssuePayload
+ createProject(input: CreateProjectInput!): CreateProjectPayload
+ createPullRequest(input: CreatePullRequestInput!): CreatePullRequestPayload
+ createRef(input: CreateRefInput!): CreateRefPayload
+ createRepository(input: CreateRepositoryInput!): CreateRepositoryPayload
+ createTeamDiscussion(input: CreateTeamDiscussionInput!): CreateTeamDiscussionPayload
+ createTeamDiscussionComment(input: CreateTeamDiscussionCommentInput!): CreateTeamDiscussionCommentPayload
+ declineTopicSuggestion(input: DeclineTopicSuggestionInput!): DeclineTopicSuggestionPayload
+ deleteBranchProtectionRule(input: DeleteBranchProtectionRuleInput!): DeleteBranchProtectionRulePayload
+ deleteIssue(input: DeleteIssueInput!): DeleteIssuePayload
+ deleteIssueComment(input: DeleteIssueCommentInput!): DeleteIssueCommentPayload
+ deleteProject(input: DeleteProjectInput!): DeleteProjectPayload
+ deleteProjectCard(input: DeleteProjectCardInput!): DeleteProjectCardPayload
+ deleteProjectColumn(input: DeleteProjectColumnInput!): DeleteProjectColumnPayload
+ deletePullRequestReview(input: DeletePullRequestReviewInput!): DeletePullRequestReviewPayload
+ deletePullRequestReviewComment(input: DeletePullRequestReviewCommentInput!): DeletePullRequestReviewCommentPayload
+ deleteRef(input: DeleteRefInput!): DeleteRefPayload
+ deleteTeamDiscussion(input: DeleteTeamDiscussionInput!): DeleteTeamDiscussionPayload
+ deleteTeamDiscussionComment(input: DeleteTeamDiscussionCommentInput!): DeleteTeamDiscussionCommentPayload
+ dismissPullRequestReview(input: DismissPullRequestReviewInput!): DismissPullRequestReviewPayload
+ followUser(input: FollowUserInput!): FollowUserPayload
+ inviteEnterpriseAdmin(input: InviteEnterpriseAdminInput!): InviteEnterpriseAdminPayload
+ linkRepositoryToProject(input: LinkRepositoryToProjectInput!): LinkRepositoryToProjectPayload
+ lockLockable(input: LockLockableInput!): LockLockablePayload
+ mergeBranch(input: MergeBranchInput!): MergeBranchPayload
+ mergePullRequest(input: MergePullRequestInput!): MergePullRequestPayload
+ moveProjectCard(input: MoveProjectCardInput!): MoveProjectCardPayload
+ moveProjectColumn(input: MoveProjectColumnInput!): MoveProjectColumnPayload
+ regenerateEnterpriseIdentityProviderRecoveryCodes(input: RegenerateEnterpriseIdentityProviderRecoveryCodesInput!): RegenerateEnterpriseIdentityProviderRecoveryCodesPayload
+ removeAssigneesFromAssignable(input: RemoveAssigneesFromAssignableInput!): RemoveAssigneesFromAssignablePayload
+ removeEnterpriseAdmin(input: RemoveEnterpriseAdminInput!): RemoveEnterpriseAdminPayload
+ removeEnterpriseOrganization(input: RemoveEnterpriseOrganizationInput!): RemoveEnterpriseOrganizationPayload
+ removeLabelsFromLabelable(input: RemoveLabelsFromLabelableInput!): RemoveLabelsFromLabelablePayload
+ removeOutsideCollaborator(input: RemoveOutsideCollaboratorInput!): RemoveOutsideCollaboratorPayload
+ removeReaction(input: RemoveReactionInput!): RemoveReactionPayload
+ removeStar(input: RemoveStarInput!): RemoveStarPayload
+ reopenIssue(input: ReopenIssueInput!): ReopenIssuePayload
+ reopenPullRequest(input: ReopenPullRequestInput!): ReopenPullRequestPayload
+ requestReviews(input: RequestReviewsInput!): RequestReviewsPayload
+ resolveReviewThread(input: ResolveReviewThreadInput!): ResolveReviewThreadPayload
+ submitPullRequestReview(input: SubmitPullRequestReviewInput!): SubmitPullRequestReviewPayload
+ transferIssue(input: TransferIssueInput!): TransferIssuePayload
+ unarchiveRepository(input: UnarchiveRepositoryInput!): UnarchiveRepositoryPayload
+ unfollowUser(input: UnfollowUserInput!): UnfollowUserPayload
+ unlinkRepositoryFromProject(input: UnlinkRepositoryFromProjectInput!): UnlinkRepositoryFromProjectPayload
+ unlockLockable(input: UnlockLockableInput!): UnlockLockablePayload
+ unmarkIssueAsDuplicate(input: UnmarkIssueAsDuplicateInput!): UnmarkIssueAsDuplicatePayload
+ unresolveReviewThread(input: UnresolveReviewThreadInput!): UnresolveReviewThreadPayload
+ updateBranchProtectionRule(input: UpdateBranchProtectionRuleInput!): UpdateBranchProtectionRulePayload
+ updateEnterpriseActionExecutionCapabilitySetting(input: UpdateEnterpriseActionExecutionCapabilitySettingInput!): UpdateEnterpriseActionExecutionCapabilitySettingPayload
+ updateEnterpriseAdministratorRole(input: UpdateEnterpriseAdministratorRoleInput!): UpdateEnterpriseAdministratorRolePayload
+ updateEnterpriseAllowPrivateRepositoryForkingSetting(input: UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput!): UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload
+ updateEnterpriseDefaultRepositoryPermissionSetting(input: UpdateEnterpriseDefaultRepositoryPermissionSettingInput!): UpdateEnterpriseDefaultRepositoryPermissionSettingPayload
+ updateEnterpriseMembersCanChangeRepositoryVisibilitySetting(input: UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput!): UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload
+ updateEnterpriseMembersCanCreateRepositoriesSetting(input: UpdateEnterpriseMembersCanCreateRepositoriesSettingInput!): UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload
+ updateEnterpriseMembersCanDeleteIssuesSetting(input: UpdateEnterpriseMembersCanDeleteIssuesSettingInput!): UpdateEnterpriseMembersCanDeleteIssuesSettingPayload
+ updateEnterpriseMembersCanDeleteRepositoriesSetting(input: UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput!): UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload
+ updateEnterpriseMembersCanInviteCollaboratorsSetting(input: UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput!): UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload
+ updateEnterpriseMembersCanMakePurchasesSetting(input: UpdateEnterpriseMembersCanMakePurchasesSettingInput!): UpdateEnterpriseMembersCanMakePurchasesSettingPayload
+ updateEnterpriseMembersCanUpdateProtectedBranchesSetting(input: UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput!): UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload
+ updateEnterpriseMembersCanViewDependencyInsightsSetting(input: UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput!): UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload
+ updateEnterpriseOrganizationProjectsSetting(input: UpdateEnterpriseOrganizationProjectsSettingInput!): UpdateEnterpriseOrganizationProjectsSettingPayload
+ updateEnterpriseProfile(input: UpdateEnterpriseProfileInput!): UpdateEnterpriseProfilePayload
+ updateEnterpriseRepositoryProjectsSetting(input: UpdateEnterpriseRepositoryProjectsSettingInput!): UpdateEnterpriseRepositoryProjectsSettingPayload
+ updateEnterpriseTeamDiscussionsSetting(input: UpdateEnterpriseTeamDiscussionsSettingInput!): UpdateEnterpriseTeamDiscussionsSettingPayload
+ updateEnterpriseTwoFactorAuthenticationRequiredSetting(input: UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput!): UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload
+ updateIssue(input: UpdateIssueInput!): UpdateIssuePayload
+ updateIssueComment(input: UpdateIssueCommentInput!): UpdateIssueCommentPayload
+ updateProject(input: UpdateProjectInput!): UpdateProjectPayload
+ updateProjectCard(input: UpdateProjectCardInput!): UpdateProjectCardPayload
+ updateProjectColumn(input: UpdateProjectColumnInput!): UpdateProjectColumnPayload
+ updatePullRequest(input: UpdatePullRequestInput!): UpdatePullRequestPayload
+ updatePullRequestReview(input: UpdatePullRequestReviewInput!): UpdatePullRequestReviewPayload
+ updatePullRequestReviewComment(input: UpdatePullRequestReviewCommentInput!): UpdatePullRequestReviewCommentPayload
+ updateRef(input: UpdateRefInput!): UpdateRefPayload
+ updateRepository(input: UpdateRepositoryInput!): UpdateRepositoryPayload
+ updateSubscription(input: UpdateSubscriptionInput!): UpdateSubscriptionPayload
+ updateTeamDiscussion(input: UpdateTeamDiscussionInput!): UpdateTeamDiscussionPayload
+ updateTeamDiscussionComment(input: UpdateTeamDiscussionCommentInput!): UpdateTeamDiscussionCommentPayload
+ updateTopics(input: UpdateTopicsInput!): UpdateTopicsPayload
+}
+
+interface Node {
+ id: ID!
+}
+
+interface OauthApplicationAuditEntryData {
+ oauthApplicationName: String
+ oauthApplicationResourcePath: URI
+ oauthApplicationUrl: URI
+}
+
+type OauthApplicationCreateAuditEntry implements Node, AuditEntry, OauthApplicationAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ applicationUrl: URI
+ callbackUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ oauthApplicationName: String
+ oauthApplicationResourcePath: URI
+ oauthApplicationUrl: URI
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ rateLimit: Int
+ state: OauthApplicationCreateAuditEntryState
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OauthApplicationCreateAuditEntryState {
+ ACTIVE
+ SUSPENDED
+ PENDING_DELETION
+}
+
+enum OauthApplicationRevokeTokensAuditEntryState {
+ ACTIVE
+ SUSPENDED
+ PENDING_DELETION
+}
+
+enum OperationType {
+ ACCESS
+ AUTHENTICATION
+ CREATE
+ MODIFY
+ REMOVE
+ RESTORE
+ TRANSFER
+}
+
+enum OrderDirection {
+ ASC
+ DESC
+}
+
+type OrgAddBillingManagerAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ invitationEmail: String
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgAddMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ permission: OrgAddMemberAuditEntryPermission
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OrgAddMemberAuditEntryPermission {
+ READ
+ ADMIN
+}
+
+type OrgBlockUserAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ blockedUser: User
+ blockedUserName: String
+ blockedUserResourcePath: URI
+ blockedUserUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgConfigDisableCollaboratorsOnlyAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgConfigEnableCollaboratorsOnlyAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgCreateAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ billingPlan: OrgCreateAuditEntryBillingPlan
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OrgCreateAuditEntryBillingPlan {
+ FREE
+ BUSINESS
+ BUSINESS_PLUS
+ UNLIMITED
+ TIERED_PER_SEAT
+}
+
+type OrgDisableOauthAppRestrictionsAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgDisableSamlAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ digestMethodUrl: URI
+ id: ID!
+ issuerUrl: URI
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ signatureMethodUrl: URI
+ singleSignOnUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgDisableTwoFactorRequirementAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgEnableOauthAppRestrictionsAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgEnableSamlAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ digestMethodUrl: URI
+ id: ID!
+ issuerUrl: URI
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ signatureMethodUrl: URI
+ singleSignOnUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgEnableTwoFactorRequirementAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgInviteMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ email: String
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationInvitation: OrganizationInvitation
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgInviteToBusinessAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgOauthAppAccessApprovedAuditEntry implements Node, AuditEntry, OauthApplicationAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ oauthApplicationName: String
+ oauthApplicationResourcePath: URI
+ oauthApplicationUrl: URI
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgOauthAppAccessDeniedAuditEntry implements Node, AuditEntry, OauthApplicationAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ oauthApplicationName: String
+ oauthApplicationResourcePath: URI
+ oauthApplicationUrl: URI
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgOauthAppAccessRequestedAuditEntry implements Node, AuditEntry, OauthApplicationAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ oauthApplicationName: String
+ oauthApplicationResourcePath: URI
+ oauthApplicationUrl: URI
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgRemoveBillingManagerAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ reason: OrgRemoveBillingManagerAuditEntryReason
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OrgRemoveBillingManagerAuditEntryReason {
+ TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE
+ SAML_EXTERNAL_IDENTITY_MISSING
+ SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY
+}
+
+type OrgRemoveMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ membershipTypes: [OrgRemoveMemberAuditEntryMembershipType!]
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ reason: OrgRemoveMemberAuditEntryReason
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OrgRemoveMemberAuditEntryMembershipType {
+ DIRECT_MEMBER
+ ADMIN
+ BILLING_MANAGER
+ UNAFFILIATED
+ OUTSIDE_COLLABORATOR
+}
+
+enum OrgRemoveMemberAuditEntryReason {
+ TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE
+ SAML_EXTERNAL_IDENTITY_MISSING
+ SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY
+}
+
+type OrgRemoveOutsideCollaboratorAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ membershipTypes: [OrgRemoveOutsideCollaboratorAuditEntryMembershipType!]
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ reason: OrgRemoveOutsideCollaboratorAuditEntryReason
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OrgRemoveOutsideCollaboratorAuditEntryMembershipType {
+ OUTSIDE_COLLABORATOR
+ UNAFFILIATED
+ BILLING_MANAGER
+}
+
+enum OrgRemoveOutsideCollaboratorAuditEntryReason {
+ TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE
+ SAML_EXTERNAL_IDENTITY_MISSING
+}
+
+type OrgRestoreMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ restoredCustomEmailRoutingsCount: Int
+ restoredIssueAssignmentsCount: Int
+ restoredMemberships: [OrgRestoreMemberAuditEntryMembership!]
+ restoredMembershipsCount: Int
+ restoredRepositoriesCount: Int
+ restoredRepositoryStarsCount: Int
+ restoredRepositoryWatchesCount: Int
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+union OrgRestoreMemberAuditEntryMembership = OrgRestoreMemberMembershipOrganizationAuditEntryData | OrgRestoreMemberMembershipRepositoryAuditEntryData | OrgRestoreMemberMembershipTeamAuditEntryData
+
+type OrgRestoreMemberMembershipOrganizationAuditEntryData implements OrganizationAuditEntryData {
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+}
+
+type OrgRestoreMemberMembershipRepositoryAuditEntryData implements RepositoryAuditEntryData {
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+}
+
+type OrgRestoreMemberMembershipTeamAuditEntryData implements TeamAuditEntryData {
+ team: Team
+ teamName: String
+ teamResourcePath: URI
+ teamUrl: URI
+}
+
+type OrgUnblockUserAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ blockedUser: User
+ blockedUserName: String
+ blockedUserResourcePath: URI
+ blockedUserUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type OrgUpdateDefaultRepositoryPermissionAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ permission: OrgUpdateDefaultRepositoryPermissionAuditEntryPermission
+ permissionWas: OrgUpdateDefaultRepositoryPermissionAuditEntryPermission
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OrgUpdateDefaultRepositoryPermissionAuditEntryPermission {
+ READ
+ WRITE
+ ADMIN
+ NONE
+}
+
+type OrgUpdateMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ permission: OrgUpdateMemberAuditEntryPermission
+ permissionWas: OrgUpdateMemberAuditEntryPermission
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum OrgUpdateMemberAuditEntryPermission {
+ READ
+ ADMIN
+}
+
+type OrgUpdateMemberRepositoryCreationPermissionAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ canCreateRepositories: Boolean
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+ visibility: OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility
+}
+
+enum OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility {
+ ALL
+ PUBLIC
+}
+
+type OrgUpdateMemberRepositoryInvitationPermissionAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ canInviteOutsideCollaboratorsToRepositories: Boolean
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type Organization implements Node, Actor, RegistryPackageOwner, RegistryPackageSearch, ProjectOwner, RepositoryOwner, UniformResourceLocatable, MemberStatusable, ProfileOwner, Sponsorable {
+ anyPinnableItems(
+ type: PinnableItemType
+ ): Boolean!
+ auditLog(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ orderBy: AuditLogOrder = {field: CREATED_AT, direction: DESC}
+ ): OrganizationAuditEntryConnection!
+ avatarUrl(
+ size: Int
+ ): URI!
+ createdAt: DateTime!
+ databaseId: Int
+ description: String
+ descriptionHTML: String
+ email: String
+ id: ID!
+ isVerified: Boolean!
+ itemShowcase: ProfileItemShowcase!
+ location: String
+ login: String!
+ memberStatuses(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: UserStatusOrder = {field: UPDATED_AT, direction: DESC}
+ ): UserStatusConnection!
+ membersWithRole(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): OrganizationMemberConnection!
+ name: String
+ newTeamResourcePath: URI!
+ newTeamUrl: URI!
+ organizationBillingEmail: String
+ pendingMembers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ pinnableItems(
+ types: [PinnableItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PinnableItemConnection!
+ pinnedItems(
+ types: [PinnableItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PinnableItemConnection!
+ pinnedItemsRemaining: Int!
+ pinnedRepositories(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-10-01 UTC.")
+ project(
+ number: Int!
+ ): Project
+ projects(
+ orderBy: ProjectOrder
+ search: String
+ states: [ProjectState!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ProjectConnection!
+ projectsResourcePath: URI!
+ projectsUrl: URI!
+ registryPackages(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ name: String
+ names: [String]
+ repositoryId: ID
+ packageType: RegistryPackageType
+ registryPackageType: String
+ publicOnly: Boolean = false
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageOwner` object instead. Removal on 2020-04-01 UTC.")
+ registryPackagesForQuery(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ packageType: RegistryPackageType
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageSearch` object instead. Removal on 2020-04-01 UTC.")
+ repositories(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ isFork: Boolean
+ ): RepositoryConnection!
+ repository(
+ name: String!
+ ): Repository
+ requiresTwoFactorAuthentication: Boolean
+ resourcePath: URI!
+ samlIdentityProvider: OrganizationIdentityProvider
+ sponsorsListing: SponsorsListing
+ sponsorshipsAsMaintainer(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ includePrivate: Boolean = false
+ orderBy: SponsorshipOrder
+ ): SponsorshipConnection!
+ sponsorshipsAsSponsor(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: SponsorshipOrder
+ ): SponsorshipConnection!
+ team(
+ slug: String!
+ ): Team
+ teams(
+ privacy: TeamPrivacy
+ role: TeamRole
+ query: String
+ userLogins: [String!]
+ orderBy: TeamOrder
+ ldapMapped: Boolean
+ rootTeamsOnly: Boolean = false
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): TeamConnection!
+ teamsResourcePath: URI!
+ teamsUrl: URI!
+ updatedAt: DateTime!
+ url: URI!
+ viewerCanAdminister: Boolean!
+ viewerCanChangePinnedItems: Boolean!
+ viewerCanCreateProjects: Boolean!
+ viewerCanCreateRepositories: Boolean!
+ viewerCanCreateTeams: Boolean!
+ viewerIsAMember: Boolean!
+ websiteUrl: URI
+}
+
+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
+
+type OrganizationAuditEntryConnection {
+ edges: [OrganizationAuditEntryEdge]
+ nodes: [OrganizationAuditEntry]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+interface OrganizationAuditEntryData {
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+}
+
+type OrganizationAuditEntryEdge {
+ cursor: String!
+ node: OrganizationAuditEntry
+}
+
+type OrganizationConnection {
+ edges: [OrganizationEdge]
+ nodes: [Organization]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type OrganizationEdge {
+ cursor: String!
+ node: Organization
+}
+
+type OrganizationIdentityProvider implements Node {
+ digestMethod: URI
+ externalIdentities(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ExternalIdentityConnection!
+ id: ID!
+ idpCertificate: X509Certificate
+ issuer: String
+ organization: Organization
+ signatureMethod: URI
+ ssoUrl: URI
+}
+
+type OrganizationInvitation implements Node {
+ createdAt: DateTime!
+ email: String
+ id: ID!
+ invitationType: OrganizationInvitationType!
+ invitee: User
+ inviter: User!
+ organization: Organization!
+ role: OrganizationInvitationRole!
+}
+
+type OrganizationInvitationConnection {
+ edges: [OrganizationInvitationEdge]
+ nodes: [OrganizationInvitation]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type OrganizationInvitationEdge {
+ cursor: String!
+ node: OrganizationInvitation
+}
+
+enum OrganizationInvitationRole {
+ DIRECT_MEMBER
+ ADMIN
+ BILLING_MANAGER
+ REINSTATE
+}
+
+enum OrganizationInvitationType {
+ USER
+ EMAIL
+}
+
+type OrganizationMemberConnection {
+ edges: [OrganizationMemberEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type OrganizationMemberEdge {
+ cursor: String!
+ hasTwoFactorEnabled: Boolean
+ node: User
+ role: OrganizationMemberRole
+}
+
+enum OrganizationMemberRole {
+ MEMBER
+ ADMIN
+}
+
+enum OrganizationMembersCanCreateRepositoriesSettingValue {
+ ALL
+ PRIVATE
+ DISABLED
+}
+
+input OrganizationOrder {
+ field: OrganizationOrderField!
+ direction: OrderDirection!
+}
+
+enum OrganizationOrderField {
+ CREATED_AT
+ LOGIN
+}
+
+type OrganizationTeamsHovercardContext implements HovercardContext {
+ message: String!
+ octicon: String!
+ relevantTeams(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): TeamConnection!
+ teamsResourcePath: URI!
+ teamsUrl: URI!
+ totalTeamCount: Int!
+}
+
+type OrganizationsHovercardContext implements HovercardContext {
+ message: String!
+ octicon: String!
+ relevantOrganizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): OrganizationConnection!
+ totalOrganizationCount: Int!
+}
+
+type PageInfo {
+ endCursor: String
+ hasNextPage: Boolean!
+ hasPreviousPage: Boolean!
+ startCursor: String
+}
+
+union PermissionGranter = Organization | Repository | Team
+
+type PermissionSource {
+ organization: Organization!
+ permission: DefaultRepositoryPermissionField!
+ source: PermissionGranter!
+}
+
+input PinIssueInput {
+ issueId: ID!
+ clientMutationId: String
+}
+
+union PinnableItem = Gist | Repository
+
+type PinnableItemConnection {
+ edges: [PinnableItemEdge]
+ nodes: [PinnableItem]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PinnableItemEdge {
+ cursor: String!
+ node: PinnableItem
+}
+
+enum PinnableItemType {
+ REPOSITORY
+ GIST
+ ISSUE
+ PROJECT
+ PULL_REQUEST
+ USER
+ ORGANIZATION
+ TEAM
+}
+
+type PinnedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ issue: Issue!
+}
+
+scalar PreciseDateTime
+
+type PrivateRepositoryForkingDisableAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type PrivateRepositoryForkingEnableAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type ProfileItemShowcase {
+ hasPinnedItems: Boolean!
+ items(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PinnableItemConnection!
+}
+
+interface ProfileOwner {
+ anyPinnableItems(
+ type: PinnableItemType
+ ): Boolean!
+ email: String
+ id: ID!
+ itemShowcase: ProfileItemShowcase!
+ location: String
+ login: String!
+ name: String
+ pinnableItems(
+ types: [PinnableItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PinnableItemConnection!
+ pinnedItems(
+ types: [PinnableItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PinnableItemConnection!
+ pinnedItemsRemaining: Int!
+ viewerCanChangePinnedItems: Boolean!
+ websiteUrl: URI
+}
+
+type Project implements Node, Closable, Updatable {
+ body: String
+ bodyHTML: HTML!
+ closed: Boolean!
+ closedAt: DateTime
+ columns(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ProjectColumnConnection!
+ createdAt: DateTime!
+ creator: Actor
+ databaseId: Int
+ id: ID!
+ name: String!
+ number: Int!
+ owner: ProjectOwner!
+ pendingCards(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+ ): ProjectCardConnection!
+ resourcePath: URI!
+ state: ProjectState!
+ updatedAt: DateTime!
+ url: URI!
+ viewerCanUpdate: Boolean!
+}
+
+type ProjectCard implements Node {
+ column: ProjectColumn
+ content: ProjectCardItem
+ createdAt: DateTime!
+ creator: Actor
+ databaseId: Int
+ id: ID!
+ isArchived: Boolean!
+ note: String
+ project: Project!
+ resourcePath: URI!
+ state: ProjectCardState
+ updatedAt: DateTime!
+ url: URI!
+}
+
+enum ProjectCardArchivedState {
+ ARCHIVED
+ NOT_ARCHIVED
+}
+
+type ProjectCardConnection {
+ edges: [ProjectCardEdge]
+ nodes: [ProjectCard]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ProjectCardEdge {
+ cursor: String!
+ node: ProjectCard
+}
+
+input ProjectCardImport {
+ repository: String!
+ number: Int!
+}
+
+union ProjectCardItem = Issue | PullRequest
+
+enum ProjectCardState {
+ CONTENT_ONLY
+ NOTE_ONLY
+ REDACTED
+}
+
+type ProjectColumn implements Node {
+ cards(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+ ): ProjectCardConnection!
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+ name: String!
+ project: Project!
+ purpose: ProjectColumnPurpose
+ resourcePath: URI!
+ updatedAt: DateTime!
+ url: URI!
+}
+
+type ProjectColumnConnection {
+ edges: [ProjectColumnEdge]
+ nodes: [ProjectColumn]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ProjectColumnEdge {
+ cursor: String!
+ node: ProjectColumn
+}
+
+input ProjectColumnImport {
+ columnName: String!
+ position: Int!
+ issues: [ProjectCardImport!]
+}
+
+enum ProjectColumnPurpose {
+ TODO
+ IN_PROGRESS
+ DONE
+}
+
+type ProjectConnection {
+ edges: [ProjectEdge]
+ nodes: [Project]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ProjectEdge {
+ cursor: String!
+ node: Project
+}
+
+input ProjectOrder {
+ field: ProjectOrderField!
+ direction: OrderDirection!
+}
+
+enum ProjectOrderField {
+ CREATED_AT
+ UPDATED_AT
+ NAME
+}
+
+interface ProjectOwner {
+ id: ID!
+ project(
+ number: Int!
+ ): Project
+ projects(
+ orderBy: ProjectOrder
+ search: String
+ states: [ProjectState!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ProjectConnection!
+ projectsResourcePath: URI!
+ projectsUrl: URI!
+ viewerCanCreateProjects: Boolean!
+}
+
+enum ProjectState {
+ OPEN
+ CLOSED
+}
+
+enum ProjectTemplate {
+ BASIC_KANBAN
+ AUTOMATED_KANBAN_V2
+ AUTOMATED_REVIEWS_KANBAN
+ BUG_TRIAGE
+}
+
+type PublicKey implements Node {
+ accessedAt: DateTime
+ createdAt: DateTime
+ fingerprint: String!
+ id: ID!
+ isReadOnly: Boolean
+ key: String!
+ updatedAt: DateTime
+}
+
+type PublicKeyConnection {
+ edges: [PublicKeyEdge]
+ nodes: [PublicKey]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PublicKeyEdge {
+ cursor: String!
+ node: PublicKey
+}
+
+type PullRequest implements Node, Assignable, Closable, Comment, Updatable, UpdatableComment, Labelable, Lockable, Reactable, RepositoryNode, Subscribable, UniformResourceLocatable {
+ activeLockReason: LockReason
+ additions: Int!
+ assignees(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ baseRef: Ref
+ baseRefName: String!
+ baseRefOid: GitObjectID!
+ baseRepository: Repository
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ changedFiles: Int!
+ closed: Boolean!
+ closedAt: DateTime
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueCommentConnection!
+ commits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestCommitConnection!
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ deletions: Int!
+ editor: Actor
+ files(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestChangedFileConnection
+ headRef: Ref
+ headRefName: String!
+ headRefOid: GitObjectID!
+ headRepository: Repository
+ headRepositoryOwner: RepositoryOwner
+ hovercard(
+ includeNotificationContexts: Boolean = true
+ ): Hovercard!
+ id: ID!
+ includesCreatedEdit: Boolean!
+ isCrossRepository: Boolean!
+ labels(
+ orderBy: LabelOrder = {field: CREATED_AT, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): LabelConnection
+ lastEditedAt: DateTime
+ locked: Boolean!
+ maintainerCanModify: Boolean!
+ mergeCommit: Commit
+ mergeable: MergeableState!
+ merged: Boolean!
+ mergedAt: DateTime
+ mergedBy: Actor
+ milestone: Milestone
+ number: Int!
+ participants(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ permalink: URI!
+ potentialMergeCommit: Commit
+ projectCards(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED]
+ ): ProjectCardConnection!
+ publishedAt: DateTime
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ repository: Repository!
+ resourcePath: URI!
+ revertResourcePath: URI!
+ revertUrl: URI!
+ reviewRequests(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ReviewRequestConnection
+ reviewThreads(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestReviewThreadConnection!
+ reviews(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ states: [PullRequestReviewState!]
+ author: String
+ ): PullRequestReviewConnection
+ state: PullRequestState!
+ suggestedReviewers: [SuggestedReviewer]!
+ timeline(
+ since: DateTime
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestTimelineConnection! @deprecated(reason: "`timeline` will be removed Use PullRequest.timelineItems instead. Removal on 2019-10-01 UTC.")
+ timelineItems(
+ since: DateTime
+ skip: Int
+ itemTypes: [PullRequestTimelineItemsItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestTimelineItemsConnection!
+ title: String!
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanApplySuggestion: Boolean!
+ viewerCanReact: Boolean!
+ viewerCanSubscribe: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+ viewerSubscription: SubscriptionState
+}
+
+type PullRequestChangedFile {
+ additions: Int!
+ deletions: Int!
+ path: String!
+}
+
+type PullRequestChangedFileConnection {
+ edges: [PullRequestChangedFileEdge]
+ nodes: [PullRequestChangedFile]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PullRequestChangedFileEdge {
+ cursor: String!
+ node: PullRequestChangedFile
+}
+
+type PullRequestCommit implements Node, UniformResourceLocatable {
+ commit: Commit!
+ id: ID!
+ pullRequest: PullRequest!
+ resourcePath: URI!
+ url: URI!
+}
+
+type PullRequestCommitCommentThread implements Node, RepositoryNode {
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): CommitCommentConnection!
+ commit: Commit!
+ id: ID!
+ path: String
+ position: Int
+ pullRequest: PullRequest!
+ repository: Repository!
+}
+
+type PullRequestCommitConnection {
+ edges: [PullRequestCommitEdge]
+ nodes: [PullRequestCommit]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PullRequestCommitEdge {
+ cursor: String!
+ node: PullRequestCommit
+}
+
+type PullRequestConnection {
+ edges: [PullRequestEdge]
+ nodes: [PullRequest]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PullRequestContributionsByRepository {
+ contributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: ContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedPullRequestContributionConnection!
+ repository: Repository!
+}
+
+type PullRequestEdge {
+ cursor: String!
+ node: PullRequest
+}
+
+enum PullRequestMergeMethod {
+ MERGE
+ SQUASH
+ REBASE
+}
+
+input PullRequestOrder {
+ field: PullRequestOrderField!
+ direction: OrderDirection!
+}
+
+enum PullRequestOrderField {
+ CREATED_AT
+ UPDATED_AT
+}
+
+enum PullRequestPubSubTopic {
+ UPDATED
+ MARKASREAD
+ HEAD_REF
+ TIMELINE
+ STATE
+}
+
+type PullRequestReview implements Node, Comment, Deletable, Updatable, UpdatableComment, Reactable, RepositoryNode {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestReviewCommentConnection!
+ commit: Commit
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ editor: Actor
+ id: ID!
+ includesCreatedEdit: Boolean!
+ lastEditedAt: DateTime
+ onBehalfOf(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): TeamConnection!
+ publishedAt: DateTime
+ pullRequest: PullRequest!
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ repository: Repository!
+ resourcePath: URI!
+ state: PullRequestReviewState!
+ submittedAt: DateTime
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanDelete: Boolean!
+ viewerCanReact: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+}
+
+type PullRequestReviewComment implements Node, Comment, Deletable, Updatable, UpdatableComment, Reactable, RepositoryNode {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ commit: Commit
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ diffHunk: String!
+ draftedAt: DateTime!
+ editor: Actor
+ id: ID!
+ includesCreatedEdit: Boolean!
+ isMinimized: Boolean!
+ lastEditedAt: DateTime
+ minimizedReason: String
+ originalCommit: Commit
+ originalPosition: Int!
+ outdated: Boolean!
+ path: String!
+ position: Int
+ publishedAt: DateTime
+ pullRequest: PullRequest!
+ pullRequestReview: PullRequestReview
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ replyTo: PullRequestReviewComment
+ repository: Repository!
+ resourcePath: URI!
+ state: PullRequestReviewCommentState!
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanDelete: Boolean!
+ viewerCanMinimize: Boolean!
+ viewerCanReact: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+}
+
+type PullRequestReviewCommentConnection {
+ edges: [PullRequestReviewCommentEdge]
+ nodes: [PullRequestReviewComment]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PullRequestReviewCommentEdge {
+ cursor: String!
+ node: PullRequestReviewComment
+}
+
+enum PullRequestReviewCommentState {
+ PENDING
+ SUBMITTED
+}
+
+type PullRequestReviewConnection {
+ edges: [PullRequestReviewEdge]
+ nodes: [PullRequestReview]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PullRequestReviewContributionsByRepository {
+ contributions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: ContributionOrder = {field: OCCURRED_AT, direction: DESC}
+ ): CreatedPullRequestReviewContributionConnection!
+ repository: Repository!
+}
+
+type PullRequestReviewEdge {
+ cursor: String!
+ node: PullRequestReview
+}
+
+enum PullRequestReviewEvent {
+ COMMENT
+ APPROVE
+ REQUEST_CHANGES
+ DISMISS
+}
+
+enum PullRequestReviewState {
+ PENDING
+ COMMENTED
+ APPROVED
+ CHANGES_REQUESTED
+ DISMISSED
+}
+
+type PullRequestReviewThread implements Node {
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ skip: Int
+ ): PullRequestReviewCommentConnection!
+ id: ID!
+ isResolved: Boolean!
+ pullRequest: PullRequest!
+ repository: Repository!
+ resolvedBy: User
+ viewerCanResolve: Boolean!
+ viewerCanUnresolve: Boolean!
+}
+
+type PullRequestReviewThreadConnection {
+ edges: [PullRequestReviewThreadEdge]
+ nodes: [PullRequestReviewThread]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PullRequestReviewThreadEdge {
+ cursor: String!
+ node: PullRequestReviewThread
+}
+
+type PullRequestRevisionMarker {
+ createdAt: DateTime!
+ lastSeenCommit: Commit!
+ pullRequest: PullRequest!
+}
+
+enum PullRequestState {
+ OPEN
+ CLOSED
+ MERGED
+}
+
+type PullRequestTimelineConnection {
+ edges: [PullRequestTimelineItemEdge]
+ nodes: [PullRequestTimelineItem]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+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
+
+type PullRequestTimelineItemEdge {
+ cursor: String!
+ node: PullRequestTimelineItem
+}
+
+union PullRequestTimelineItems = AddedToProjectEvent | AssignedEvent | BaseRefChangedEvent | BaseRefForcePushedEvent | ClosedEvent | CommentDeletedEvent | ConvertedNoteToIssueEvent | CrossReferencedEvent | DemilestonedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | 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 | UnpinnedEvent | UnsubscribedEvent | UserBlockedEvent
+
+type PullRequestTimelineItemsConnection {
+ edges: [PullRequestTimelineItemsEdge]
+ filteredCount: Int!
+ nodes: [PullRequestTimelineItems]
+ pageCount: Int!
+ pageInfo: PageInfo!
+ totalCount: Int!
+ updatedAt: DateTime!
+}
+
+type PullRequestTimelineItemsEdge {
+ cursor: String!
+ node: PullRequestTimelineItems
+}
+
+enum PullRequestTimelineItemsItemType {
+ PULL_REQUEST_COMMIT
+ PULL_REQUEST_COMMIT_COMMENT_THREAD
+ PULL_REQUEST_REVIEW
+ PULL_REQUEST_REVIEW_THREAD
+ PULL_REQUEST_REVISION_MARKER
+ BASE_REF_CHANGED_EVENT
+ BASE_REF_FORCE_PUSHED_EVENT
+ DEPLOYED_EVENT
+ DEPLOYMENT_ENVIRONMENT_CHANGED_EVENT
+ HEAD_REF_DELETED_EVENT
+ HEAD_REF_FORCE_PUSHED_EVENT
+ HEAD_REF_RESTORED_EVENT
+ MERGED_EVENT
+ REVIEW_DISMISSED_EVENT
+ REVIEW_REQUESTED_EVENT
+ REVIEW_REQUEST_REMOVED_EVENT
+ READY_FOR_REVIEW_EVENT
+ ISSUE_COMMENT
+ CROSS_REFERENCED_EVENT
+ ADDED_TO_PROJECT_EVENT
+ ASSIGNED_EVENT
+ CLOSED_EVENT
+ COMMENT_DELETED_EVENT
+ CONVERTED_NOTE_TO_ISSUE_EVENT
+ DEMILESTONED_EVENT
+ LABELED_EVENT
+ LOCKED_EVENT
+ MARKED_AS_DUPLICATE_EVENT
+ MENTIONED_EVENT
+ MILESTONED_EVENT
+ MOVED_COLUMNS_IN_PROJECT_EVENT
+ PINNED_EVENT
+ REFERENCED_EVENT
+ REMOVED_FROM_PROJECT_EVENT
+ RENAMED_TITLE_EVENT
+ REOPENED_EVENT
+ SUBSCRIBED_EVENT
+ TRANSFERRED_EVENT
+ UNASSIGNED_EVENT
+ UNLABELED_EVENT
+ UNLOCKED_EVENT
+ USER_BLOCKED_EVENT
+ UNPINNED_EVENT
+ UNSUBSCRIBED_EVENT
+}
+
+enum PullRequestUpdateState {
+ OPEN
+ CLOSED
+}
+
+type PushAllowance implements Node {
+ actor: PushAllowanceActor
+ branchProtectionRule: BranchProtectionRule
+ id: ID!
+}
+
+union PushAllowanceActor = App | Team | User
+
+type PushAllowanceConnection {
+ edges: [PushAllowanceEdge]
+ nodes: [PushAllowance]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type PushAllowanceEdge {
+ cursor: String!
+ node: PushAllowance
+}
+
+type Query {
+ codeOfConduct(
+ key: String!
+ ): CodeOfConduct
+ codesOfConduct: [CodeOfConduct]
+ enterprise(
+ slug: String!
+ invitationToken: String
+ ): Enterprise
+ enterpriseAdministratorInvitation(
+ userLogin: String!
+ enterpriseSlug: String!
+ role: EnterpriseAdministratorRole!
+ ): EnterpriseAdministratorInvitation
+ enterpriseAdministratorInvitationByToken(
+ invitationToken: String!
+ ): EnterpriseAdministratorInvitation
+ license(
+ key: String!
+ ): License
+ licenses: [License]!
+ marketplaceCategories(
+ includeCategories: [String!]
+ excludeEmpty: Boolean
+ excludeSubcategories: Boolean
+ ): [MarketplaceCategory!]!
+ marketplaceCategory(
+ slug: String!
+ useTopicAliases: Boolean
+ ): MarketplaceCategory
+ marketplaceListing(
+ slug: String!
+ ): MarketplaceListing
+ marketplaceListings(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ categorySlug: String
+ useTopicAliases: Boolean
+ viewerCanAdmin: Boolean
+ adminId: ID
+ organizationId: ID
+ allStates: Boolean
+ slugs: [String]
+ primaryCategoryOnly: Boolean = false
+ withFreeTrialsOnly: Boolean = false
+ ): MarketplaceListingConnection!
+ meta: GitHubMetadata!
+ node(
+ id: ID!
+ ): Node
+ nodes(
+ ids: [ID!]!
+ ): [Node]!
+ organization(
+ login: String!
+ ): Organization
+ rateLimit(
+ dryRun: Boolean = false
+ ): RateLimit
+ relay: Query!
+ repository(
+ owner: String!
+ name: String!
+ ): Repository
+ repositoryOwner(
+ login: String!
+ ): RepositoryOwner
+ resource(
+ url: URI!
+ ): UniformResourceLocatable
+ search(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String!
+ type: SearchType!
+ ): SearchResultItemConnection!
+ securityAdvisories(
+ orderBy: SecurityAdvisoryOrder = {field: UPDATED_AT, direction: DESC}
+ identifier: SecurityAdvisoryIdentifierFilter
+ publishedSince: DateTime
+ updatedSince: DateTime
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): SecurityAdvisoryConnection!
+ securityAdvisory(
+ ghsaId: String!
+ ): SecurityAdvisory
+ securityVulnerabilities(
+ orderBy: SecurityVulnerabilityOrder = {field: UPDATED_AT, direction: DESC}
+ ecosystem: SecurityAdvisoryEcosystem
+ package: String
+ severities: [SecurityAdvisorySeverity!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): SecurityVulnerabilityConnection!
+ sponsorsListing(
+ slug: String!
+ ): SponsorsListing @deprecated(reason: "`Query.sponsorsListing` will be removed. Use `Sponsorable.sponsorsListing` instead. Removal on 2020-04-01 UTC.")
+ topic(
+ name: String!
+ ): Topic
+ user(
+ login: String!
+ ): User
+ viewer: User!
+}
+
+type RateLimit {
+ cost: Int!
+ limit: Int!
+ nodeCount: Int!
+ remaining: Int!
+ resetAt: DateTime!
+}
+
+interface Reactable {
+ databaseId: Int
+ id: ID!
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ viewerCanReact: Boolean!
+}
+
+type ReactingUserConnection {
+ edges: [ReactingUserEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ReactingUserEdge {
+ cursor: String!
+ node: User!
+ reactedAt: DateTime!
+}
+
+type Reaction implements Node {
+ content: ReactionContent!
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+ reactable: Reactable!
+ user: User
+}
+
+type ReactionConnection {
+ edges: [ReactionEdge]
+ nodes: [Reaction]
+ pageInfo: PageInfo!
+ totalCount: Int!
+ viewerHasReacted: Boolean!
+}
+
+enum ReactionContent {
+ THUMBS_UP
+ THUMBS_DOWN
+ LAUGH
+ HOORAY
+ CONFUSED
+ HEART
+ ROCKET
+ EYES
+}
+
+type ReactionEdge {
+ cursor: String!
+ node: Reaction
+}
+
+type ReactionGroup {
+ content: ReactionContent!
+ createdAt: DateTime
+ subject: Reactable!
+ users(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ReactingUserConnection!
+ viewerHasReacted: Boolean!
+}
+
+input ReactionOrder {
+ field: ReactionOrderField!
+ direction: OrderDirection!
+}
+
+enum ReactionOrderField {
+ CREATED_AT
+}
+
+type ReadyForReviewEvent implements Node, UniformResourceLocatable {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ pullRequest: PullRequest!
+ resourcePath: URI!
+ url: URI!
+}
+
+type Ref implements Node {
+ associatedPullRequests(
+ states: [PullRequestState!]
+ labels: [String!]
+ headRefName: String
+ baseRefName: String
+ orderBy: IssueOrder
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestConnection!
+ id: ID!
+ name: String!
+ prefix: String!
+ repository: Repository!
+ target: GitObject!
+}
+
+type RefConnection {
+ edges: [RefEdge]
+ nodes: [Ref]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RefEdge {
+ cursor: String!
+ node: Ref
+}
+
+input RefOrder {
+ field: RefOrderField!
+ direction: OrderDirection!
+}
+
+enum RefOrderField {
+ TAG_COMMIT_DATE
+ ALPHABETICAL
+}
+
+type ReferencedEvent implements Node {
+ actor: Actor
+ commit: Commit
+ commitRepository: Repository!
+ createdAt: DateTime!
+ id: ID!
+ isCrossRepository: Boolean!
+ isDirectReference: Boolean!
+ subject: ReferencedSubject!
+}
+
+union ReferencedSubject = Issue | PullRequest
+
+input RegenerateEnterpriseIdentityProviderRecoveryCodesInput {
+ enterpriseId: ID!
+ clientMutationId: String
+}
+
+type RegenerateEnterpriseIdentityProviderRecoveryCodesPayload {
+ clientMutationId: String
+ identityProvider: EnterpriseIdentityProvider
+}
+
+type RegistryPackage implements Node {
+ color: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ id: ID!
+ latestVersion: RegistryPackageVersion @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ name: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ nameWithOwner: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ packageFileByGuid(
+ guid: String!
+ ): RegistryPackageFile @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object. Removal on 2020-04-01 UTC.")
+ packageFileBySha256(
+ sha256: String!
+ ): RegistryPackageFile @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object. Removal on 2020-04-01 UTC.")
+ packageType: RegistryPackageType! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ preReleaseVersions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RegistryPackageVersionConnection @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ registryPackageType: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ repository: Repository @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ statistics: RegistryPackageStatistics @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ tags(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RegistryPackageTagConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object. Removal on 2020-04-01 UTC.")
+ topics(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): TopicConnection @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object. Removal on 2020-04-01 UTC.")
+ version(
+ version: String!
+ ): RegistryPackageVersion @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ versionByPlatform(
+ version: String!
+ platform: String!
+ ): RegistryPackageVersion @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ versionBySha256(
+ sha256: String!
+ ): RegistryPackageVersion @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ versions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RegistryPackageVersionConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+ versionsByMetadatum(
+ metadatum: RegistryPackageMetadatum!
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RegistryPackageVersionConnection @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `Package` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type RegistryPackageConnection {
+ edges: [RegistryPackageEdge]
+ nodes: [RegistryPackage]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RegistryPackageDependency implements Node {
+ dependencyType: RegistryPackageDependencyType! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageDependency` object instead. Removal on 2020-04-01 UTC.")
+ id: ID!
+ name: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageDependency` object instead. Removal on 2020-04-01 UTC.")
+ version: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageDependency` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type RegistryPackageDependencyConnection {
+ edges: [RegistryPackageDependencyEdge]
+ nodes: [RegistryPackageDependency]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RegistryPackageDependencyEdge {
+ cursor: String!
+ node: RegistryPackageDependency
+}
+
+enum RegistryPackageDependencyType {
+ DEFAULT
+ DEV
+ TEST
+ PEER
+ OPTIONAL
+ BUNDLED
+}
+
+type RegistryPackageEdge {
+ cursor: String!
+ node: RegistryPackage
+}
+
+type RegistryPackageFile implements Node {
+ guid: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ id: ID!
+ md5: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ metadataUrl: URI! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ name: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ packageVersion: RegistryPackageVersion! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ sha1: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ sha256: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ size: Int @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+ updatedAt: DateTime!
+ url: URI! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageFile` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type RegistryPackageFileConnection {
+ edges: [RegistryPackageFileEdge]
+ nodes: [RegistryPackageFile]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RegistryPackageFileEdge {
+ cursor: String!
+ node: RegistryPackageFile
+}
+
+enum RegistryPackageFileState {
+ NEW
+ UPLOADED
+}
+
+input RegistryPackageMetadatum {
+ name: String!
+ value: String!
+ update: Boolean
+}
+
+interface RegistryPackageOwner {
+ id: ID!
+ registryPackages(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ name: String
+ names: [String]
+ repositoryId: ID
+ packageType: RegistryPackageType
+ registryPackageType: String
+ publicOnly: Boolean = false
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageOwner` object instead. Removal on 2020-04-01 UTC.")
+}
+
+interface RegistryPackageSearch {
+ id: ID!
+ registryPackagesForQuery(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ packageType: RegistryPackageType
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageSearch` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type RegistryPackageStatistics {
+ downloadsThisMonth: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsThisWeek: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsThisYear: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsToday: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsTotalCount: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageStatistics` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type RegistryPackageTag implements Node {
+ id: ID!
+ name: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageTag` object instead. Removal on 2020-04-01 UTC.")
+ version: RegistryPackageVersion @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageTag` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type RegistryPackageTagConnection {
+ edges: [RegistryPackageTagEdge]
+ nodes: [RegistryPackageTag]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RegistryPackageTagEdge {
+ cursor: String!
+ node: RegistryPackageTag
+}
+
+enum RegistryPackageType {
+ NPM
+ RUBYGEMS
+ MAVEN
+ DOCKER
+ DEBIAN
+ NUGET
+ PYTHON
+}
+
+type RegistryPackageVersion implements Node {
+ dependencies(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ type: RegistryPackageDependencyType
+ ): RegistryPackageDependencyConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ fileByName(
+ filename: String!
+ ): RegistryPackageFile @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ files(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RegistryPackageFileConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ id: ID!
+ installationCommand: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ manifest: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ platform: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ preRelease: Boolean! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ readme: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ readmeHtml: HTML @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ registryPackage: RegistryPackage @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ release: Release @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ sha256: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ size: Int @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ statistics: RegistryPackageVersionStatistics @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ summary: String @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ updatedAt: DateTime! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ version: String! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+ viewerCanEdit: Boolean! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersion` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type RegistryPackageVersionConnection {
+ edges: [RegistryPackageVersionEdge]
+ nodes: [RegistryPackageVersion]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RegistryPackageVersionEdge {
+ cursor: String!
+ node: RegistryPackageVersion
+}
+
+type RegistryPackageVersionStatistics {
+ downloadsThisMonth: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersionStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsThisWeek: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersionStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsThisYear: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersionStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsToday: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersionStatistics` object instead. Removal on 2020-04-01 UTC.")
+ downloadsTotalCount: Int! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageVersionStatistics` object instead. Removal on 2020-04-01 UTC.")
+}
+
+type Release implements Node, UniformResourceLocatable {
+ author: User
+ createdAt: DateTime!
+ description: String
+ descriptionHTML: HTML
+ id: ID!
+ isDraft: Boolean!
+ isPrerelease: Boolean!
+ name: String
+ publishedAt: DateTime
+ releaseAssets(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ name: String
+ ): ReleaseAssetConnection!
+ resourcePath: URI!
+ shortDescriptionHTML(
+ limit: Int = 200
+ ): HTML
+ tag: Ref
+ tagName: String!
+ updatedAt: DateTime!
+ url: URI!
+}
+
+type ReleaseAsset implements Node {
+ contentType: String!
+ createdAt: DateTime!
+ downloadCount: Int!
+ downloadUrl: URI!
+ id: ID!
+ name: String!
+ release: Release
+ size: Int!
+ updatedAt: DateTime!
+ uploadedBy: User!
+ url: URI!
+}
+
+type ReleaseAssetConnection {
+ edges: [ReleaseAssetEdge]
+ nodes: [ReleaseAsset]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ReleaseAssetEdge {
+ cursor: String!
+ node: ReleaseAsset
+}
+
+type ReleaseConnection {
+ edges: [ReleaseEdge]
+ nodes: [Release]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ReleaseEdge {
+ cursor: String!
+ node: Release
+}
+
+input ReleaseOrder {
+ field: ReleaseOrderField!
+ direction: OrderDirection!
+}
+
+enum ReleaseOrderField {
+ CREATED_AT
+ NAME
+}
+
+input RemoveAssigneesFromAssignableInput {
+ assignableId: ID!
+ assigneeIds: [ID!]!
+ clientMutationId: String
+}
+
+type RemoveAssigneesFromAssignablePayload {
+ assignable: Assignable
+ clientMutationId: String
+}
+
+input RemoveEnterpriseAdminInput {
+ enterpriseId: ID!
+ login: String!
+ clientMutationId: String
+}
+
+type RemoveEnterpriseAdminPayload {
+ admin: User
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+ viewer: User
+}
+
+input RemoveEnterpriseOrganizationInput {
+ enterpriseId: ID!
+ organizationId: ID!
+ clientMutationId: String
+}
+
+type RemoveEnterpriseOrganizationPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ organization: Organization
+ viewer: User
+}
+
+input RemoveLabelsFromLabelableInput {
+ labelableId: ID!
+ labelIds: [ID!]!
+ clientMutationId: String
+}
+
+type RemoveLabelsFromLabelablePayload {
+ clientMutationId: String
+ labelable: Labelable
+}
+
+input RemoveOutsideCollaboratorInput {
+ userId: ID!
+ organizationId: ID!
+ clientMutationId: String
+}
+
+type RemoveOutsideCollaboratorPayload {
+ clientMutationId: String
+ removedUser: User
+}
+
+input RemoveReactionInput {
+ subjectId: ID!
+ content: ReactionContent!
+ clientMutationId: String
+}
+
+type RemoveReactionPayload {
+ clientMutationId: String
+ reaction: Reaction
+ subject: Reactable
+}
+
+input RemoveStarInput {
+ starrableId: ID!
+ clientMutationId: String
+}
+
+type RemoveStarPayload {
+ clientMutationId: String
+ starrable: Starrable
+}
+
+type RemovedFromProjectEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ id: ID!
+}
+
+type RenamedTitleEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ currentTitle: String!
+ id: ID!
+ previousTitle: String!
+ subject: RenamedTitleSubject!
+}
+
+union RenamedTitleSubject = Issue | PullRequest
+
+input ReopenIssueInput {
+ issueId: ID!
+ clientMutationId: String
+}
+
+type ReopenIssuePayload {
+ clientMutationId: String
+ issue: Issue
+}
+
+input ReopenPullRequestInput {
+ pullRequestId: ID!
+ clientMutationId: String
+}
+
+type ReopenPullRequestPayload {
+ clientMutationId: String
+ pullRequest: PullRequest
+}
+
+type ReopenedEvent implements Node {
+ actor: Actor
+ closable: Closable!
+ createdAt: DateTime!
+ id: ID!
+}
+
+type RepoAccessAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+ visibility: RepoAccessAuditEntryVisibility
+}
+
+enum RepoAccessAuditEntryVisibility {
+ INTERNAL
+ PRIVATE
+ PUBLIC
+}
+
+type RepoAddMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+ visibility: RepoAddMemberAuditEntryVisibility
+}
+
+enum RepoAddMemberAuditEntryVisibility {
+ INTERNAL
+ PRIVATE
+ PUBLIC
+}
+
+type RepoAddTopicAuditEntry implements Node, AuditEntry, RepositoryAuditEntryData, OrganizationAuditEntryData, TopicAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ topic: Topic
+ topicName: String
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoArchivedAuditEntry implements Node, AuditEntry, RepositoryAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+ visibility: RepoArchivedAuditEntryVisibility
+}
+
+enum RepoArchivedAuditEntryVisibility {
+ INTERNAL
+ PRIVATE
+ PUBLIC
+}
+
+type RepoChangeMergeSettingAuditEntry implements Node, AuditEntry, RepositoryAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ isEnabled: Boolean
+ mergeType: RepoChangeMergeSettingAuditEntryMergeType
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum RepoChangeMergeSettingAuditEntryMergeType {
+ MERGE
+ REBASE
+ SQUASH
+}
+
+type RepoConfigDisableAnonymousGitAccessAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigDisableCollaboratorsOnlyAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigDisableContributorsOnlyAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigDisableSockpuppetDisallowedAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigEnableAnonymousGitAccessAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigEnableCollaboratorsOnlyAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigEnableContributorsOnlyAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigEnableSockpuppetDisallowedAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigLockAnonymousGitAccessAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoConfigUnlockAnonymousGitAccessAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepoCreateAuditEntry implements Node, AuditEntry, RepositoryAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ forkParentName: String
+ forkSourceName: String
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+ visibility: RepoCreateAuditEntryVisibility
+}
+
+enum RepoCreateAuditEntryVisibility {
+ INTERNAL
+ PRIVATE
+ PUBLIC
+}
+
+type RepoDestroyAuditEntry implements Node, AuditEntry, RepositoryAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+ visibility: RepoDestroyAuditEntryVisibility
+}
+
+enum RepoDestroyAuditEntryVisibility {
+ INTERNAL
+ PRIVATE
+ PUBLIC
+}
+
+type RepoRemoveMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+ visibility: RepoRemoveMemberAuditEntryVisibility
+}
+
+enum RepoRemoveMemberAuditEntryVisibility {
+ INTERNAL
+ PRIVATE
+ PUBLIC
+}
+
+type RepoRemoveTopicAuditEntry implements Node, AuditEntry, RepositoryAuditEntryData, OrganizationAuditEntryData, TopicAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ topic: Topic
+ topicName: String
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+enum ReportedContentClassifiers {
+ SPAM
+ ABUSE
+ OFF_TOPIC
+ OUTDATED
+ RESOLVED
+}
+
+type Repository implements Node, ProjectOwner, RegistryPackageOwner, RegistryPackageSearch, Subscribable, Starrable, UniformResourceLocatable, RepositoryInfo {
+ assignableUsers(
+ query: String
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ branchProtectionRules(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): BranchProtectionRuleConnection!
+ codeOfConduct: CodeOfConduct
+ collaborators(
+ affiliation: CollaboratorAffiliation
+ query: String
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryCollaboratorConnection
+ commitComments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): CommitCommentConnection!
+ createdAt: DateTime!
+ databaseId: Int
+ defaultBranchRef: Ref
+ deployKeys(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): DeployKeyConnection!
+ deployments(
+ environments: [String!]
+ orderBy: DeploymentOrder = {field: CREATED_AT, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): DeploymentConnection!
+ description: String
+ descriptionHTML: HTML!
+ diskUsage: Int
+ forkCount: Int!
+ forks(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryConnection!
+ fundingLinks: [FundingLink!]!
+ hasIssuesEnabled: Boolean!
+ hasProjectsEnabled: Boolean!
+ hasWikiEnabled: Boolean!
+ homepageUrl: URI
+ id: ID!
+ isArchived: Boolean!
+ isDisabled: Boolean!
+ isFork: Boolean!
+ isLocked: Boolean!
+ isMirror: Boolean!
+ isPrivate: Boolean!
+ isTemplate: Boolean!
+ issue(
+ number: Int!
+ ): Issue
+ issueOrPullRequest(
+ number: Int!
+ ): IssueOrPullRequest
+ issues(
+ orderBy: IssueOrder
+ labels: [String!]
+ states: [IssueState!]
+ filterBy: IssueFilters
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueConnection!
+ label(
+ name: String!
+ ): Label
+ labels(
+ orderBy: LabelOrder = {field: CREATED_AT, direction: ASC}
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ ): LabelConnection
+ languages(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: LanguageOrder
+ ): LanguageConnection
+ licenseInfo: License
+ lockReason: RepositoryLockReason
+ mentionableUsers(
+ query: String
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+ mergeCommitAllowed: Boolean!
+ milestone(
+ number: Int!
+ ): Milestone
+ milestones(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ states: [MilestoneState!]
+ orderBy: MilestoneOrder
+ ): MilestoneConnection
+ mirrorUrl: URI
+ name: String!
+ nameWithOwner: String!
+ object(
+ oid: GitObjectID
+ expression: String
+ ): GitObject
+ openGraphImageUrl: URI!
+ owner: RepositoryOwner!
+ parent: Repository
+ primaryLanguage: Language
+ project(
+ number: Int!
+ ): Project
+ projects(
+ orderBy: ProjectOrder
+ search: String
+ states: [ProjectState!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ProjectConnection!
+ projectsResourcePath: URI!
+ projectsUrl: URI!
+ pullRequest(
+ number: Int!
+ ): PullRequest
+ pullRequests(
+ states: [PullRequestState!]
+ labels: [String!]
+ headRefName: String
+ baseRefName: String
+ orderBy: IssueOrder
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestConnection!
+ pushedAt: DateTime
+ rebaseMergeAllowed: Boolean!
+ ref(
+ qualifiedName: String!
+ ): Ref
+ refs(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ refPrefix: String!
+ direction: OrderDirection
+ orderBy: RefOrder
+ ): RefConnection
+ registryPackages(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ name: String
+ names: [String]
+ repositoryId: ID
+ packageType: RegistryPackageType
+ registryPackageType: String
+ publicOnly: Boolean = false
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageOwner` object instead. Removal on 2020-04-01 UTC.")
+ registryPackagesForQuery(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ packageType: RegistryPackageType
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageSearch` object instead. Removal on 2020-04-01 UTC.")
+ release(
+ tagName: String!
+ ): Release
+ releases(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: ReleaseOrder
+ ): ReleaseConnection!
+ repositoryTopics(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryTopicConnection!
+ resourcePath: URI!
+ shortDescriptionHTML(
+ limit: Int = 200
+ ): HTML!
+ squashMergeAllowed: Boolean!
+ sshUrl: GitSSHRemote!
+ stargazers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: StarOrder
+ ): StargazerConnection!
+ tempCloneToken: String
+ templateRepository: Repository
+ updatedAt: DateTime!
+ url: URI!
+ usesCustomOpenGraphImage: Boolean!
+ viewerCanAdminister: Boolean!
+ viewerCanCreateProjects: Boolean!
+ viewerCanSubscribe: Boolean!
+ viewerCanUpdateTopics: Boolean!
+ viewerHasStarred: Boolean!
+ viewerPermission: RepositoryPermission
+ viewerSubscription: SubscriptionState
+ vulnerabilityAlerts(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryVulnerabilityAlertConnection
+ watchers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserConnection!
+}
+
+enum RepositoryAffiliation {
+ OWNER
+ COLLABORATOR
+ ORGANIZATION_MEMBER
+}
+
+interface RepositoryAuditEntryData {
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+}
+
+enum RepositoryCollaboratorAffiliation {
+ ALL
+ OUTSIDE
+}
+
+type RepositoryCollaboratorConnection {
+ edges: [RepositoryCollaboratorEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RepositoryCollaboratorEdge {
+ cursor: String!
+ node: User!
+ permission: RepositoryPermission!
+ permissionSources: [PermissionSource!]
+}
+
+type RepositoryConnection {
+ edges: [RepositoryEdge]
+ nodes: [Repository]
+ pageInfo: PageInfo!
+ totalCount: Int!
+ totalDiskUsage: Int!
+}
+
+enum RepositoryContributionType {
+ COMMIT
+ ISSUE
+ PULL_REQUEST
+ REPOSITORY
+ PULL_REQUEST_REVIEW
+}
+
+type RepositoryEdge {
+ cursor: String!
+ node: Repository
+}
+
+interface RepositoryInfo {
+ createdAt: DateTime!
+ description: String
+ descriptionHTML: HTML!
+ forkCount: Int!
+ hasIssuesEnabled: Boolean!
+ hasProjectsEnabled: Boolean!
+ hasWikiEnabled: Boolean!
+ homepageUrl: URI
+ isArchived: Boolean!
+ isFork: Boolean!
+ isLocked: Boolean!
+ isMirror: Boolean!
+ isPrivate: Boolean!
+ isTemplate: Boolean!
+ licenseInfo: License
+ lockReason: RepositoryLockReason
+ mirrorUrl: URI
+ name: String!
+ nameWithOwner: String!
+ openGraphImageUrl: URI!
+ owner: RepositoryOwner!
+ pushedAt: DateTime
+ resourcePath: URI!
+ shortDescriptionHTML(
+ limit: Int = 200
+ ): HTML!
+ updatedAt: DateTime!
+ url: URI!
+ usesCustomOpenGraphImage: Boolean!
+}
+
+type RepositoryInvitation implements Node {
+ id: ID!
+ invitee: User!
+ inviter: User!
+ permission: RepositoryPermission!
+ repository: RepositoryInfo
+}
+
+type RepositoryInvitationEdge {
+ cursor: String!
+ node: RepositoryInvitation
+}
+
+input RepositoryInvitationOrder {
+ field: RepositoryInvitationOrderField!
+ direction: OrderDirection!
+}
+
+enum RepositoryInvitationOrderField {
+ CREATED_AT
+ INVITEE_LOGIN
+}
+
+enum RepositoryLockReason {
+ MOVING
+ BILLING
+ RENAME
+ MIGRATING
+}
+
+interface RepositoryNode {
+ repository: Repository!
+}
+
+input RepositoryOrder {
+ field: RepositoryOrderField!
+ direction: OrderDirection!
+}
+
+enum RepositoryOrderField {
+ CREATED_AT
+ UPDATED_AT
+ PUSHED_AT
+ NAME
+ STARGAZERS
+}
+
+interface RepositoryOwner {
+ avatarUrl(
+ size: Int
+ ): URI!
+ id: ID!
+ login: String!
+ pinnedRepositories(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-10-01 UTC.")
+ repositories(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ isFork: Boolean
+ ): RepositoryConnection!
+ repository(
+ name: String!
+ ): Repository
+ resourcePath: URI!
+ url: URI!
+}
+
+enum RepositoryPermission {
+ ADMIN
+ MAINTAIN
+ WRITE
+ TRIAGE
+ READ
+}
+
+enum RepositoryPrivacy {
+ PUBLIC
+ PRIVATE
+}
+
+type RepositoryTopic implements Node, UniformResourceLocatable {
+ id: ID!
+ resourcePath: URI!
+ topic: Topic!
+ url: URI!
+}
+
+type RepositoryTopicConnection {
+ edges: [RepositoryTopicEdge]
+ nodes: [RepositoryTopic]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RepositoryTopicEdge {
+ cursor: String!
+ node: RepositoryTopic
+}
+
+enum RepositoryVisibility {
+ PRIVATE
+ PUBLIC
+ INTERNAL
+}
+
+type RepositoryVisibilityChangeDisableAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepositoryVisibilityChangeEnableAuditEntry implements Node, AuditEntry, EnterpriseAuditEntryData, OrganizationAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ enterpriseResourcePath: URI
+ enterpriseSlug: String
+ enterpriseUrl: URI
+ id: ID!
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type RepositoryVulnerabilityAlert implements Node, RepositoryNode {
+ affectedRange: String! @deprecated(reason: "advisory specific fields are being removed from repositoryVulnerabilityAlert objects Use `securityVulnerability.vulnerableVersionRange` instead. Removal on 2019-10-01 UTC.")
+ createdAt: DateTime!
+ dismissReason: String
+ dismissedAt: DateTime
+ dismisser: User
+ externalIdentifier: String @deprecated(reason: "advisory specific fields are being removed from repositoryVulnerabilityAlert objects Use `securityAdvisory.identifiers` instead. Removal on 2019-10-01 UTC.")
+ externalReference: String! @deprecated(reason: "advisory specific fields are being removed from repositoryVulnerabilityAlert objects Use `securityAdvisory.references` instead. Removal on 2019-10-01 UTC.")
+ fixedIn: String @deprecated(reason: "advisory specific fields are being removed from repositoryVulnerabilityAlert objects Use `securityVulnerability.firstPatchedVersion` instead. Removal on 2019-10-01 UTC.")
+ id: ID!
+ packageName: String! @deprecated(reason: "advisory specific fields are being removed from repositoryVulnerabilityAlert objects Use `securityVulnerability.package` instead. Removal on 2019-10-01 UTC.")
+ repository: Repository!
+ securityAdvisory: SecurityAdvisory
+ securityVulnerability: SecurityVulnerability
+ vulnerableManifestFilename: String!
+ vulnerableManifestPath: String!
+ vulnerableRequirements: String
+}
+
+type RepositoryVulnerabilityAlertConnection {
+ edges: [RepositoryVulnerabilityAlertEdge]
+ nodes: [RepositoryVulnerabilityAlert]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type RepositoryVulnerabilityAlertEdge {
+ cursor: String!
+ node: RepositoryVulnerabilityAlert
+}
+
+input RequestReviewsInput {
+ pullRequestId: ID!
+ userIds: [ID!]
+ teamIds: [ID!]
+ union: Boolean
+ clientMutationId: String
+}
+
+type RequestReviewsPayload {
+ clientMutationId: String
+ pullRequest: PullRequest
+ requestedReviewersEdge: UserEdge
+}
+
+union RequestedReviewer = Mannequin | Team | User
+
+input ResolveReviewThreadInput {
+ threadId: ID!
+ clientMutationId: String
+}
+
+type ResolveReviewThreadPayload {
+ clientMutationId: String
+ thread: PullRequestReviewThread
+}
+
+type RestrictedContribution implements Contribution {
+ isRestricted: Boolean!
+ occurredAt: DateTime!
+ resourcePath: URI!
+ url: URI!
+ user: User!
+}
+
+type ReviewDismissalAllowance implements Node {
+ actor: ReviewDismissalAllowanceActor
+ branchProtectionRule: BranchProtectionRule
+ id: ID!
+}
+
+union ReviewDismissalAllowanceActor = Team | User
+
+type ReviewDismissalAllowanceConnection {
+ edges: [ReviewDismissalAllowanceEdge]
+ nodes: [ReviewDismissalAllowance]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ReviewDismissalAllowanceEdge {
+ cursor: String!
+ node: ReviewDismissalAllowance
+}
+
+type ReviewDismissedEvent implements Node, UniformResourceLocatable {
+ actor: Actor
+ createdAt: DateTime!
+ databaseId: Int
+ dismissalMessage: String
+ dismissalMessageHTML: String
+ id: ID!
+ previousReviewState: PullRequestReviewState!
+ pullRequest: PullRequest!
+ pullRequestCommit: PullRequestCommit
+ resourcePath: URI!
+ review: PullRequestReview
+ url: URI!
+}
+
+type ReviewRequest implements Node {
+ databaseId: Int
+ id: ID!
+ pullRequest: PullRequest!
+ requestedReviewer: RequestedReviewer
+}
+
+type ReviewRequestConnection {
+ edges: [ReviewRequestEdge]
+ nodes: [ReviewRequest]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type ReviewRequestEdge {
+ cursor: String!
+ node: ReviewRequest
+}
+
+type ReviewRequestRemovedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ pullRequest: PullRequest!
+ requestedReviewer: RequestedReviewer
+}
+
+type ReviewRequestedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ pullRequest: PullRequest!
+ requestedReviewer: RequestedReviewer
+}
+
+type ReviewStatusHovercardContext implements HovercardContext {
+ message: String!
+ octicon: String!
+}
+
+enum SamlDigestAlgorithm {
+ SHA1
+ SHA256
+ SHA384
+ SHA512
+}
+
+enum SamlSignatureAlgorithm {
+ RSA_SHA1
+ RSA_SHA256
+ RSA_SHA384
+ RSA_SHA512
+}
+
+type SavedReply implements Node {
+ body: String!
+ bodyHTML: HTML!
+ databaseId: Int
+ id: ID!
+ title: String!
+ user: Actor
+}
+
+type SavedReplyConnection {
+ edges: [SavedReplyEdge]
+ nodes: [SavedReply]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type SavedReplyEdge {
+ cursor: String!
+ node: SavedReply
+}
+
+input SavedReplyOrder {
+ field: SavedReplyOrderField!
+ direction: OrderDirection!
+}
+
+enum SavedReplyOrderField {
+ UPDATED_AT
+}
+
+union SearchResultItem = App | Issue | MarketplaceListing | Organization | PullRequest | Repository | User
+
+type SearchResultItemConnection {
+ codeCount: Int!
+ edges: [SearchResultItemEdge]
+ issueCount: Int!
+ nodes: [SearchResultItem]
+ pageInfo: PageInfo!
+ repositoryCount: Int!
+ userCount: Int!
+ wikiCount: Int!
+}
+
+type SearchResultItemEdge {
+ cursor: String!
+ node: SearchResultItem
+ textMatches: [TextMatch]
+}
+
+enum SearchType {
+ ISSUE
+ REPOSITORY
+ USER
+}
+
+type SecurityAdvisory implements Node {
+ databaseId: Int
+ description: String!
+ ghsaId: String!
+ id: ID!
+ identifiers: [SecurityAdvisoryIdentifier!]!
+ origin: String!
+ publishedAt: DateTime!
+ references: [SecurityAdvisoryReference!]!
+ severity: SecurityAdvisorySeverity!
+ summary: String!
+ updatedAt: DateTime!
+ vulnerabilities(
+ orderBy: SecurityVulnerabilityOrder = {field: UPDATED_AT, direction: DESC}
+ ecosystem: SecurityAdvisoryEcosystem
+ package: String
+ severities: [SecurityAdvisorySeverity!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): SecurityVulnerabilityConnection!
+ withdrawnAt: DateTime
+}
+
+type SecurityAdvisoryConnection {
+ edges: [SecurityAdvisoryEdge]
+ nodes: [SecurityAdvisory]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+enum SecurityAdvisoryEcosystem {
+ RUBYGEMS
+ NPM
+ PIP
+ MAVEN
+ NUGET
+ COMPOSER
+}
+
+type SecurityAdvisoryEdge {
+ cursor: String!
+ node: SecurityAdvisory
+}
+
+type SecurityAdvisoryIdentifier {
+ type: String!
+ value: String!
+}
+
+input SecurityAdvisoryIdentifierFilter {
+ type: SecurityAdvisoryIdentifierType!
+ value: String!
+}
+
+enum SecurityAdvisoryIdentifierType {
+ CVE
+ GHSA
+}
+
+input SecurityAdvisoryOrder {
+ field: SecurityAdvisoryOrderField!
+ direction: OrderDirection!
+}
+
+enum SecurityAdvisoryOrderField {
+ PUBLISHED_AT
+ UPDATED_AT
+}
+
+type SecurityAdvisoryPackage {
+ ecosystem: SecurityAdvisoryEcosystem!
+ name: String!
+}
+
+type SecurityAdvisoryPackageVersion {
+ identifier: String!
+}
+
+type SecurityAdvisoryReference {
+ url: URI!
+}
+
+enum SecurityAdvisorySeverity {
+ LOW
+ MODERATE
+ HIGH
+ CRITICAL
+}
+
+type SecurityVulnerability {
+ advisory: SecurityAdvisory!
+ firstPatchedVersion: SecurityAdvisoryPackageVersion
+ package: SecurityAdvisoryPackage!
+ severity: SecurityAdvisorySeverity!
+ updatedAt: DateTime!
+ vulnerableVersionRange: String!
+}
+
+type SecurityVulnerabilityConnection {
+ edges: [SecurityVulnerabilityEdge]
+ nodes: [SecurityVulnerability]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type SecurityVulnerabilityEdge {
+ cursor: String!
+ node: SecurityVulnerability
+}
+
+input SecurityVulnerabilityOrder {
+ field: SecurityVulnerabilityOrderField!
+ direction: OrderDirection!
+}
+
+enum SecurityVulnerabilityOrderField {
+ UPDATED_AT
+}
+
+type SmimeSignature implements GitSignature {
+ email: String!
+ isValid: Boolean!
+ payload: String!
+ signature: String!
+ signer: User
+ state: GitSignatureState!
+ wasSignedByGitHub: Boolean!
+}
+
+interface Sponsorable {
+ sponsorsListing: SponsorsListing
+ sponsorshipsAsMaintainer(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ includePrivate: Boolean = false
+ orderBy: SponsorshipOrder
+ ): SponsorshipConnection!
+ sponsorshipsAsSponsor(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: SponsorshipOrder
+ ): SponsorshipConnection!
+}
+
+type SponsorsListing implements Node {
+ createdAt: DateTime!
+ fullDescription: String!
+ fullDescriptionHTML: HTML!
+ id: ID!
+ name: String!
+ shortDescription: String!
+ slug: String!
+ tiers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: SponsorsTierOrder = {field: MONTHLY_PRICE_IN_CENTS, direction: ASC}
+ ): SponsorsTierConnection
+}
+
+type SponsorsTier implements Node {
+ adminInfo: SponsorsTierAdminInfo
+ createdAt: DateTime!
+ description: String!
+ descriptionHTML: HTML!
+ id: ID!
+ monthlyPriceInCents: Int!
+ monthlyPriceInDollars: Int!
+ name: String!
+ sponsorsListing: SponsorsListing!
+ updatedAt: DateTime!
+}
+
+type SponsorsTierAdminInfo {
+ sponsorships(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ includePrivate: Boolean = false
+ orderBy: SponsorshipOrder
+ ): SponsorshipConnection!
+}
+
+type SponsorsTierConnection {
+ edges: [SponsorsTierEdge]
+ nodes: [SponsorsTier]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type SponsorsTierEdge {
+ cursor: String!
+ node: SponsorsTier
+}
+
+input SponsorsTierOrder {
+ field: SponsorsTierOrderField!
+ direction: OrderDirection!
+}
+
+enum SponsorsTierOrderField {
+ CREATED_AT
+ MONTHLY_PRICE_IN_CENTS
+}
+
+type Sponsorship implements Node {
+ createdAt: DateTime!
+ id: ID!
+ maintainer: User! @deprecated(reason: "`Sponsorship.maintainer` will be removed. Use `Sponsorship.sponsorable` instead. Removal on 2020-04-01 UTC.")
+ privacyLevel: SponsorshipPrivacy!
+ sponsor: User
+ sponsorable: Sponsorable!
+ tier: SponsorsTier
+}
+
+type SponsorshipConnection {
+ edges: [SponsorshipEdge]
+ nodes: [Sponsorship]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type SponsorshipEdge {
+ cursor: String!
+ node: Sponsorship
+}
+
+input SponsorshipOrder {
+ field: SponsorshipOrderField!
+ direction: OrderDirection!
+}
+
+enum SponsorshipOrderField {
+ CREATED_AT
+}
+
+enum SponsorshipPrivacy {
+ PUBLIC
+ PRIVATE
+}
+
+input StarOrder {
+ field: StarOrderField!
+ direction: OrderDirection!
+}
+
+enum StarOrderField {
+ STARRED_AT
+}
+
+type StargazerConnection {
+ edges: [StargazerEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type StargazerEdge {
+ cursor: String!
+ node: User!
+ starredAt: DateTime!
+}
+
+interface Starrable {
+ id: ID!
+ stargazers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: StarOrder
+ ): StargazerConnection!
+ viewerHasStarred: Boolean!
+}
+
+type StarredRepositoryConnection {
+ edges: [StarredRepositoryEdge]
+ nodes: [Repository]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type StarredRepositoryEdge {
+ cursor: String!
+ node: Repository!
+ starredAt: DateTime!
+}
+
+type Status implements Node {
+ commit: Commit
+ context(
+ name: String!
+ ): StatusContext
+ contexts: [StatusContext!]!
+ id: ID!
+ state: StatusState!
+}
+
+type StatusContext implements Node {
+ avatarUrl(
+ size: Int = 40
+ ): URI
+ commit: Commit
+ context: String!
+ createdAt: DateTime!
+ creator: Actor
+ description: String
+ id: ID!
+ state: StatusState!
+ targetUrl: URI
+}
+
+enum StatusState {
+ EXPECTED
+ ERROR
+ FAILURE
+ PENDING
+ SUCCESS
+}
+
+scalar String
+
+input SubmitPullRequestReviewInput {
+ pullRequestReviewId: ID!
+ event: PullRequestReviewEvent!
+ body: String
+ clientMutationId: String
+}
+
+type SubmitPullRequestReviewPayload {
+ clientMutationId: String
+ pullRequestReview: PullRequestReview
+}
+
+interface Subscribable {
+ id: ID!
+ viewerCanSubscribe: Boolean!
+ viewerSubscription: SubscriptionState
+}
+
+type SubscribedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ subscribable: Subscribable!
+}
+
+enum SubscriptionState {
+ UNSUBSCRIBED
+ SUBSCRIBED
+ IGNORED
+}
+
+type SuggestedReviewer {
+ isAuthor: Boolean!
+ isCommenter: Boolean!
+ reviewer: User!
+}
+
+type Tag implements Node, GitObject {
+ abbreviatedOid: String!
+ commitResourcePath: URI!
+ commitUrl: URI!
+ id: ID!
+ message: String
+ name: String!
+ oid: GitObjectID!
+ repository: Repository!
+ tagger: GitActor
+ target: GitObject!
+}
+
+type Team implements Node, Subscribable, MemberStatusable {
+ ancestors(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): TeamConnection!
+ avatarUrl(
+ size: Int = 400
+ ): URI
+ childTeams(
+ orderBy: TeamOrder
+ userLogins: [String!]
+ immediateOnly: Boolean = true
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): TeamConnection!
+ combinedSlug: String!
+ createdAt: DateTime!
+ description: String
+ discussion(
+ number: Int!
+ ): TeamDiscussion
+ discussions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ isPinned: Boolean
+ orderBy: TeamDiscussionOrder
+ ): TeamDiscussionConnection!
+ discussionsResourcePath: URI!
+ discussionsUrl: URI!
+ editTeamResourcePath: URI!
+ editTeamUrl: URI!
+ id: ID!
+ invitations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): OrganizationInvitationConnection
+ memberStatuses(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: UserStatusOrder = {field: UPDATED_AT, direction: DESC}
+ ): UserStatusConnection!
+ members(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ membership: TeamMembershipType = ALL
+ role: TeamMemberRole
+ orderBy: TeamMemberOrder
+ ): TeamMemberConnection!
+ membersResourcePath: URI!
+ membersUrl: URI!
+ name: String!
+ newTeamResourcePath: URI!
+ newTeamUrl: URI!
+ organization: Organization!
+ parentTeam: Team
+ privacy: TeamPrivacy!
+ repositories(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ orderBy: TeamRepositoryOrder
+ ): TeamRepositoryConnection!
+ repositoriesResourcePath: URI!
+ repositoriesUrl: URI!
+ resourcePath: URI!
+ slug: String!
+ teamsResourcePath: URI!
+ teamsUrl: URI!
+ updatedAt: DateTime!
+ url: URI!
+ viewerCanAdminister: Boolean!
+ viewerCanSubscribe: Boolean!
+ viewerSubscription: SubscriptionState
+}
+
+type TeamAddMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, TeamAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ isLdapMapped: Boolean
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ team: Team
+ teamName: String
+ teamResourcePath: URI
+ teamUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type TeamAddRepositoryAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData, TeamAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ isLdapMapped: Boolean
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ team: Team
+ teamName: String
+ teamResourcePath: URI
+ teamUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+interface TeamAuditEntryData {
+ team: Team
+ teamName: String
+ teamResourcePath: URI
+ teamUrl: URI
+}
+
+type TeamChangeParentTeamAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, TeamAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ isLdapMapped: Boolean
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ parentTeam: Team
+ parentTeamName: String
+ parentTeamNameWas: String
+ parentTeamResourcePath: URI
+ parentTeamUrl: URI
+ parentTeamWas: Team
+ parentTeamWasResourcePath: URI
+ parentTeamWasUrl: URI
+ team: Team
+ teamName: String
+ teamResourcePath: URI
+ teamUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type TeamConnection {
+ edges: [TeamEdge]
+ nodes: [Team]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type TeamDiscussion implements Node, Comment, Deletable, Reactable, Subscribable, UniformResourceLocatable, Updatable, UpdatableComment {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ bodyVersion: String!
+ comments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: TeamDiscussionCommentOrder
+ fromComment: Int
+ ): TeamDiscussionCommentConnection!
+ commentsResourcePath: URI!
+ commentsUrl: URI!
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ editor: Actor
+ id: ID!
+ includesCreatedEdit: Boolean!
+ isPinned: Boolean!
+ isPrivate: Boolean!
+ lastEditedAt: DateTime
+ number: Int!
+ publishedAt: DateTime
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ resourcePath: URI!
+ team: Team!
+ title: String!
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanDelete: Boolean!
+ viewerCanPin: Boolean!
+ viewerCanReact: Boolean!
+ viewerCanSubscribe: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+ viewerSubscription: SubscriptionState
+}
+
+type TeamDiscussionComment implements Node, Comment, Deletable, Reactable, UniformResourceLocatable, Updatable, UpdatableComment {
+ author: Actor
+ authorAssociation: CommentAuthorAssociation!
+ body: String!
+ bodyHTML: HTML!
+ bodyText: String!
+ bodyVersion: String!
+ createdAt: DateTime!
+ createdViaEmail: Boolean!
+ databaseId: Int
+ discussion: TeamDiscussion!
+ editor: Actor
+ id: ID!
+ includesCreatedEdit: Boolean!
+ lastEditedAt: DateTime
+ number: Int!
+ publishedAt: DateTime
+ reactionGroups: [ReactionGroup!]
+ reactions(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ content: ReactionContent
+ orderBy: ReactionOrder
+ ): ReactionConnection!
+ resourcePath: URI!
+ updatedAt: DateTime!
+ url: URI!
+ userContentEdits(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): UserContentEditConnection
+ viewerCanDelete: Boolean!
+ viewerCanReact: Boolean!
+ viewerCanUpdate: Boolean!
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+ viewerDidAuthor: Boolean!
+}
+
+type TeamDiscussionCommentConnection {
+ edges: [TeamDiscussionCommentEdge]
+ nodes: [TeamDiscussionComment]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type TeamDiscussionCommentEdge {
+ cursor: String!
+ node: TeamDiscussionComment
+}
+
+input TeamDiscussionCommentOrder {
+ field: TeamDiscussionCommentOrderField!
+ direction: OrderDirection!
+}
+
+enum TeamDiscussionCommentOrderField {
+ NUMBER
+}
+
+type TeamDiscussionConnection {
+ edges: [TeamDiscussionEdge]
+ nodes: [TeamDiscussion]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type TeamDiscussionEdge {
+ cursor: String!
+ node: TeamDiscussion
+}
+
+input TeamDiscussionOrder {
+ field: TeamDiscussionOrderField!
+ direction: OrderDirection!
+}
+
+enum TeamDiscussionOrderField {
+ CREATED_AT
+}
+
+type TeamEdge {
+ cursor: String!
+ node: Team
+}
+
+type TeamMemberConnection {
+ edges: [TeamMemberEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type TeamMemberEdge {
+ cursor: String!
+ memberAccessResourcePath: URI!
+ memberAccessUrl: URI!
+ node: User!
+ role: TeamMemberRole!
+}
+
+input TeamMemberOrder {
+ field: TeamMemberOrderField!
+ direction: OrderDirection!
+}
+
+enum TeamMemberOrderField {
+ LOGIN
+ CREATED_AT
+}
+
+enum TeamMemberRole {
+ MAINTAINER
+ MEMBER
+}
+
+enum TeamMembershipType {
+ IMMEDIATE
+ CHILD_TEAM
+ ALL
+}
+
+input TeamOrder {
+ field: TeamOrderField!
+ direction: OrderDirection!
+}
+
+enum TeamOrderField {
+ NAME
+}
+
+enum TeamPrivacy {
+ SECRET
+ VISIBLE
+}
+
+type TeamRemoveMemberAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, TeamAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ isLdapMapped: Boolean
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ team: Team
+ teamName: String
+ teamResourcePath: URI
+ teamUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type TeamRemoveRepositoryAuditEntry implements Node, AuditEntry, OrganizationAuditEntryData, RepositoryAuditEntryData, TeamAuditEntryData {
+ action: String!
+ actor: AuditEntryActor
+ actorIp: String
+ actorLocation: ActorLocation
+ actorLogin: String
+ actorResourcePath: URI
+ actorUrl: URI
+ createdAt: PreciseDateTime!
+ id: ID!
+ isLdapMapped: Boolean
+ operationType: OperationType
+ organization: Organization
+ organizationName: String
+ organizationResourcePath: URI
+ organizationUrl: URI
+ repository: Repository
+ repositoryName: String
+ repositoryResourcePath: URI
+ repositoryUrl: URI
+ team: Team
+ teamName: String
+ teamResourcePath: URI
+ teamUrl: URI
+ user: User
+ userLogin: String
+ userResourcePath: URI
+ userUrl: URI
+}
+
+type TeamRepositoryConnection {
+ edges: [TeamRepositoryEdge]
+ nodes: [Repository]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type TeamRepositoryEdge {
+ cursor: String!
+ node: Repository!
+ permission: RepositoryPermission!
+}
+
+input TeamRepositoryOrder {
+ field: TeamRepositoryOrderField!
+ direction: OrderDirection!
+}
+
+enum TeamRepositoryOrderField {
+ CREATED_AT
+ UPDATED_AT
+ PUSHED_AT
+ NAME
+ PERMISSION
+ STARGAZERS
+}
+
+enum TeamRole {
+ ADMIN
+ MEMBER
+}
+
+type TextMatch {
+ fragment: String!
+ highlights: [TextMatchHighlight!]!
+ property: String!
+}
+
+type TextMatchHighlight {
+ beginIndice: Int!
+ endIndice: Int!
+ text: String!
+}
+
+type Topic implements Node, Starrable {
+ id: ID!
+ name: String!
+ relatedTopics(
+ first: Int = 3
+ ): [Topic!]!
+ stargazers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: StarOrder
+ ): StargazerConnection!
+ viewerHasStarred: Boolean!
+}
+
+interface TopicAuditEntryData {
+ topic: Topic
+ topicName: String
+}
+
+type TopicConnection {
+ edges: [TopicEdge]
+ nodes: [Topic]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type TopicEdge {
+ cursor: String!
+ node: Topic
+}
+
+enum TopicSuggestionDeclineReason {
+ NOT_RELEVANT
+ TOO_SPECIFIC
+ PERSONAL_PREFERENCE
+ TOO_GENERAL
+}
+
+input TransferIssueInput {
+ issueId: ID!
+ repositoryId: ID!
+ clientMutationId: String
+}
+
+type TransferIssuePayload {
+ clientMutationId: String
+ issue: Issue
+}
+
+type TransferredEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ fromRepository: Repository
+ id: ID!
+ issue: Issue!
+}
+
+type Tree implements Node, GitObject {
+ abbreviatedOid: String!
+ commitResourcePath: URI!
+ commitUrl: URI!
+ entries: [TreeEntry!]
+ id: ID!
+ oid: GitObjectID!
+ repository: Repository!
+}
+
+type TreeEntry {
+ mode: Int!
+ name: String!
+ object: GitObject
+ oid: GitObjectID!
+ repository: Repository!
+ type: String!
+}
+
+scalar URI
+
+input UnarchiveRepositoryInput {
+ repositoryId: ID!
+ clientMutationId: String
+}
+
+type UnarchiveRepositoryPayload {
+ clientMutationId: String
+ repository: Repository
+}
+
+type UnassignedEvent implements Node {
+ actor: Actor
+ assignable: Assignable!
+ assignee: Assignee
+ createdAt: DateTime!
+ id: ID!
+ user: User @deprecated(reason: "Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC.")
+}
+
+input UnfollowUserInput {
+ userId: ID!
+ clientMutationId: String
+}
+
+type UnfollowUserPayload {
+ clientMutationId: String
+ user: User
+}
+
+interface UniformResourceLocatable {
+ resourcePath: URI!
+ url: URI!
+}
+
+type UnknownSignature implements GitSignature {
+ email: String!
+ isValid: Boolean!
+ payload: String!
+ signature: String!
+ signer: User
+ state: GitSignatureState!
+ wasSignedByGitHub: Boolean!
+}
+
+type UnlabeledEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ label: Label!
+ labelable: Labelable!
+}
+
+input UnlinkRepositoryFromProjectInput {
+ projectId: ID!
+ repositoryId: ID!
+ clientMutationId: String
+}
+
+type UnlinkRepositoryFromProjectPayload {
+ clientMutationId: String
+ project: Project
+ repository: Repository
+}
+
+input UnlockLockableInput {
+ lockableId: ID!
+ clientMutationId: String
+}
+
+type UnlockLockablePayload {
+ actor: Actor
+ clientMutationId: String
+ unlockedRecord: Lockable
+}
+
+type UnlockedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ lockable: Lockable!
+}
+
+input UnmarkIssueAsDuplicateInput {
+ duplicateId: ID!
+ canonicalId: ID!
+ clientMutationId: String
+}
+
+type UnmarkIssueAsDuplicatePayload {
+ clientMutationId: String
+ duplicate: IssueOrPullRequest
+}
+
+input UnminimizeCommentInput {
+ subjectId: ID!
+ clientMutationId: String
+}
+
+input UnpinIssueInput {
+ issueId: ID!
+ clientMutationId: String
+}
+
+type UnpinnedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ issue: Issue!
+}
+
+input UnresolveReviewThreadInput {
+ threadId: ID!
+ clientMutationId: String
+}
+
+type UnresolveReviewThreadPayload {
+ clientMutationId: String
+ thread: PullRequestReviewThread
+}
+
+type UnsubscribedEvent implements Node {
+ actor: Actor
+ createdAt: DateTime!
+ id: ID!
+ subscribable: Subscribable!
+}
+
+interface Updatable {
+ viewerCanUpdate: Boolean!
+}
+
+interface UpdatableComment {
+ viewerCannotUpdateReasons: [CommentCannotUpdateReason!]!
+}
+
+input UpdateBranchProtectionRuleInput {
+ branchProtectionRuleId: ID!
+ pattern: String
+ requiresApprovingReviews: Boolean
+ requiredApprovingReviewCount: Int
+ requiresCommitSignatures: Boolean
+ isAdminEnforced: Boolean
+ requiresStatusChecks: Boolean
+ requiresStrictStatusChecks: Boolean
+ requiresCodeOwnerReviews: Boolean
+ dismissesStaleReviews: Boolean
+ restrictsReviewDismissals: Boolean
+ reviewDismissalActorIds: [ID!]
+ restrictsPushes: Boolean
+ pushActorIds: [ID!]
+ requiredStatusCheckContexts: [String!]
+ clientMutationId: String
+}
+
+type UpdateBranchProtectionRulePayload {
+ branchProtectionRule: BranchProtectionRule
+ clientMutationId: String
+}
+
+input UpdateEnterpriseActionExecutionCapabilitySettingInput {
+ enterpriseId: ID!
+ capability: ActionExecutionCapabilitySetting!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseActionExecutionCapabilitySettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseAdministratorRoleInput {
+ enterpriseId: ID!
+ login: String!
+ role: EnterpriseAdministratorRole!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseAdministratorRolePayload {
+ clientMutationId: String
+ message: String
+}
+
+input UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseDefaultRepositoryPermissionSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseDefaultRepositoryPermissionSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseDefaultRepositoryPermissionSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanCreateRepositoriesSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseMembersCanCreateRepositoriesSettingValue
+ membersCanCreateRepositoriesPolicyEnabled: Boolean
+ membersCanCreatePublicRepositories: Boolean
+ membersCanCreatePrivateRepositories: Boolean
+ membersCanCreateInternalRepositories: Boolean
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanDeleteIssuesSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanDeleteIssuesSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanMakePurchasesSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseMembersCanMakePurchasesSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanMakePurchasesSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseOrganizationProjectsSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseOrganizationProjectsSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseProfileInput {
+ enterpriseId: ID!
+ name: String
+ description: String
+ websiteUrl: String
+ location: String
+ clientMutationId: String
+}
+
+type UpdateEnterpriseProfilePayload {
+ clientMutationId: String
+ enterprise: Enterprise
+}
+
+input UpdateEnterpriseRepositoryProjectsSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseRepositoryProjectsSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseTeamDiscussionsSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledDisabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseTeamDiscussionsSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput {
+ enterpriseId: ID!
+ settingValue: EnterpriseEnabledSettingValue!
+ clientMutationId: String
+}
+
+type UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload {
+ clientMutationId: String
+ enterprise: Enterprise
+ message: String
+}
+
+input UpdateIssueCommentInput {
+ id: ID!
+ body: String!
+ clientMutationId: String
+}
+
+type UpdateIssueCommentPayload {
+ clientMutationId: String
+ issueComment: IssueComment
+}
+
+input UpdateIssueInput {
+ id: ID!
+ title: String
+ body: String
+ assigneeIds: [ID!]
+ milestoneId: ID
+ labelIds: [ID!]
+ state: IssueState
+ projectIds: [ID!]
+ clientMutationId: String
+}
+
+type UpdateIssuePayload {
+ actor: Actor
+ clientMutationId: String
+ issue: Issue
+}
+
+input UpdateProjectCardInput {
+ projectCardId: ID!
+ isArchived: Boolean
+ note: String
+ clientMutationId: String
+}
+
+type UpdateProjectCardPayload {
+ clientMutationId: String
+ projectCard: ProjectCard
+}
+
+input UpdateProjectColumnInput {
+ projectColumnId: ID!
+ name: String!
+ clientMutationId: String
+}
+
+type UpdateProjectColumnPayload {
+ clientMutationId: String
+ projectColumn: ProjectColumn
+}
+
+input UpdateProjectInput {
+ projectId: ID!
+ name: String
+ body: String
+ state: ProjectState
+ public: Boolean
+ clientMutationId: String
+}
+
+type UpdateProjectPayload {
+ clientMutationId: String
+ project: Project
+}
+
+input UpdatePullRequestInput {
+ pullRequestId: ID!
+ baseRefName: String
+ title: String
+ body: String
+ state: PullRequestUpdateState
+ maintainerCanModify: Boolean
+ assigneeIds: [ID!]
+ milestoneId: ID
+ labelIds: [ID!]
+ projectIds: [ID!]
+ clientMutationId: String
+}
+
+type UpdatePullRequestPayload {
+ actor: Actor
+ clientMutationId: String
+ pullRequest: PullRequest
+}
+
+input UpdatePullRequestReviewCommentInput {
+ pullRequestReviewCommentId: ID!
+ body: String!
+ clientMutationId: String
+}
+
+type UpdatePullRequestReviewCommentPayload {
+ clientMutationId: String
+ pullRequestReviewComment: PullRequestReviewComment
+}
+
+input UpdatePullRequestReviewInput {
+ pullRequestReviewId: ID!
+ body: String!
+ clientMutationId: String
+}
+
+type UpdatePullRequestReviewPayload {
+ clientMutationId: String
+ pullRequestReview: PullRequestReview
+}
+
+input UpdateRefInput {
+ refId: ID!
+ oid: GitObjectID!
+ force: Boolean = false
+ clientMutationId: String
+}
+
+type UpdateRefPayload {
+ clientMutationId: String
+ ref: Ref
+}
+
+input UpdateRepositoryInput {
+ repositoryId: ID!
+ name: String
+ description: String
+ template: Boolean
+ homepageUrl: URI
+ hasWikiEnabled: Boolean
+ hasIssuesEnabled: Boolean
+ hasProjectsEnabled: Boolean
+ clientMutationId: String
+}
+
+type UpdateRepositoryPayload {
+ clientMutationId: String
+ repository: Repository
+}
+
+input UpdateSubscriptionInput {
+ subscribableId: ID!
+ state: SubscriptionState!
+ clientMutationId: String
+}
+
+type UpdateSubscriptionPayload {
+ clientMutationId: String
+ subscribable: Subscribable
+}
+
+input UpdateTeamDiscussionCommentInput {
+ id: ID!
+ body: String!
+ bodyVersion: String
+ clientMutationId: String
+}
+
+type UpdateTeamDiscussionCommentPayload {
+ clientMutationId: String
+ teamDiscussionComment: TeamDiscussionComment
+}
+
+input UpdateTeamDiscussionInput {
+ id: ID!
+ title: String
+ body: String
+ bodyVersion: String
+ pinned: Boolean
+ clientMutationId: String
+}
+
+type UpdateTeamDiscussionPayload {
+ clientMutationId: String
+ teamDiscussion: TeamDiscussion
+}
+
+input UpdateTopicsInput {
+ repositoryId: ID!
+ topicNames: [String!]!
+ clientMutationId: String
+}
+
+type UpdateTopicsPayload {
+ clientMutationId: String
+ invalidTopicNames: [String!]
+ repository: Repository
+}
+
+type User implements Node, Actor, RegistryPackageOwner, RegistryPackageSearch, ProjectOwner, RepositoryOwner, UniformResourceLocatable, ProfileOwner, Sponsorable {
+ anyPinnableItems(
+ type: PinnableItemType
+ ): Boolean!
+ avatarUrl(
+ size: Int
+ ): URI!
+ bio: String
+ bioHTML: HTML!
+ commitComments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): CommitCommentConnection!
+ company: String
+ companyHTML: HTML!
+ contributionsCollection(
+ organizationID: ID
+ from: DateTime
+ to: DateTime
+ ): ContributionsCollection!
+ createdAt: DateTime!
+ databaseId: Int
+ email: String!
+ followers(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): FollowerConnection!
+ following(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): FollowingConnection!
+ gist(
+ name: String!
+ ): Gist
+ gistComments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): GistCommentConnection!
+ gists(
+ privacy: GistPrivacy
+ orderBy: GistOrder
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): GistConnection!
+ hovercard(
+ primarySubjectId: ID
+ ): Hovercard!
+ id: ID!
+ isBountyHunter: Boolean!
+ isCampusExpert: Boolean!
+ isDeveloperProgramMember: Boolean!
+ isEmployee: Boolean!
+ isHireable: Boolean!
+ isSiteAdmin: Boolean!
+ isViewer: Boolean!
+ issueComments(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueCommentConnection!
+ issues(
+ orderBy: IssueOrder
+ labels: [String!]
+ states: [IssueState!]
+ filterBy: IssueFilters
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): IssueConnection!
+ itemShowcase: ProfileItemShowcase!
+ location: String
+ login: String!
+ name: String
+ organization(
+ login: String!
+ ): Organization
+ organizations(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): OrganizationConnection!
+ pinnableItems(
+ types: [PinnableItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PinnableItemConnection!
+ pinnedItems(
+ types: [PinnableItemType!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PinnableItemConnection!
+ pinnedItemsRemaining: Int!
+ pinnedRepositories(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryConnection! @deprecated(reason: "pinnedRepositories will be removed Use ProfileOwner.pinnedItems instead. Removal on 2019-10-01 UTC.")
+ project(
+ number: Int!
+ ): Project
+ projects(
+ orderBy: ProjectOrder
+ search: String
+ states: [ProjectState!]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): ProjectConnection!
+ projectsResourcePath: URI!
+ projectsUrl: URI!
+ publicKeys(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PublicKeyConnection!
+ pullRequests(
+ states: [PullRequestState!]
+ labels: [String!]
+ headRefName: String
+ baseRefName: String
+ orderBy: IssueOrder
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): PullRequestConnection!
+ registryPackages(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ name: String
+ names: [String]
+ repositoryId: ID
+ packageType: RegistryPackageType
+ registryPackageType: String
+ publicOnly: Boolean = false
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageOwner` object instead. Removal on 2020-04-01 UTC.")
+ registryPackagesForQuery(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ query: String
+ packageType: RegistryPackageType
+ ): RegistryPackageConnection! @deprecated(reason: "Renaming GitHub Packages fields and objects. Use the `PackageSearch` object instead. Removal on 2020-04-01 UTC.")
+ repositories(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ isFork: Boolean
+ ): RepositoryConnection!
+ repositoriesContributedTo(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ isLocked: Boolean
+ includeUserRepositories: Boolean
+ contributionTypes: [RepositoryContributionType]
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryConnection!
+ repository(
+ name: String!
+ ): Repository
+ resourcePath: URI!
+ savedReplies(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: SavedReplyOrder = {field: UPDATED_AT, direction: DESC}
+ ): SavedReplyConnection
+ sponsorsListing: SponsorsListing
+ sponsorshipsAsMaintainer(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ includePrivate: Boolean = false
+ orderBy: SponsorshipOrder
+ ): SponsorshipConnection!
+ sponsorshipsAsSponsor(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: SponsorshipOrder
+ ): SponsorshipConnection!
+ starredRepositories(
+ ownedByViewer: Boolean
+ orderBy: StarOrder
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): StarredRepositoryConnection!
+ status: UserStatus
+ topRepositories(
+ after: String
+ before: String
+ first: Int
+ last: Int
+ orderBy: RepositoryOrder!
+ since: DateTime
+ ): RepositoryConnection!
+ updatedAt: DateTime!
+ url: URI!
+ viewerCanChangePinnedItems: Boolean!
+ viewerCanCreateProjects: Boolean!
+ viewerCanFollow: Boolean!
+ viewerIsFollowing: Boolean!
+ watching(
+ privacy: RepositoryPrivacy
+ orderBy: RepositoryOrder
+ affiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR, ORGANIZATION_MEMBER]
+ ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR]
+ isLocked: Boolean
+ after: String
+ before: String
+ first: Int
+ last: Int
+ ): RepositoryConnection!
+ websiteUrl: URI
+}
+
+enum UserBlockDuration {
+ ONE_DAY
+ THREE_DAYS
+ ONE_WEEK
+ ONE_MONTH
+ PERMANENT
+}
+
+type UserBlockedEvent implements Node {
+ actor: Actor
+ blockDuration: UserBlockDuration!
+ createdAt: DateTime!
+ id: ID!
+ subject: User
+}
+
+type UserConnection {
+ edges: [UserEdge]
+ nodes: [User]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type UserContentEdit implements Node {
+ createdAt: DateTime!
+ deletedAt: DateTime
+ deletedBy: Actor
+ diff: String
+ editedAt: DateTime!
+ editor: Actor
+ id: ID!
+ updatedAt: DateTime!
+}
+
+type UserContentEditConnection {
+ edges: [UserContentEditEdge]
+ nodes: [UserContentEdit]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type UserContentEditEdge {
+ cursor: String!
+ node: UserContentEdit
+}
+
+type UserEdge {
+ cursor: String!
+ node: User
+}
+
+type UserStatus implements Node {
+ createdAt: DateTime!
+ emoji: String
+ emojiHTML: HTML
+ expiresAt: DateTime
+ id: ID!
+ indicatesLimitedAvailability: Boolean!
+ message: String
+ organization: Organization
+ updatedAt: DateTime!
+ user: User!
+}
+
+type UserStatusConnection {
+ edges: [UserStatusEdge]
+ nodes: [UserStatus]
+ pageInfo: PageInfo!
+ totalCount: Int!
+}
+
+type UserStatusEdge {
+ cursor: String!
+ node: UserStatus
+}
+
+input UserStatusOrder {
+ field: UserStatusOrderField!
+ direction: OrderDirection!
+}
+
+enum UserStatusOrderField {
+ UPDATED_AT
+}
+
+type ViewerHovercardContext implements HovercardContext {
+ message: String!
+ octicon: String!
+ viewer: User!
+}
+
+scalar X509Certificate
+
diff --git a/src/GraphQLParser.Benchmarks/Files/introspectionQuery.graphql b/src/GraphQLParser.Benchmarks/Files/introspectionQuery.graphql
new file mode 100644
index 00000000..6929b3e1
--- /dev/null
+++ b/src/GraphQLParser.Benchmarks/Files/introspectionQuery.graphql
@@ -0,0 +1,98 @@
+query IntrospectionQuery {
+ __schema {
+ queryType { name }
+ mutationType { name }
+ subscriptionType { name }
+ types {
+ ...FullType
+ }
+ directives {
+ name
+ description
+ locations
+ args {
+ ...InputValue
+ }
+ }
+ }
+}
+
+fragment FullType on __Type {
+ kind
+ name
+ description
+ fields(includeDeprecated: true) {
+ name
+ description
+ args {
+ ...InputValue
+ }
+ type {
+ ...TypeRef
+ }
+ isDeprecated
+ deprecationReason
+ directives {
+ name
+ args {
+ name
+ value
+ }
+ }
+ }
+ inputFields {
+ ...InputValue
+ }
+ interfaces {
+ ...TypeRef
+ }
+ enumValues(includeDeprecated: true) {
+ name
+ description
+ isDeprecated
+ deprecationReason
+ }
+ possibleTypes {
+ ...TypeRef
+ }
+}
+
+fragment InputValue on __InputValue {
+ name
+ description
+ type { ...TypeRef }
+ defaultValue
+}
+
+fragment TypeRef on __Type {
+ kind
+ name
+ ofType {
+ kind
+ name
+ ofType {
+ kind
+ name
+ ofType {
+ kind
+ name
+ ofType {
+ kind
+ name
+ ofType {
+ kind
+ name
+ ofType {
+ kind
+ name
+ ofType {
+ kind
+ name
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/GraphQLParser.Benchmarks/Files/kitchenSink.graphql b/src/GraphQLParser.Benchmarks/Files/kitchenSink.graphql
new file mode 100644
index 00000000..7081f858
--- /dev/null
+++ b/src/GraphQLParser.Benchmarks/Files/kitchenSink.graphql
@@ -0,0 +1,50 @@
+query queryName($foo: ComplexType, $site: Site = MOBILE) {
+ whoever123is: node(id: [123, 456]) {
+ id ,
+ ... on User @defer {
+ field2 {
+ id ,
+ alias: field1(first:10, after:$foo,) @include(if: $foo) {
+ id,
+ ...frag
+ }
+ }
+ }
+ ... @skip(unless: $foo) {
+ id
+ }
+ ... {
+ id
+ }
+ }
+}
+
+mutation likeStory {
+ like(story: 123) @defer {
+ story {
+ id
+ }
+ }
+}
+
+subscription StoryLikeSubscription($input: StoryLikeSubscribeInput) {
+ storyLikeSubscribe(input: $input) {
+ story {
+ likers {
+ count
+ }
+ likeSentence {
+ text
+ }
+ }
+ }
+}
+
+fragment frag on Friend {
+ foo(size: $size, bar: $b, obj: {key: ""value""})
+}
+
+{
+ unnamed(truthy: true, falsey: false),
+ query
+}
diff --git a/src/GraphQLParser.Benchmarks/query_with_many_escape_symbols.txt b/src/GraphQLParser.Benchmarks/Files/query_with_many_escape_symbols.graphql
similarity index 100%
rename from src/GraphQLParser.Benchmarks/query_with_many_escape_symbols.txt
rename to src/GraphQLParser.Benchmarks/Files/query_with_many_escape_symbols.graphql
diff --git a/src/GraphQLParser.Benchmarks/GraphQLParser.Benchmarks.Reference.md b/src/GraphQLParser.Benchmarks/GraphQLParser.Benchmarks.Reference.md
deleted file mode 100644
index 820375ca..00000000
--- a/src/GraphQLParser.Benchmarks/GraphQLParser.Benchmarks.Reference.md
+++ /dev/null
@@ -1,145 +0,0 @@
-``` ini
-
-BenchmarkDotNet=v0.12.0, OS=Windows 10.0.14393.3243 (1607/AnniversaryUpdate/Redstone1)
-Intel Core i7-7700 CPU 3.60GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
-Frequency=3515629 Hz, Resolution=284.4441 ns, Timer=TSC
-.NET Core SDK=3.1.100
- [Host] : .NET Core 3.1.0 (CoreCLR 4.700.19.56402, CoreFX 4.700.19.56404), X64 RyuJIT
- DefaultJob : .NET Core 3.1.0 (CoreCLR 4.700.19.56402, CoreFX 4.700.19.56404), X64 RyuJIT
-
-
-```
-
-Baseline (B) to current (C) comparison without cache:
-
-| Method | query | Mean (B) | Mean (C) | Ratio | Allocated (B) | Allocated (C) | Ratio |
-|------- |------- |----------:|----------:|------:|--------------:|--------------:|------:|
-| Parse | Params | 13.911 us | 10.291 us | 0.74 | 18.85 KB | 8.59 KB | 0.46 |
-| Parse | Schema | 30.629 us | 23.741 us | 0.77 | 36.49 KB | 19.09 KB | 0.52 |
-| Parse | Simple | 2.391 us | 1.757 us | 0.73 | 3.58 KB | 1.63 KB | 0.46 |
-
-Baseline (B) to current (C) comparison with cache:
-
-| Method | query | Mean (B) | Mean (C) | Ratio | Allocated (B) | Allocated (C) | Ratio |
-|------- |------- |----------:|----------:|------:|--------------:|--------------:|------:|
-| Parse | Params | 13.911 us | 10.895 us | 0.77 | 18.85 KB | 7.82 KB | 0.41 |
-| Parse | Schema | 30.629 us | 26.577 us | 0.85 | 36.49 KB | 15.66 KB | 0.43 |
-| Parse | Simple | 2.391 us | 1.884 us | 0.78 | 3.58 KB | 1.35 KB | 0.38 |
-
-Baseline (B) to current (C) comparison with concurrent cache:
-
-| Method | query | Mean (B) | Mean (C) | Ratio | Allocated (B) | Allocated (C) | Ratio |
-|------- |------- |----------:|----------:|------:|--------------:|--------------:|------:|
-| Parse | Params | 13.911 us | 11.113 us | 0.80 | 18.85 KB | 7.82 KB | 0.41 |
-| Parse | Schema | 30.629 us | 26.607 us | 0.87 | 36.49 KB | 15.66 KB | 0.43 |
-| Parse | Simple | 2.391 us | 1.989 us | 0.83 | 3.58 KB | 1.35 KB | 0.38 |
-
-___
-
-Baseline (710e1b7):
-
-| Method | query | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------- |------- |----------:|----------:|----------:|-------:|-------:|------:|----------:|
-| Parse | Params | 13.911 us | 0.2186 us | 0.1937 us | 4.6082 | - | - | 18.85 KB |
-| Parse | Schema | 30.629 us | 0.3194 us | 0.2987 us | 8.9111 | 0.0610 | - | 36.49 KB |
-| Parse | Simple | 2.391 us | 0.0257 us | 0.0241 us | 0.8736 | - | - | 3.58 KB |
-
-Working on cache:
-
-| Method | query | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|--------:|-------:|------:|----------:|
-| **Parse** | **Params** | **14.729 us** | **0.2432 us** | **0.2275 us** | **5.3711** | **0.0153** | **-** | **21.98 KB** |
-| Serial | Params | 14.881 us | 0.1291 us | 0.1208 us | 4.6082 | - | - | 18.86 KB |
-| **Parse** | **Schema** | **32.302 us** | **0.3633 us** | **0.3398 us** | **10.1318** | **-** | **-** | **41.52 KB** |
-| Serial | Schema | 34.417 us | 0.2486 us | 0.2076 us | 8.3618 | - | - | 34.33 KB |
-| **Parse** | **Simple** | **2.564 us** | **0.0440 us** | **0.0390 us** | **1.0109** | **-** | **-** | **4.14 KB** |
-| Serial | Simple | 2.638 us | 0.0319 us | 0.0299 us | 0.8392 | - | - | 3.44 KB |
-
-Make `LexerContext` struct and remove `IDisposable`:
-
-| Method | query | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|-------:|-------:|------:|----------:|
-| **Parse** | **Params** | **12.480 us** | **0.0555 us** | **0.0433 us** | **4.4098** | **-** | **-** | **18.07 KB** |
-| Serial | Params | 12.602 us | 0.0860 us | 0.0805 us | 3.6469 | - | - | 14.95 KB |
-| **Parse** | **Schema** | **28.297 us** | **0.1496 us** | **0.1400 us** | **8.6060** | **0.0305** | **-** | **35.23 KB** |
-| Serial | Schema | 30.642 us | 0.6201 us | 0.9469 us | 6.8359 | - | - | 28.04 KB |
-| **Parse** | **Simple** | **2.186 us** | **0.0150 us** | **0.0140 us** | **0.8392** | **-** | **-** | **3.44 KB** |
-| Serial | Simple | 2.270 us | 0.0178 us | 0.0158 us | 0.6676 | - | - | 2.73 KB |
-
-Make `Stack` allocation lazy:
-
-| Method | query | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|-------:|-------:|------:|----------:|
-| **Parse** | **Params** | **12.511 us** | **0.1122 us** | **0.1050 us** | **4.4098** | **-** | **-** | **18.04 KB** |
-| Serial | Params | 12.579 us | 0.0485 us | 0.0405 us | 3.6469 | - | - | 14.92 KB |
-| **Parse** | **Schema** | **28.169 us** | **0.1233 us** | **0.1093 us** | **8.6060** | **0.0916** | **-** | **35.2 KB** |
-| Serial | Schema | 30.041 us | 0.1271 us | 0.1127 us | 6.8359 | - | - | 28.01 KB |
-| **Parse** | **Simple** | **2.195 us** | **0.0532 us** | **0.0653 us** | **0.8316** | **-** | **-** | **3.41 KB** |
-| Serial | Simple | 2.282 us | 0.0208 us | 0.0195 us | 0.6599 | - | - | 2.7 KB |
-
-Avoid `Func` closure allocation:
-
-| Method | query | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|------:|--------:|-------:|-------:|------:|----------:|
-| **Parse** | **Params** | **12.651 us** | **0.0699 us** | **0.0620 us** | **1.00** | **0.00** | **4.2267** | **0.0153** | **-** | **17.29 KB** |
-| Serial | Params | 12.683 us | 0.0965 us | 0.0754 us | 1.00 | 0.01 | 3.4637 | - | - | 14.17 KB |
-| **Parse** | **Schema** | **29.192 us** | **0.3598 us** | **0.3366 us** | **1.00** | **0.00** | **8.1482** | **0.0305** | **-** | **33.33 KB** |
-| Serial | Schema | 30.558 us | 0.2245 us | 0.1990 us | 1.05 | 0.01 | 6.3782 | 0.0610 | - | 26.13 KB |
-| **Parse** | **Simple** | **2.201 us** | **0.0306 us** | **0.0286 us** | **1.00** | **0.00** | **0.7858** | **-** | **-** | **3.22 KB** |
-| Serial | Simple | 2.302 us | 0.0171 us | 0.0160 us | 1.05 | 0.02 | 0.6142 | - | - | 2.52 KB |
-
-Make `GraphQLLocation` struct:
-
-| Method | query | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|------:|--------:|-------:|------:|------:|----------:|
-| **Parse** | **Params** | **11.901 us** | **0.1156 us** | **0.1082 us** | **1.00** | **0.00** | **3.1433** | **-** | **-** | **12.86 KB** |
-| Serial | Params | 12.567 us | 0.1518 us | 0.1346 us | 1.06 | 0.01 | 2.9449 | - | - | 12.09 KB |
-| **Parse** | **Schema** | **26.922 us** | **0.2194 us** | **0.2052 us** | **1.00** | **0.00** | **6.1340** | **-** | **-** | **25.08 KB** |
-| Serial | Schema | 29.734 us | 0.3812 us | 0.3566 us | 1.10 | 0.02 | 5.2795 | - | - | 21.66 KB |
-| **Parse** | **Simple** | **2.062 us** | **0.0275 us** | **0.0244 us** | **1.00** | **0.00** | **0.5798** | **-** | **-** | **2.38 KB** |
-| Serial | Simple | 2.125 us | 0.0188 us | 0.0147 us | 1.03 | 0.01 | 0.5112 | - | - | 2.09 KB |
-
-Make `Token` struct:
-
-| Method | query | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|------:|-------:|------:|------:|----------:|
-| **Parse** | **Params** | **11.358 us** | **0.0581 us** | **0.0515 us** | **1.00** | **2.1820** | **-** | **-** | **8.97 KB** |
-| Serial | Params | 11.988 us | 0.0729 us | 0.0646 us | 1.06 | 1.9989 | - | - | 8.2 KB |
-| **Parse** | **Schema** | **26.159 us** | **0.0621 us** | **0.0581 us** | **1.00** | **4.5776** | **-** | **-** | **18.8 KB** |
-| Serial | Schema | 28.185 us | 0.1395 us | 0.1305 us | 1.08 | 3.7537 | - | - | 15.38 KB |
-| **Parse** | **Simple** | **1.975 us** | **0.0068 us** | **0.0053 us** | **1.00** | **0.4120** | **-** | **-** | **1.69 KB** |
-| Serial | Simple | 2.081 us | 0.0172 us | 0.0161 us | 1.05 | 0.3433 | - | - | 1.41 KB |
-
-Make `ParserContext` struct and avoid closure allocation in `ParseDefinitionsIfNotEOF` (yield):
-
-| Method | query | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|------:|-------:|-------:|------:|----------:|
-| **Parse** | **Params** | **11.378 us** | **0.1056 us** | **0.0936 us** | **1.00** | **2.1667** | **0.0153** | **-** | **8.87 KB** |
-| Serial | Params | 11.619 us | 0.0655 us | 0.0547 us | 1.02 | 1.9684 | - | - | 8.09 KB |
-| **Parse** | **Schema** | **25.675 us** | **0.1323 us** | **0.1238 us** | **1.00** | **4.5776** | **-** | **-** | **18.7 KB** |
-| Serial | Schema | 27.889 us | 0.1265 us | 0.1121 us | 1.09 | 3.7231 | - | - | 15.28 KB |
-| **Parse** | **Simple** | **1.917 us** | **0.0096 us** | **0.0090 us** | **1.00** | **0.3853** | **-** | **-** | **1.59 KB** |
-| Serial | Simple | 2.024 us | 0.0142 us | 0.0125 us | 1.06 | 0.3166 | - | - | 1.3 KB |
-
-Change all `IEnumerable` to `List` to avoid `List.Enumerator` allocations on caller side:
-
-| Method | query | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|------------------ |------- |----------:|----------:|----------:|------:|-------:|------:|------:|----------:|
-| **Parse** | **Params** | **10.235 us** | **0.0286 us** | **0.0267 us** | **1.00** | **2.0905** | **-** | **-** | **8.59 KB** |
-| Serial | Params | 10.743 us | 0.0397 us | 0.0371 us | 1.05 | 1.9073 | - | - | 7.82 KB |
-| **Parse** | **Schema** | **23.523 us** | **0.1073 us** | **0.0896 us** | **1.00** | **4.6692** | **-** | **-** | **19.09 KB** |
-| Serial | Schema | 26.048 us | 0.0814 us | 0.0721 us | 1.11 | 3.8147 | - | - | 15.66 KB |
-| **Parse** | **Simple** | **1.754 us** | **0.0140 us** | **0.0124 us** | **1.00** | **0.3986** | **-** | **-** | **1.63 KB** |
-| Serial | Simple | 1.860 us | 0.0086 us | 0.0076 us | 1.06 | 0.3300 | - | - | 1.35 KB |
-
-| Method | query | Mean | Error | StdDev | Ratio | Gen 0 | Gen 1 | Gen 2 | Allocated |
-|----------- |------- |----------:|----------:|----------:|------:|-------:|------:|------:|----------:|
-| **Parse** | **Params** | **10.271 us** | **0.0408 us** | **0.0382 us** | **1.00** | **2.0905** | **-** | **-** | **8.59 KB** |
-| Serial | Params | 10.808 us | 0.0327 us | 0.0306 us | 1.05 | 1.9073 | - | - | 7.82 KB |
-| Concurrent | Params | 11.038 us | 0.0991 us | 0.0828 us | 1.07 | 1.9073 | - | - | 7.82 KB |
-| **Parse** | **Schema** | **23.688 us** | **0.0536 us** | **0.0501 us** | **1.00** | **4.6692** | **-** | **-** | **19.09 KB** |
-| Serial | Schema | 26.225 us | 0.0865 us | 0.0809 us | 1.11 | 3.8147 | - | - | 15.66 KB |
-| Concurrent | Schema | 26.738 us | 0.1112 us | 0.0986 us | 1.13 | 3.8147 | - | - | 15.66 KB |
-| **Parse** | **Simple** | **1.762 us** | **0.0079 us** | **0.0070 us** | **1.00** | **0.3986** | **-** | **-** | **1.63 KB** |
-| Serial | Simple | 1.893 us | 0.0061 us | 0.0054 us | 1.07 | 0.3300 | - | - | 1.35 KB |
-| Concurrent | Simple | 1.959 us | 0.0069 us | 0.0061 us | 1.11 | 0.3281 | - | - | 1.35 KB |
diff --git a/src/GraphQLParser.Benchmarks/GraphQLParser.Benchmarks.csproj b/src/GraphQLParser.Benchmarks/GraphQLParser.Benchmarks.csproj
index 9973320f..f582d80c 100644
--- a/src/GraphQLParser.Benchmarks/GraphQLParser.Benchmarks.csproj
+++ b/src/GraphQLParser.Benchmarks/GraphQLParser.Benchmarks.csproj
@@ -7,18 +7,11 @@
-
- Always
-
-
+
Always
-
-
-
-
diff --git a/src/GraphQLParser.Benchmarks/LexerBenchmark.cs b/src/GraphQLParser.Benchmarks/LexerBenchmark.cs
deleted file mode 100644
index 4e1e4e33..00000000
--- a/src/GraphQLParser.Benchmarks/LexerBenchmark.cs
+++ /dev/null
@@ -1,94 +0,0 @@
-using System.IO;
-using BenchmarkDotNet.Attributes;
-
-namespace GraphQLParser.Benchmarks
-{
- [MemoryDiagnoser]
- public class LexerBenchmark
- {
- private string _query = null!;
- private const string KITCHEN_SINK = @"
-query queryName($foo: ComplexType, $site: Site = MOBILE) {
- whoever123is: node(id: [123, 456]) {
- id ,
- ... on User @defer {
- field2 {
- id ,
- alias: field1(first:10, after:$foo,) @include(if: $foo) {
- id,
- ...frag
- }
- }
- }
- ... @skip(unless: $foo) {
- id
- }
- ... {
- id
- }
- }
-}
-
-mutation likeStory {
- like(story: 123) @defer {
- story {
- id
- }
- }
-}
-
-subscription StoryLikeSubscription($input: StoryLikeSubscribeInput) {
- storyLikeSubscribe(input: $input) {
- story {
- likers {
- count
- }
- likeSentence {
- text
- }
- }
- }
-}
-
-fragment frag on Friend {
- foo(size: $size, bar: $b, obj: {key: ""value""})
-}
-
-{
- unnamed(truthy: true, falsey: false),
- query
-}";
-
- [GlobalSetup]
- public void GlobalSetup()
- {
- _query = File.ReadAllText("query_with_many_escape_symbols.txt");
- }
-
- [Benchmark]
- public void LexKitchenSink()
- {
- var lexer = new Lexer();
- var source = new Source(KITCHEN_SINK);
- int resetPosition = 0;
- Token token;
- while ((token = lexer.Lex(source, resetPosition)).Kind != TokenKind.EOF)
- {
- resetPosition = token.End;
- }
- }
-
- [Benchmark]
- public void LexQueryWithManyEscapeSymbols()
- {
- var lexer = new Lexer();
- var source = new Source(_query);
- int resetPosition = 0;
- Token token;
- while ((token = lexer.Lex(source, resetPosition)).Kind != TokenKind.EOF)
- {
- resetPosition = token.End;
- }
- }
- }
-}
diff --git a/src/GraphQLParser.Benchmarks/Program.cs b/src/GraphQLParser.Benchmarks/Program.cs
index c5677923..ced8f4da 100644
--- a/src/GraphQLParser.Benchmarks/Program.cs
+++ b/src/GraphQLParser.Benchmarks/Program.cs
@@ -1,55 +1,42 @@
-using BenchmarkDotNet.Running;
using System;
-using System.Linq;
+using System.IO;
using System.Threading;
+using BenchmarkDotNet.Running;
namespace GraphQLParser.Benchmarks
{
internal static class Program
{
+ internal static string ReadGraphQLFile(this string name) => File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory!, "Files", name + ".graphql"));
+
// Call without args for BenchmarkDotNet
// Call with some arbitrary args for any memory profiler
- private static void Main(string[] args)
+ private static void Main(string[] args) => Run(new[] { "args" });
+
+ private static void Run(string[] args)
+ where TBenchmark : IBenchmark, new()
{
if (args.Length == 0)
- BenchmarkRunner.Run();
+ _ = BenchmarkRunner.Run();
else
- RunMemoryProfilerPayload1();
+ RunMemoryProfilerPayload();
}
- private static void RunMemoryProfilerPayload1()
+ private static void RunMemoryProfilerPayload()
+ where TBenchmark : IBenchmark, new()
{
- var bench = new ParserBenchmark();
+ var bench = new TBenchmark();
bench.GlobalSetup();
- var queries = bench.Queries().ToArray();
int count = 0;
while (true)
{
- bench.Concurrent(queries[2]);
+ bench.Run();
Thread.Sleep(10);
- ++count;
- if (count == 500)
- break;
- }
-
- Console.WriteLine("end");
- Console.ReadLine();
- }
-
- private static void RunMemoryProfilerPayload2()
- {
- var bench = new LexerBenchmark();
- bench.GlobalSetup();
-
- while (true)
- {
- bench.LexQueryWithManyEscapeSymbols();
-
- Console.WriteLine("press key");
- Console.ReadLine();
+ if (++count % 100 == 0)
+ Console.ReadLine();
}
}
}