From 38736a6b73da761385b0c75c983a05508e5d3e9a Mon Sep 17 00:00:00 2001 From: Matt Young Date: Thu, 4 Aug 2022 16:50:11 -0400 Subject: [PATCH] [feat] Graph Composition (subgraph / supergraph) docs (#91) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Flat: latest data (2022-07-15T00:05:18.517Z) { "date": "2022-07-15T00:05:18.517Z", "files": [ { "name": "landscape-items-clean.json", "deltaBytes": -415, "source": "https://landscape.cncf.io/data/items.json" }, { "name": "landscape-items.json", "deltaBytes": -209, "source": "https://landscape.cncf.io/data/items.json" } ] } Signed-off-by: Matt Young * Flat: latest data (2022-07-16T00:05:37.097Z) { "date": "2022-07-16T00:05:37.097Z", "files": [ { "name": "landscape-items-clean.json", "deltaBytes": 10943, "source": "https://landscape.cncf.io/data/items.json" }, { "name": "landscape-items.json", "deltaBytes": 9687, "source": "https://landscape.cncf.io/data/items.json" } ] } Signed-off-by: Matt Young * Flat: latest data (2022-07-17T00:04:46.190Z) { "date": "2022-07-17T00:04:46.190Z", "files": [ { "name": "landscape-items-clean.json", "deltaBytes": 248, "source": "https://landscape.cncf.io/data/items.json" }, { "name": "landscape-items.json", "deltaBytes": 54, "source": "https://landscape.cncf.io/data/items.json" } ] } Signed-off-by: Matt Young * Flat: latest data (2022-07-18T00:04:51.054Z) { "date": "2022-07-18T00:04:51.054Z", "files": [ { "name": "landscape-items-clean.json", "deltaBytes": 240, "source": "https://landscape.cncf.io/data/items.json" }, { "name": "landscape-items.json", "deltaBytes": 176, "source": "https://landscape.cncf.io/data/items.json" } ] } Signed-off-by: Matt Young * GraphQL is the source of data mode truth - add landscape-graph-core-schema.gql = put in place sgp extensibility mechanism * https://github.com/cncf/landscape-graph/issues/4 * https://github.com/cncf/landscape-graph/issues/2 * https://github.com/cncf/landscape-graph/issues/42 Signed-off-by: Matt Young * Sub-Graph Packs: data model extensibility Related to: https://github.com/cncf/landscape-graph/issues/2 https://github.com/cncf/landscape-graph/issues/4 Signed-off-by: Matt Young * resources: grandstack blogs Signed-off-by: Matt Young * resources: Cloud Native Application Bundles Related to https://github.com/cncf/landscape-graph/issues/42∑ Signed-off-by: Matt Young * sgp --> sgm, misc docs Signed-off-by: Matt Young * apps/panorama: initial project creation Signed-off-by: Matt Young * apps/panorama: WIP Signed-off-by: Matt Young * apps/panorama: WIP Signed-off-by: Matt Young * add: github.com GraphQL schema SDL https://github.com/octokit/graphql-schema/commit/34d7f06ea7d0e35c43048c1e82e3c654be0220b7 Signed-off-by: Matt Young * [chore] Basic fed2 boilerplate example, references Signed-off-by: Matt Young * [chore] remove Angular sample app prototype Signed-off-by: Matt Young Co-authored-by: flat-data Signed-off-by: Matt Young --- db/A/A.graphql | 9 + db/B/B.graphql | 5 + db/core/landscape-graph-core-schema.graphql | 209 + db/query.graphql | 8 + .../sgm-github/github-schema-official.graphql | 51381 ++++++++++++++++ db/supergraph.yaml | 10 + docs/resources/background-graphql.md | 78 + docs/resources/cnab-contributors.png | Bin 0 -> 147907 bytes .../resources/cnab-oci-format-transparent.png | Bin 0 -> 123144 bytes docs/resources/cnab-oci-format.png | Bin 0 -> 677996 bytes docs/resources/cnab-primer.md | 86 + docs/resources/cnab-spec-pack-dist-app.png | Bin 0 -> 126278 bytes 12 files changed, 51786 insertions(+) create mode 100644 db/A/A.graphql create mode 100644 db/B/B.graphql create mode 100644 db/core/landscape-graph-core-schema.graphql create mode 100644 db/query.graphql create mode 100644 db/scm/sgm-github/github-schema-official.graphql create mode 100644 db/supergraph.yaml create mode 100644 docs/resources/background-graphql.md create mode 100644 docs/resources/cnab-contributors.png create mode 100644 docs/resources/cnab-oci-format-transparent.png create mode 100644 docs/resources/cnab-oci-format.png create mode 100644 docs/resources/cnab-primer.md create mode 100644 docs/resources/cnab-spec-pack-dist-app.png diff --git a/db/A/A.graphql b/db/A/A.graphql new file mode 100644 index 0000000..1bc3c17 --- /dev/null +++ b/db/A/A.graphql @@ -0,0 +1,9 @@ +type Query { + a: A! +} + +type A @key(fields: "k") { + k: Int + v1: Int + v2: String +} diff --git a/db/B/B.graphql b/db/B/B.graphql new file mode 100644 index 0000000..cd15b3c --- /dev/null +++ b/db/B/B.graphql @@ -0,0 +1,5 @@ +type A @key(fields: "k") { + k: Int + v1: Int! + v3: Int +} diff --git a/db/core/landscape-graph-core-schema.graphql b/db/core/landscape-graph-core-schema.graphql new file mode 100644 index 0000000..1ac7872 --- /dev/null +++ b/db/core/landscape-graph-core-schema.graphql @@ -0,0 +1,209 @@ +type Card { + name: someCard + isAProject: Project @relationship(type: "IS_A", direction: OUT) + isAMember: Member @relationship(type: "IS_A", direction: OUT) + inCatCategory: Category @relationship(type: "IN_CAT", direction: OUT) +} + +type Project { + name: someProject + cardIsA: Card @relationship(type: "IS_A", direction: IN) + usesLicense: License @relationship(type: "USES", direction: OUT) + usesLanguage: Language @relationship(type: "USES", direction: OUT) + ownsGitrepo: GitRepo @relationship(type: "OWNS", direction: OUT) + inScopeTagrp: TAGrp @relationship(type: "IN_SCOPE", direction: OUT) + isPlvlPlvl: PLvl @relationship(type: "IS_PLVL", direction: OUT) + inCatCategory: Category @relationship(type: "IN_CAT", direction: OUT) + projroleServed: ProjRole @relationship(type: "SERVED", direction: IN) +} + +type Member { + name: someMember + cardIsA: Card @relationship(type: "IS_A", direction: IN) + isMlvlMlvl: MLvl @relationship(type: "IS_MLVL", direction: OUT) + memberOfEugrp: EUGrp @relationship(type: "MEMBER_OF", direction: OUT) + ownsOrganization: Organization @relationship(type: "OWNS", direction: OUT) + inCatCategory: Category @relationship(type: "IN_CAT", direction: OUT) +} + +type License { + name: someLicense + projectUses: Project @relationship(type: "USES", direction: IN) +} + +type Language { + name: someLanguage + projectUses: Project @relationship(type: "USES", direction: IN) +} + +type GitRepo { + name: someGitRepo + projectOwns: Project @relationship(type: "OWNS", direction: IN) + partOfGitorg: GitOrg @relationship(type: "PART_OF", direction: OUT) + personIsMaintainer: Person @relationship(type: "IS_MAINTAINER", direction: IN) + branchPartOf: Branch @relationship(type: "PART_OF", direction: IN) +} + +type GitOrg { + name: someGitOrg + gitrepoPartOf: GitRepo @relationship(type: "PART_OF", direction: IN) +} + +type TAGrp { + name: someTAGrp + projectInScope: Project @relationship(type: "IN_SCOPE", direction: IN) + tagroleServed: TagRole @relationship(type: "SERVED", direction: IN) +} + +type Person { + name: somePerson + isMaintainerGitrepo: GitRepo @relationship(type: "IS_MAINTAINER", direction: OUT) + authoredCommit: Commit @relationship(type: "AUTHORED", direction: OUT) + reviewedPr: PR @relationship(type: "REVIEWED", direction: OUT) + approvedPr: PR @relationship(type: "APPROVED", direction: OUT) + createdPr: PR @relationship(type: "CREATED", direction: OUT) + hasRoleTagrole: TagRole @relationship(type: "HAS_ROLE", direction: OUT) + hasRoleEurole: EuRole @relationship(type: "HAS_ROLE", direction: OUT) + hasRoleProjrole: ProjRole @relationship(type: "HAS_ROLE", direction: OUT) + hasRoleTocrole: TocRole @relationship(type: "HAS_ROLE", direction: OUT) + isBoardOrganization: Organization @relationship(type: "IS_BOARD", direction: OUT) + isEmployeeInvestor: Investor @relationship(type: "IS_EMPLOYEE", direction: OUT) + postedTweet: Tweet @relationship(type: "POSTED", direction: OUT) + postedBlog: Blog @relationship(type: "POSTED", direction: OUT) + postedLipost: LIPost @relationship(type: "POSTED", direction: OUT) + organizationEmployed: Organization @relationship(type: "EMPLOYED", direction: IN) +} + +type Commit { + name: someCommit + personAuthored: Person @relationship(type: "AUTHORED", direction: IN) + partOfBranch: Branch @relationship(type: "PART_OF", direction: OUT) + prContains: PR @relationship(type: "CONTAINS", direction: IN) +} + +type Branch { + name: someBranch + commitPartOf: Commit @relationship(type: "PART_OF", direction: IN) + partOfGitrepo: GitRepo @relationship(type: "PART_OF", direction: OUT) + prChanged: PR @relationship(type: "CHANGED", direction: IN) +} + +type EUGrp { + name: someEUGrp + memberMemberOf: Member @relationship(type: "MEMBER_OF", direction: IN) + euroleServed: EuRole @relationship(type: "SERVED", direction: IN) +} + +type PR { + name: somePR + personReviewed: Person @relationship(type: "REVIEWED", direction: IN) + personApproved: Person @relationship(type: "APPROVED", direction: IN) + personCreated: Person @relationship(type: "CREATED", direction: IN) + containsCommit: Commit @relationship(type: "CONTAINS", direction: OUT) + changedBranch: Branch @relationship(type: "CHANGED", direction: OUT) +} + +type Category { + name: someCategory + cardInCat: Card @relationship(type: "IN_CAT", direction: IN) + projectInCat: Project @relationship(type: "IN_CAT", direction: IN) + memberInCat: Member @relationship(type: "IN_CAT", direction: IN) +} + +type MLvl { + name: someMLvl + memberIsMlvl: Member @relationship(type: "IS_MLVL", direction: IN) +} + +type PLvl { + name: somePLvl + projectIsPlvl: Project @relationship(type: "IS_PLVL", direction: IN) +} + +type Organization { + name: someOrganization + memberOwns: Member @relationship(type: "OWNS", direction: IN) + personIsBoard: Person @relationship(type: "IS_BOARD", direction: IN) + isSubOrganization: Organization @relationship(type: "IS_SUB", direction: OUT) + organizationIsSub: Organization @relationship(type: "IS_SUB", direction: IN) + operatesInIndustry: Industry @relationship(type: "OPERATES_IN", direction: OUT) + employedPerson: Person @relationship(type: "EMPLOYED", direction: OUT) + hqInCity: City @relationship(type: "HQ_IN", direction: OUT) + fundingFunded: Funding @relationship(type: "FUNDED", direction: IN) +} + +type Industry { + name: someIndustry + organizationOperatesIn: Organization @relationship(type: "OPERATES_IN", direction: IN) +} + +type Investor { + name: someInvestor + personIsEmployee: Person @relationship(type: "IS_EMPLOYEE", direction: IN) + fundedFunding: Funding @relationship(type: "FUNDED", direction: OUT) +} + +type Funding { + name: someFunding + investorFunded: Investor @relationship(type: "FUNDED", direction: IN) + fundedOrganization: Organization @relationship(type: "FUNDED", direction: OUT) +} + +type TagRole { + name: someTagRole + personHasRole: Person @relationship(type: "HAS_ROLE", direction: IN) + servedTagrp: TAGrp @relationship(type: "SERVED", direction: OUT) +} + +type EuRole { + name: someEuRole + personHasRole: Person @relationship(type: "HAS_ROLE", direction: IN) + servedEugrp: EUGrp @relationship(type: "SERVED", direction: OUT) +} + +type ProjRole { + name: someProjRole + personHasRole: Person @relationship(type: "HAS_ROLE", direction: IN) + servedProject: Project @relationship(type: "SERVED", direction: OUT) +} + +type TocRole { + name: someTocRole + personHasRole: Person @relationship(type: "HAS_ROLE", direction: IN) + servedToc: TOC @relationship(type: "SERVED", direction: OUT) +} + +type TOC { + name: TOC + tocroleServed: TocRole @relationship(type: "SERVED", direction: IN) +} + +type City { + name: someCity + organizationHqIn: Organization @relationship(type: "HQ_IN", direction: IN) +} + +type Tweet { + name: someTweet + personPosted: Person @relationship(type: "POSTED", direction: IN) + containsTagHashtag: Hashtag @relationship(type: "CONTAINS_TAG", direction: OUT) +} + +type Blog { + name: someBlog + personPosted: Person @relationship(type: "POSTED", direction: IN) + containsTagHashtag: Hashtag @relationship(type: "CONTAINS_TAG", direction: OUT) +} + +type LIPost { + name: someLIPost + personPosted: Person @relationship(type: "POSTED", direction: IN) + containsTagHashtag: Hashtag @relationship(type: "CONTAINS_TAG", direction: OUT) +} + +type Hashtag { + name: someHashtag + tweetContainsTag: Tweet @relationship(type: "CONTAINS_TAG", direction: IN) + blogContainsTag: Blog @relationship(type: "CONTAINS_TAG", direction: IN) + lipostContainsTag: LIPost @relationship(type: "CONTAINS_TAG", direction: IN) +} diff --git a/db/query.graphql b/db/query.graphql new file mode 100644 index 0000000..e4d5338 --- /dev/null +++ b/db/query.graphql @@ -0,0 +1,8 @@ +{ + a { + __typename + v1 + v2 + v3 + } +} diff --git a/db/scm/sgm-github/github-schema-official.graphql b/db/scm/sgm-github/github-schema-official.graphql new file mode 100644 index 0000000..0105e16 --- /dev/null +++ b/db/scm/sgm-github/github-schema-official.graphql @@ -0,0 +1,51381 @@ +directive @requiredCapabilities(requiredCapabilities: [String!]) on ARGUMENT_DEFINITION | ENUM | ENUM_VALUE | FIELD_DEFINITION | INPUT_FIELD_DEFINITION | INPUT_OBJECT | INTERFACE | OBJECT | SCALAR | UNION + +""" +Autogenerated input type of AbortQueuedMigrations +""" +input AbortQueuedMigrationsInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the organization that is running the migrations. + """ + ownerId: ID! +} + +""" +Autogenerated return type of AbortQueuedMigrations +""" +type AbortQueuedMigrationsPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Did the operation succeed? + """ + success: Boolean +} + +""" +Autogenerated input type of AcceptEnterpriseAdministratorInvitation +""" +input AcceptEnterpriseAdministratorInvitationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the invitation being accepted + """ + invitationId: ID! +} + +""" +Autogenerated return type of AcceptEnterpriseAdministratorInvitation +""" +type AcceptEnterpriseAdministratorInvitationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The invitation that was accepted. + """ + invitation: EnterpriseAdministratorInvitation + + """ + A message confirming the result of accepting an administrator invitation. + """ + message: String +} + +""" +Autogenerated input type of AcceptTopicSuggestion +""" +input AcceptTopicSuggestionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of the suggested topic. + """ + name: String! + + """ + The Node ID of the repository. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of AcceptTopicSuggestion +""" +type AcceptTopicSuggestionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The accepted topic. + """ + topic: Topic +} + +""" +Represents an object which can take actions on GitHub. Typically a User or Bot. +""" +interface Actor { + """ + A URL pointing to the actor's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + The username of the actor. + """ + login: String! + + """ + The HTTP path for this actor. + """ + resourcePath: URI! + + """ + The HTTP URL for this actor. + """ + url: URI! +} + +""" +Location information for an actor +""" +type ActorLocation { + """ + City + """ + city: String + + """ + Country name + """ + country: String + + """ + Country code + """ + countryCode: String + + """ + Region name + """ + region: String + + """ + Region or state code + """ + regionCode: String +} + +""" +The actor's type. +""" +enum ActorType { + """ + Indicates a team actor. + """ + TEAM + + """ + Indicates a user actor. + """ + USER +} + +""" +Autogenerated input type of AddAssigneesToAssignable +""" +input AddAssigneesToAssignableInput { + """ + The id of the assignable object to add assignees to. + """ + assignableId: ID! + + """ + The id of users to add as assignees. + """ + assigneeIds: [ID!]! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated return type of AddAssigneesToAssignable +""" +type AddAssigneesToAssignablePayload { + """ + The item that was assigned. + """ + assignable: Assignable + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of AddComment +""" +input AddCommentInput { + """ + The contents of the comment. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the subject to modify. + """ + subjectId: ID! +} + +""" +Autogenerated return type of AddComment +""" +type AddCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The edge from the subject's comment connection. + """ + commentEdge: IssueCommentEdge + + """ + The subject + """ + subject: Node + + """ + The edge from the subject's timeline connection. + """ + timelineEdge: IssueTimelineItemEdge +} + +""" +Autogenerated input type of AddDiscussionComment +""" +input AddDiscussionCommentInput { + """ + The contents of the comment. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion to comment on. + """ + discussionId: ID! + + """ + The Node ID of the discussion comment within this discussion to reply to. + """ + replyToId: ID +} + +""" +Autogenerated return type of AddDiscussionComment +""" +type AddDiscussionCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The newly created discussion comment. + """ + comment: DiscussionComment +} + +""" +Autogenerated input type of AddDiscussionPollVote +""" +input AddDiscussionPollVoteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion poll option to vote for. + """ + pollOptionId: ID! +} + +""" +Autogenerated return type of AddDiscussionPollVote +""" +type AddDiscussionPollVotePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The poll option that a vote was added to. + """ + pollOption: DiscussionPollOption +} + +""" +Autogenerated input type of AddEnterpriseSupportEntitlement +""" +input AddEnterpriseSupportEntitlementInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Enterprise which the admin belongs to. + """ + enterpriseId: ID! + + """ + The login of a member who will receive the support entitlement. + """ + login: String! +} + +""" +Autogenerated return type of AddEnterpriseSupportEntitlement +""" +type AddEnterpriseSupportEntitlementPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A message confirming the result of adding the support entitlement. + """ + message: String +} + +""" +Autogenerated input type of AddLabelsToLabelable +""" +input AddLabelsToLabelableInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ids of the labels to add. + """ + labelIds: [ID!]! + + """ + The id of the labelable object to add labels to. + """ + labelableId: ID! +} + +""" +Autogenerated return type of AddLabelsToLabelable +""" +type AddLabelsToLabelablePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The item that was labeled. + """ + labelable: Labelable +} + +""" +Autogenerated input type of AddProjectCard +""" +input AddProjectCardInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The content of the card. Must be a member of the ProjectCardItem union + """ + contentId: ID + + """ + The note on the card. + """ + note: String + + """ + The Node ID of the ProjectColumn. + """ + projectColumnId: ID! +} + +""" +Autogenerated return type of AddProjectCard +""" +type AddProjectCardPayload { + """ + The edge from the ProjectColumn's card connection. + """ + cardEdge: ProjectCardEdge + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ProjectColumn + """ + projectColumn: ProjectColumn +} + +""" +Autogenerated input type of AddProjectColumn +""" +input AddProjectColumnInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of the column. + """ + name: String! + + """ + The Node ID of the project. + """ + projectId: ID! +} + +""" +Autogenerated return type of AddProjectColumn +""" +type AddProjectColumnPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The edge from the project's column connection. + """ + columnEdge: ProjectColumnEdge + + """ + The project + """ + project: Project +} + +""" +Autogenerated input type of AddProjectDraftIssue +""" +input AddProjectDraftIssueInput { + """ + The IDs of the assignees of the draft issue. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `assigneeIds` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + assigneeIds: [ID!] + + """ + The body of the draft issue. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `body` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Project to add the draft issue to. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `projectId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + projectId: ID + + """ + The title of the draft issue. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `title` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + title: String +} + +""" +Autogenerated return type of AddProjectDraftIssue +""" +type AddProjectDraftIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The draft issue added to the project. + """ + projectNextItem: ProjectNextItem @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Autogenerated input type of AddProjectNextItem +""" +input AddProjectNextItemInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The content id of the item (Issue or PullRequest). This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `contentId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + contentId: ID + + """ + The ID of the Project to add the item to. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `projectId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + projectId: ID +} + +""" +Autogenerated return type of AddProjectNextItem +""" +type AddProjectNextItemPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The item added to the project. + """ + projectNextItem: ProjectNextItem @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Autogenerated input type of AddProjectV2DraftIssue +""" +input AddProjectV2DraftIssueInput { + """ + The IDs of the assignees of the draft issue. + """ + assigneeIds: [ID!] + + """ + The body of the draft issue. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Project to add the draft issue to. + """ + projectId: ID! + + """ + The title of the draft issue. + """ + title: String! +} + +""" +Autogenerated return type of AddProjectV2DraftIssue +""" +type AddProjectV2DraftIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The draft issue added to the project. + """ + projectItem: ProjectV2Item +} + +""" +Autogenerated input type of AddProjectV2ItemById +""" +input AddProjectV2ItemByIdInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the Issue or Pull Request to add. + """ + contentId: ID! + + """ + The ID of the Project to add the item to. + """ + projectId: ID! +} + +""" +Autogenerated return type of AddProjectV2ItemById +""" +type AddProjectV2ItemByIdPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The item added to the project. + """ + item: ProjectV2Item +} + +""" +Autogenerated input type of AddPullRequestReviewComment +""" +input AddPullRequestReviewCommentInput { + """ + The text of the comment. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The SHA of the commit to comment on. + """ + commitOID: GitObjectID + + """ + The comment id to reply to. + """ + inReplyTo: ID + + """ + The relative path of the file to comment on. + """ + path: String + + """ + The line index in the diff to comment on. + """ + position: Int + + """ + The node ID of the pull request reviewing + """ + pullRequestId: ID + + """ + The Node ID of the review to modify. + """ + pullRequestReviewId: ID +} + +""" +Autogenerated return type of AddPullRequestReviewComment +""" +type AddPullRequestReviewCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The newly created comment. + """ + comment: PullRequestReviewComment + + """ + The edge from the review's comment connection. + """ + commentEdge: PullRequestReviewCommentEdge +} + +""" +Autogenerated input type of AddPullRequestReview +""" +input AddPullRequestReviewInput { + """ + The contents of the review body comment. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The review line comments. + """ + comments: [DraftPullRequestReviewComment] + + """ + The commit OID the review pertains to. + """ + commitOID: GitObjectID + + """ + The event to perform on the pull request review. + """ + event: PullRequestReviewEvent + + """ + The Node ID of the pull request to modify. + """ + pullRequestId: ID! + + """ + The review line comment threads. + """ + threads: [DraftPullRequestReviewThread] +} + +""" +Autogenerated return type of AddPullRequestReview +""" +type AddPullRequestReviewPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The newly created pull request review. + """ + pullRequestReview: PullRequestReview + + """ + The edge from the pull request's review connection. + """ + reviewEdge: PullRequestReviewEdge +} + +""" +Autogenerated input type of AddPullRequestReviewThread +""" +input AddPullRequestReviewThreadInput { + """ + Body of the thread's first comment. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The line of the blob to which the thread refers. The end of the line range for multi-line comments. + """ + line: Int! + + """ + Path to the file being commented on. + """ + path: String! + + """ + The node ID of the pull request reviewing + """ + pullRequestId: ID + + """ + The Node ID of the review to modify. + """ + pullRequestReviewId: ID + + """ + The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range. + """ + side: DiffSide = RIGHT + + """ + The first line of the range to which the comment refers. + """ + startLine: Int + + """ + The side of the diff on which the start line resides. + """ + startSide: DiffSide = RIGHT +} + +""" +Autogenerated return type of AddPullRequestReviewThread +""" +type AddPullRequestReviewThreadPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The newly created thread. + """ + thread: PullRequestReviewThread +} + +""" +Autogenerated input type of AddReaction +""" +input AddReactionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of the emoji to react with. + """ + content: ReactionContent! + + """ + The Node ID of the subject to modify. + """ + subjectId: ID! +} + +""" +Autogenerated return type of AddReaction +""" +type AddReactionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The reaction object. + """ + reaction: Reaction + + """ + The reactable subject. + """ + subject: Reactable +} + +""" +Autogenerated input type of AddStar +""" +input AddStarInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Starrable ID to star. + """ + starrableId: ID! +} + +""" +Autogenerated return type of AddStar +""" +type AddStarPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The starrable. + """ + starrable: Starrable +} + +""" +Autogenerated input type of AddUpvote +""" +input AddUpvoteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion or comment to upvote. + """ + subjectId: ID! +} + +""" +Autogenerated return type of AddUpvote +""" +type AddUpvotePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The votable subject. + """ + subject: Votable +} + +""" +Autogenerated input type of AddVerifiableDomain +""" +input AddVerifiableDomainInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The URL of the domain + """ + domain: URI! + + """ + The ID of the owner to add the domain to + """ + ownerId: ID! +} + +""" +Autogenerated return type of AddVerifiableDomain +""" +type AddVerifiableDomainPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The verifiable domain that was added. + """ + domain: VerifiableDomain +} + +""" +Represents a 'added_to_project' event on a given issue or pull request. +""" +type AddedToProjectEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! +} + +""" +A GitHub App. +""" +type App implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The description of the app. + """ + description: String + id: ID! + + """ + The IP addresses of the app. + """ + ipAllowListEntries( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for IP allow list entries returned. + """ + orderBy: IpAllowListEntryOrder = {field: ALLOW_LIST_VALUE, direction: ASC} + ): IpAllowListEntryConnection! + + """ + The hex color code, without the leading '#', for the logo background. + """ + logoBackgroundColor: String! + + """ + A URL pointing to the app's logo. + """ + logoUrl( + """ + The size of the resulting image. + """ + size: Int + ): URI! + + """ + The name of the app. + """ + name: String! + + """ + A slug based on the name of the app for use in URLs. + """ + slug: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The URL to the app's homepage. + """ + url: URI! +} + +""" +Autogenerated input type of ApproveDeployments +""" +input ApproveDeploymentsInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Optional comment for approving deployments + """ + comment: String = "" + + """ + The ids of environments to reject deployments + """ + environmentIds: [ID!]! + + """ + The node ID of the workflow run containing the pending deployments. + """ + workflowRunId: ID! +} + +""" +Autogenerated return type of ApproveDeployments +""" +type ApproveDeploymentsPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The affected deployments. + """ + deployments: [Deployment!] +} + +""" +Autogenerated input type of ApproveVerifiableDomain +""" +input ApproveVerifiableDomainInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the verifiable domain to approve. + """ + id: ID! +} + +""" +Autogenerated return type of ApproveVerifiableDomain +""" +type ApproveVerifiableDomainPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The verifiable domain that was approved. + """ + domain: VerifiableDomain +} + +""" +Autogenerated input type of ArchiveRepository +""" +input ArchiveRepositoryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the repository to mark as archived. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of ArchiveRepository +""" +type ArchiveRepositoryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The repository that was marked as archived. + """ + repository: Repository +} + +""" +An object that can have users assigned to it. +""" +interface Assignable { + """ + A list of Users assigned to this object. + """ + assignees( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! +} + +""" +Represents an 'assigned' event on any assignable object. +""" +type AssignedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the assignable associated with the event. + """ + assignable: Assignable! + + """ + Identifies the user or mannequin that was assigned. + """ + assignee: Assignee + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the user who was assigned. + """ + user: User @deprecated(reason: "Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC.") +} + +""" +Types that can be assigned to issues. +""" +union Assignee = Bot | Mannequin | Organization | User + +""" +An entry in the audit log. +""" +interface AuditEntry { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Types that can initiate an audit log event. +""" +union AuditEntryActor = Bot | Organization | User + +""" +Ordering options for Audit Log connections. +""" +input AuditLogOrder { + """ + The ordering direction. + """ + direction: OrderDirection + + """ + The field to order Audit Logs by. + """ + field: AuditLogOrderField +} + +""" +Properties by which Audit Log connections can be ordered. +""" +enum AuditLogOrderField { + """ + Order audit log entries by timestamp + """ + CREATED_AT +} + +""" +Represents a 'auto_merge_disabled' event on a given pull request. +""" +type AutoMergeDisabledEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The user who disabled auto-merge for this Pull Request + """ + disabler: User + id: ID! + + """ + PullRequest referenced by event + """ + pullRequest: PullRequest + + """ + The reason auto-merge was disabled + """ + reason: String + + """ + The reason_code relating to why auto-merge was disabled + """ + reasonCode: String +} + +""" +Represents a 'auto_merge_enabled' event on a given pull request. +""" +type AutoMergeEnabledEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The user who enabled auto-merge for this Pull Request + """ + enabler: User + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest +} + +""" +Represents an auto-merge request for a pull request +""" +type AutoMergeRequest { + """ + The email address of the author of this auto-merge request. + """ + authorEmail: String + + """ + The commit message of the auto-merge request. If a merge queue is required by + the base branch, this value will be set by the merge queue when merging. + """ + commitBody: String + + """ + The commit title of the auto-merge request. If a merge queue is required by + the base branch, this value will be set by the merge queue when merging + """ + commitHeadline: String + + """ + When was this auto-merge request was enabled. + """ + enabledAt: DateTime + + """ + The actor who created the auto-merge request. + """ + enabledBy: Actor + + """ + The merge method of the auto-merge request. If a merge queue is required by + the base branch, this value will be set by the merge queue when merging. + """ + mergeMethod: PullRequestMergeMethod! + + """ + The pull request that this auto-merge request is set against. + """ + pullRequest: PullRequest! +} + +""" +Represents a 'auto_rebase_enabled' event on a given pull request. +""" +type AutoRebaseEnabledEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The user who enabled auto-merge (rebase) for this Pull Request + """ + enabler: User + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest +} + +""" +Represents a 'auto_squash_enabled' event on a given pull request. +""" +type AutoSquashEnabledEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The user who enabled auto-merge (squash) for this Pull Request + """ + enabler: User + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest +} + +""" +Represents a 'automatic_base_change_failed' event on a given pull request. +""" +type AutomaticBaseChangeFailedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + The new base for this PR + """ + newBase: String! + + """ + The old base for this PR + """ + oldBase: String! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! +} + +""" +Represents a 'automatic_base_change_succeeded' event on a given pull request. +""" +type AutomaticBaseChangeSucceededEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + The new base for this PR + """ + newBase: String! + + """ + The old base for this PR + """ + oldBase: String! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! +} + +""" +A (potentially binary) string encoded using base64. +""" +scalar Base64String + +""" +Represents a 'base_ref_changed' event on a given issue or pull request. +""" +type BaseRefChangedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the name of the base ref for the pull request after it was changed. + """ + currentRefName: String! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + Identifies the name of the base ref for the pull request before it was changed. + """ + previousRefName: String! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! +} + +""" +Represents a 'base_ref_deleted' event on a given pull request. +""" +type BaseRefDeletedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the name of the Ref associated with the `base_ref_deleted` event. + """ + baseRefName: String + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest +} + +""" +Represents a 'base_ref_force_pushed' event on a given pull request. +""" +type BaseRefForcePushedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the after commit SHA for the 'base_ref_force_pushed' event. + """ + afterCommit: Commit + + """ + Identifies the before commit SHA for the 'base_ref_force_pushed' event. + """ + beforeCommit: Commit + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + Identifies the fully qualified ref name for the 'base_ref_force_pushed' event. + """ + ref: Ref +} + +""" +Represents a Git blame. +""" +type Blame { + """ + The list of ranges from a Git blame. + """ + ranges: [BlameRange!]! +} + +""" +Represents a range of information from a Git blame. +""" +type BlameRange { + """ + Identifies the recency of the change, from 1 (new) to 10 (old). This is + calculated as a 2-quantile and determines the length of distance between the + median age of all the changes in the file and the recency of the current + range's change. + """ + age: Int! + + """ + Identifies the line author + """ + commit: Commit! + + """ + The ending line for the range + """ + endingLine: Int! + + """ + The starting line for the range + """ + startingLine: Int! +} + +""" +Represents a Git blob. +""" +type Blob implements GitObject & Node { + """ + An abbreviated version of the Git object ID + """ + abbreviatedOid: String! + + """ + Byte size of Blob object + """ + byteSize: Int! + + """ + The HTTP path for this Git object + """ + commitResourcePath: URI! + + """ + The HTTP URL for this Git object + """ + commitUrl: URI! + id: ID! + + """ + Indicates whether the Blob is binary or text. Returns null if unable to determine the encoding. + """ + isBinary: Boolean + + """ + Indicates whether the contents is truncated + """ + isTruncated: Boolean! + + """ + The Git object ID + """ + oid: GitObjectID! + + """ + The Repository the Git object belongs to + """ + repository: Repository! + + """ + UTF8 text data or null if the Blob is binary + """ + text: String +} + +""" +A special type of user which takes actions on behalf of GitHub Apps. +""" +type Bot implements Actor & Node & UniformResourceLocatable { + """ + A URL pointing to the GitHub App's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The username of the actor. + """ + login: String! + + """ + The HTTP path for this bot + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this bot + """ + url: URI! +} + +""" +Types which can be actors for `BranchActorAllowance` objects. +""" +union BranchActorAllowanceActor = App | Team | User + +""" +A branch protection rule. +""" +type BranchProtectionRule implements Node { + """ + Can this branch be deleted. + """ + allowsDeletions: Boolean! + + """ + Are force pushes allowed on this branch. + """ + allowsForcePushes: Boolean! + + """ + Is branch creation a protected operation. + """ + blocksCreations: Boolean! + + """ + A list of conflicts matching branches protection rule and other branch protection rules + """ + branchProtectionRuleConflicts( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): BranchProtectionRuleConflictConnection! + + """ + A list of actors able to force push for this branch protection rule. + """ + bypassForcePushAllowances( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): BypassForcePushAllowanceConnection! + + """ + A list of actors able to bypass PRs for this branch protection rule. + """ + bypassPullRequestAllowances( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): BypassPullRequestAllowanceConnection! + + """ + The actor who created this branch protection rule. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + Will new commits pushed to matching branches dismiss pull request review approvals. + """ + dismissesStaleReviews: Boolean! + id: ID! + + """ + Can admins overwrite branch protection. + """ + isAdminEnforced: Boolean! + + """ + Repository refs that are protected by this rule + """ + matchingRefs( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filters refs with query on name + """ + query: String + ): RefConnection! + + """ + Identifies the protection rule pattern. + """ + pattern: String! + + """ + A list push allowances for this branch protection rule. + """ + pushAllowances( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PushAllowanceConnection! + + """ + The repository associated with this branch protection rule. + """ + repository: Repository + + """ + Number of approving reviews required to update matching branches. + """ + requiredApprovingReviewCount: Int + + """ + List of required status check contexts that must pass for commits to be accepted to matching branches. + """ + requiredStatusCheckContexts: [String] + + """ + List of required status checks that must pass for commits to be accepted to matching branches. + """ + requiredStatusChecks: [RequiredStatusCheckDescription!] + + """ + Are approving reviews required to update matching branches. + """ + requiresApprovingReviews: Boolean! + + """ + Are reviews from code owners required to update matching branches. + """ + requiresCodeOwnerReviews: Boolean! + + """ + Are commits required to be signed. + """ + requiresCommitSignatures: Boolean! + + """ + Are conversations required to be resolved before merging. + """ + requiresConversationResolution: Boolean! + + """ + Are merge commits prohibited from being pushed to this branch. + """ + requiresLinearHistory: Boolean! + + """ + Are status checks required to update matching branches. + """ + requiresStatusChecks: Boolean! + + """ + Are branches required to be up to date before merging. + """ + requiresStrictStatusChecks: Boolean! + + """ + Is pushing to matching branches restricted. + """ + restrictsPushes: Boolean! + + """ + Is dismissal of pull request reviews restricted. + """ + restrictsReviewDismissals: Boolean! + + """ + A list review dismissal allowances for this branch protection rule. + """ + reviewDismissalAllowances( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ReviewDismissalAllowanceConnection! +} + +""" +A conflict between two branch protection rules. +""" +type BranchProtectionRuleConflict { + """ + Identifies the branch protection rule. + """ + branchProtectionRule: BranchProtectionRule + + """ + Identifies the conflicting branch protection rule. + """ + conflictingBranchProtectionRule: BranchProtectionRule + + """ + Identifies the branch ref that has conflicting rules + """ + ref: Ref +} + +""" +The connection type for BranchProtectionRuleConflict. +""" +type BranchProtectionRuleConflictConnection { + """ + A list of edges. + """ + edges: [BranchProtectionRuleConflictEdge] + + """ + A list of nodes. + """ + nodes: [BranchProtectionRuleConflict] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type BranchProtectionRuleConflictEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: BranchProtectionRuleConflict +} + +""" +The connection type for BranchProtectionRule. +""" +type BranchProtectionRuleConnection { + """ + A list of edges. + """ + edges: [BranchProtectionRuleEdge] + + """ + A list of nodes. + """ + nodes: [BranchProtectionRule] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type BranchProtectionRuleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: BranchProtectionRule +} + +""" +A user, team, or app who has the ability to bypass a force push requirement on a protected branch. +""" +type BypassForcePushAllowance implements Node { + """ + The actor that can force push. + """ + actor: BranchActorAllowanceActor + + """ + Identifies the branch protection rule associated with the allowed user, team, or app. + """ + branchProtectionRule: BranchProtectionRule + id: ID! +} + +""" +The connection type for BypassForcePushAllowance. +""" +type BypassForcePushAllowanceConnection { + """ + A list of edges. + """ + edges: [BypassForcePushAllowanceEdge] + + """ + A list of nodes. + """ + nodes: [BypassForcePushAllowance] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type BypassForcePushAllowanceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: BypassForcePushAllowance +} + +""" +A user, team, or app who has the ability to bypass a pull request requirement on a protected branch. +""" +type BypassPullRequestAllowance implements Node { + """ + The actor that can bypass. + """ + actor: BranchActorAllowanceActor + + """ + Identifies the branch protection rule associated with the allowed user, team, or app. + """ + branchProtectionRule: BranchProtectionRule + id: ID! +} + +""" +The connection type for BypassPullRequestAllowance. +""" +type BypassPullRequestAllowanceConnection { + """ + A list of edges. + """ + edges: [BypassPullRequestAllowanceEdge] + + """ + A list of nodes. + """ + nodes: [BypassPullRequestAllowance] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type BypassPullRequestAllowanceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: BypassPullRequestAllowance +} + +""" +The Common Vulnerability Scoring System +""" +type CVSS { + """ + The CVSS score associated with this advisory + """ + score: Float! + + """ + The CVSS vector string associated with this advisory + """ + vectorString: String +} + +""" +A common weakness enumeration +""" +type CWE implements Node { + """ + The id of the CWE + """ + cweId: String! + + """ + A detailed description of this CWE + """ + description: String! + id: ID! + + """ + The name of this CWE + """ + name: String! +} + +""" +The connection type for CWE. +""" +type CWEConnection { + """ + A list of edges. + """ + edges: [CWEEdge] + + """ + A list of nodes. + """ + nodes: [CWE] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CWEEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CWE +} + +""" +Autogenerated input type of CancelEnterpriseAdminInvitation +""" +input CancelEnterpriseAdminInvitationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the pending enterprise administrator invitation. + """ + invitationId: ID! +} + +""" +Autogenerated return type of CancelEnterpriseAdminInvitation +""" +type CancelEnterpriseAdminInvitationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The invitation that was canceled. + """ + invitation: EnterpriseAdministratorInvitation + + """ + A message confirming the result of canceling an administrator invitation. + """ + message: String +} + +""" +Autogenerated input type of CancelSponsorship +""" +input CancelSponsorshipInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the user or organization who is acting as the sponsor, paying for + the sponsorship. Required if sponsorLogin is not given. + """ + sponsorId: ID + + """ + The username of the user or organization who is acting as the sponsor, paying + for the sponsorship. Required if sponsorId is not given. + """ + sponsorLogin: String + + """ + The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given. + """ + sponsorableId: ID + + """ + The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given. + """ + sponsorableLogin: String +} + +""" +Autogenerated return type of CancelSponsorship +""" +type CancelSponsorshipPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The tier that was being used at the time of cancellation. + """ + sponsorsTier: SponsorsTier +} + +""" +Autogenerated input type of ChangeUserStatus +""" +input ChangeUserStatusInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The emoji to represent your status. Can either be a native Unicode emoji or an emoji name with colons, e.g., :grinning:. + """ + emoji: String + + """ + If set, the user status will not be shown after this date. + """ + expiresAt: DateTime + + """ + Whether this status should indicate you are not fully available on GitHub, e.g., you are away. + """ + limitedAvailability: Boolean = false + + """ + A short description of your current status. + """ + message: String + + """ + The ID of the organization whose members will be allowed to see the status. If + omitted, the status will be publicly visible. + """ + organizationId: ID +} + +""" +Autogenerated return type of ChangeUserStatus +""" +type ChangeUserStatusPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Your updated status. + """ + status: UserStatus +} + +""" +A single check annotation. +""" +type CheckAnnotation { + """ + The annotation's severity level. + """ + annotationLevel: CheckAnnotationLevel + + """ + The path to the file that this annotation was made on. + """ + blobUrl: URI! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The position of this annotation. + """ + location: CheckAnnotationSpan! + + """ + The annotation's message. + """ + message: String! + + """ + The path that this annotation was made on. + """ + path: String! + + """ + Additional information about the annotation. + """ + rawDetails: String + + """ + The annotation's title + """ + title: String +} + +""" +The connection type for CheckAnnotation. +""" +type CheckAnnotationConnection { + """ + A list of edges. + """ + edges: [CheckAnnotationEdge] + + """ + A list of nodes. + """ + nodes: [CheckAnnotation] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Information from a check run analysis to specific lines of code. +""" +input CheckAnnotationData { + """ + Represents an annotation's information level + """ + annotationLevel: CheckAnnotationLevel! + + """ + The location of the annotation + """ + location: CheckAnnotationRange! + + """ + A short description of the feedback for these lines of code. + """ + message: String! + + """ + The path of the file to add an annotation to. + """ + path: String! + + """ + Details about this annotation. + """ + rawDetails: String + + """ + The title that represents the annotation. + """ + title: String +} + +""" +An edge in a connection. +""" +type CheckAnnotationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CheckAnnotation +} + +""" +Represents an annotation's information level. +""" +enum CheckAnnotationLevel { + """ + An annotation indicating an inescapable error. + """ + FAILURE + + """ + An annotation indicating some information. + """ + NOTICE + + """ + An annotation indicating an ignorable error. + """ + WARNING +} + +""" +A character position in a check annotation. +""" +type CheckAnnotationPosition { + """ + Column number (1 indexed). + """ + column: Int + + """ + Line number (1 indexed). + """ + line: Int! +} + +""" +Information from a check run analysis to specific lines of code. +""" +input CheckAnnotationRange { + """ + The ending column of the range. + """ + endColumn: Int + + """ + The ending line of the range. + """ + endLine: Int! + + """ + The starting column of the range. + """ + startColumn: Int + + """ + The starting line of the range. + """ + startLine: Int! +} + +""" +An inclusive pair of positions for a check annotation. +""" +type CheckAnnotationSpan { + """ + End position (inclusive). + """ + end: CheckAnnotationPosition! + + """ + Start position (inclusive). + """ + start: CheckAnnotationPosition! +} + +""" +The possible states for a check suite or run conclusion. +""" +enum CheckConclusionState { + """ + The check suite or run requires action. + """ + ACTION_REQUIRED + + """ + The check suite or run has been cancelled. + """ + CANCELLED + + """ + The check suite or run has failed. + """ + FAILURE + + """ + The check suite or run was neutral. + """ + NEUTRAL + + """ + The check suite or run was skipped. + """ + SKIPPED + + """ + The check suite or run was marked stale by GitHub. Only GitHub can use this conclusion. + """ + STALE + + """ + The check suite or run has failed at startup. + """ + STARTUP_FAILURE + + """ + The check suite or run has succeeded. + """ + SUCCESS + + """ + The check suite or run has timed out. + """ + TIMED_OUT +} + +""" +A check run. +""" +type CheckRun implements Node & RequirableByPullRequest & UniformResourceLocatable { + """ + The check run's annotations + """ + annotations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CheckAnnotationConnection + + """ + The check suite that this run is a part of. + """ + checkSuite: CheckSuite! + + """ + Identifies the date and time when the check run was completed. + """ + completedAt: DateTime + + """ + The conclusion of the check run. + """ + conclusion: CheckConclusionState + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The corresponding deployment for this job, if any + """ + deployment: Deployment + + """ + The URL from which to find full details of the check run on the integrator's site. + """ + detailsUrl: URI + + """ + A reference for the check run on the integrator's system. + """ + externalId: String + id: ID! + + """ + Whether this is required to pass before merging for a specific pull request. + """ + isRequired( + """ + The id of the pull request this is required for + """ + pullRequestId: ID + + """ + The number of the pull request this is required for + """ + pullRequestNumber: Int + ): Boolean! + + """ + The name of the check for this check run. + """ + name: String! + + """ + Information about a pending deployment, if any, in this check run + """ + pendingDeploymentRequest: DeploymentRequest + + """ + The permalink to the check run summary. + """ + permalink: URI! + + """ + The repository associated with this check run. + """ + repository: Repository! + + """ + The HTTP path for this check run. + """ + resourcePath: URI! + + """ + Identifies the date and time when the check run was started. + """ + startedAt: DateTime + + """ + The current status of the check run. + """ + status: CheckStatusState! + + """ + The check run's steps + """ + steps( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Step number + """ + number: Int + ): CheckStepConnection + + """ + A string representing the check run's summary + """ + summary: String + + """ + A string representing the check run's text + """ + text: String + + """ + A string representing the check run + """ + title: String + + """ + The HTTP URL for this check run. + """ + url: URI! +} + +""" +Possible further actions the integrator can perform. +""" +input CheckRunAction { + """ + A short explanation of what this action would do. + """ + description: String! + + """ + A reference for the action on the integrator's system. + """ + identifier: String! + + """ + The text to be displayed on a button in the web UI. + """ + label: String! +} + +""" +The connection type for CheckRun. +""" +type CheckRunConnection { + """ + A list of edges. + """ + edges: [CheckRunEdge] + + """ + A list of nodes. + """ + nodes: [CheckRun] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CheckRunEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CheckRun +} + +""" +The filters that are available when fetching check runs. +""" +input CheckRunFilter { + """ + Filters the check runs created by this application ID. + """ + appId: Int + + """ + Filters the check runs by this name. + """ + checkName: String + + """ + Filters the check runs by this type. + """ + checkType: CheckRunType + + """ + Filters the check runs by this status. + """ + status: CheckStatusState +} + +""" +Descriptive details about the check run. +""" +input CheckRunOutput { + """ + The annotations that are made as part of the check run. + """ + annotations: [CheckAnnotationData!] + + """ + Images attached to the check run output displayed in the GitHub pull request UI. + """ + images: [CheckRunOutputImage!] + + """ + The summary of the check run (supports Commonmark). + """ + summary: String! + + """ + The details of the check run (supports Commonmark). + """ + text: String + + """ + A title to provide for this check run. + """ + title: String! +} + +""" +Images attached to the check run output displayed in the GitHub pull request UI. +""" +input CheckRunOutputImage { + """ + The alternative text for the image. + """ + alt: String! + + """ + A short image description. + """ + caption: String + + """ + The full URL of the image. + """ + imageUrl: URI! +} + +""" +The possible types of check runs. +""" +enum CheckRunType { + """ + Every check run available. + """ + ALL + + """ + The latest check run. + """ + LATEST +} + +""" +The possible states for a check suite or run status. +""" +enum CheckStatusState { + """ + The check suite or run has been completed. + """ + COMPLETED + + """ + The check suite or run is in progress. + """ + IN_PROGRESS + + """ + The check suite or run is in pending state. + """ + PENDING + + """ + The check suite or run has been queued. + """ + QUEUED + + """ + The check suite or run has been requested. + """ + REQUESTED + + """ + The check suite or run is in waiting state. + """ + WAITING +} + +""" +A single check step. +""" +type CheckStep { + """ + Identifies the date and time when the check step was completed. + """ + completedAt: DateTime + + """ + The conclusion of the check step. + """ + conclusion: CheckConclusionState + + """ + A reference for the check step on the integrator's system. + """ + externalId: String + + """ + The step's name. + """ + name: String! + + """ + The index of the step in the list of steps of the parent check run. + """ + number: Int! + + """ + Number of seconds to completion. + """ + secondsToCompletion: Int + + """ + Identifies the date and time when the check step was started. + """ + startedAt: DateTime + + """ + The current status of the check step. + """ + status: CheckStatusState! +} + +""" +The connection type for CheckStep. +""" +type CheckStepConnection { + """ + A list of edges. + """ + edges: [CheckStepEdge] + + """ + A list of nodes. + """ + nodes: [CheckStep] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CheckStepEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CheckStep +} + +""" +A check suite. +""" +type CheckSuite implements Node { + """ + The GitHub App which created this check suite. + """ + app: App + + """ + The name of the branch for this check suite. + """ + branch: Ref + + """ + The check runs associated with a check suite. + """ + checkRuns( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filters the check runs by this type. + """ + filterBy: CheckRunFilter + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CheckRunConnection + + """ + The commit for this check suite + """ + commit: Commit! + + """ + The conclusion of this check suite. + """ + conclusion: CheckConclusionState + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The user who triggered the check suite. + """ + creator: User + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + A list of open pull requests matching the check suite. + """ + matchingPullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + The base ref name to filter the pull requests by. + """ + baseRefName: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + The head ref name to filter the pull requests by. + """ + headRefName: String + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pull requests returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the pull requests by. + """ + states: [PullRequestState!] + ): PullRequestConnection + + """ + The push that triggered this check suite. + """ + push: Push + + """ + The repository associated with this check suite. + """ + repository: Repository! + + """ + The HTTP path for this check suite + """ + resourcePath: URI! + + """ + The status of this check suite. + """ + status: CheckStatusState! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this check suite + """ + url: URI! + + """ + The workflow run associated with this check suite. + """ + workflowRun: WorkflowRun +} + +""" +The auto-trigger preferences that are available for check suites. +""" +input CheckSuiteAutoTriggerPreference { + """ + The node ID of the application that owns the check suite. + """ + appId: ID! + + """ + Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository. + """ + setting: Boolean! +} + +""" +The connection type for CheckSuite. +""" +type CheckSuiteConnection { + """ + A list of edges. + """ + edges: [CheckSuiteEdge] + + """ + A list of nodes. + """ + nodes: [CheckSuite] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CheckSuiteEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CheckSuite +} + +""" +The filters that are available when fetching check suites. +""" +input CheckSuiteFilter { + """ + Filters the check suites created by this application ID. + """ + appId: Int + + """ + Filters the check suites by this name. + """ + checkName: String +} + +""" +Autogenerated input type of ClearLabelsFromLabelable +""" +input ClearLabelsFromLabelableInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the labelable object to clear the labels from. + """ + labelableId: ID! +} + +""" +Autogenerated return type of ClearLabelsFromLabelable +""" +type ClearLabelsFromLabelablePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The item that was unlabeled. + """ + labelable: Labelable +} + +""" +Autogenerated input type of CloneProject +""" +input CloneProjectInput { + """ + The description of the project. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Whether or not to clone the source project's workflows. + """ + includeWorkflows: Boolean! + + """ + The name of the project. + """ + name: String! + + """ + The visibility of the project, defaults to false (private). + """ + public: Boolean + + """ + The source project to clone. + """ + sourceId: ID! + + """ + The owner ID to create the project under. + """ + targetOwnerId: ID! +} + +""" +Autogenerated return type of CloneProject +""" +type CloneProjectPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the JobStatus for populating cloned fields. + """ + jobStatusId: String + + """ + The new cloned project. + """ + project: Project +} + +""" +Autogenerated input type of CloneTemplateRepository +""" +input CloneTemplateRepositoryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A short description of the new repository. + """ + description: String + + """ + Whether to copy all branches from the template to the new repository. Defaults + to copying only the default branch of the template. + """ + includeAllBranches: Boolean = false + + """ + The name of the new repository. + """ + name: String! + + """ + The ID of the owner for the new repository. + """ + ownerId: ID! + + """ + The Node ID of the template repository. + """ + repositoryId: ID! + + """ + Indicates the repository's visibility level. + """ + visibility: RepositoryVisibility! +} + +""" +Autogenerated return type of CloneTemplateRepository +""" +type CloneTemplateRepositoryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new repository. + """ + repository: Repository +} + +""" +An object that can be closed +""" +interface Closable { + """ + `true` if the object is closed (definition of closed may depend on type) + """ + closed: Boolean! + + """ + Identifies the date and time when the object was closed. + """ + closedAt: DateTime +} + +""" +Autogenerated input type of CloseIssue +""" +input CloseIssueInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the issue to be closed. + """ + issueId: ID! + + """ + The reason the issue is to be closed. + """ + stateReason: IssueClosedStateReason +} + +""" +Autogenerated return type of CloseIssue +""" +type CloseIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue that was closed. + """ + issue: Issue +} + +""" +Autogenerated input type of ClosePullRequest +""" +input ClosePullRequestInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the pull request to be closed. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of ClosePullRequest +""" +type ClosePullRequestPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request that was closed. + """ + pullRequest: PullRequest +} + +""" +Represents a 'closed' event on any `Closable`. +""" +type ClosedEvent implements Node & UniformResourceLocatable { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Object that was closed. + """ + closable: Closable! + + """ + Object which triggered the creation of this event. + """ + closer: Closer + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + The HTTP path for this closed event. + """ + resourcePath: URI! + + """ + The reason the issue state was changed to closed. + """ + stateReason: IssueStateReason + + """ + The HTTP URL for this closed event. + """ + url: URI! +} + +""" +The object which triggered a `ClosedEvent`. +""" +union Closer = Commit | PullRequest + +""" +The Code of Conduct for a repository +""" +type CodeOfConduct implements Node { + """ + The body of the Code of Conduct + """ + body: String + id: ID! + + """ + The key for the Code of Conduct + """ + key: String! + + """ + The formal name of the Code of Conduct + """ + name: String! + + """ + The HTTP path for this Code of Conduct + """ + resourcePath: URI + + """ + The HTTP URL for this Code of Conduct + """ + url: URI +} + +""" +Collaborators affiliation level with a subject. +""" +enum CollaboratorAffiliation { + """ + All collaborators the authenticated user can see. + """ + ALL + + """ + All collaborators with permissions to an organization-owned subject, regardless of organization membership status. + """ + DIRECT + + """ + All outside collaborators of an organization-owned subject. + """ + OUTSIDE +} + +""" +Represents a comment. +""" +interface Comment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + The body as Markdown. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! +} + +""" +A comment author association with repository. +""" +enum CommentAuthorAssociation { + """ + Author has been invited to collaborate on the repository. + """ + COLLABORATOR + + """ + Author has previously committed to the repository. + """ + CONTRIBUTOR + + """ + Author has not previously committed to GitHub. + """ + FIRST_TIMER + + """ + Author has not previously committed to the repository. + """ + FIRST_TIME_CONTRIBUTOR + + """ + Author is a placeholder for an unclaimed user. + """ + MANNEQUIN + + """ + Author is a member of the organization that owns the repository. + """ + MEMBER + + """ + Author has no association with the repository. + """ + NONE + + """ + Author is the owner of the repository. + """ + OWNER +} + +""" +The possible errors that will prevent a user from updating a comment. +""" +enum CommentCannotUpdateReason { + """ + Unable to create comment because repository is archived. + """ + ARCHIVED + + """ + You cannot update this comment + """ + DENIED + + """ + You must be the author or have write access to this repository to update this comment. + """ + INSUFFICIENT_ACCESS + + """ + Unable to create comment because issue is locked. + """ + LOCKED + + """ + You must be logged in to update this comment. + """ + LOGIN_REQUIRED + + """ + Repository is under maintenance. + """ + MAINTENANCE + + """ + At least one email address must be verified to update this comment. + """ + VERIFIED_EMAIL_REQUIRED +} + +""" +Represents a 'comment_deleted' event on a given issue or pull request. +""" +type CommentDeletedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The user who authored the deleted comment. + """ + deletedCommentAuthor: Actor + id: ID! +} + +""" +Represents a Git commit. +""" +type Commit implements GitObject & Node & Subscribable & UniformResourceLocatable { + """ + An abbreviated version of the Git object ID + """ + abbreviatedOid: String! + + """ + The number of additions in this commit. + """ + additions: Int! + + """ + The merged Pull Request that introduced the commit to the repository. If the + commit is not present in the default branch, additionally returns open Pull + Requests associated with the commit + """ + associatedPullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pull requests. + """ + orderBy: PullRequestOrder = {field: CREATED_AT, direction: ASC} + ): PullRequestConnection + + """ + Authorship details of the commit. + """ + author: GitActor + + """ + Check if the committer and the author match. + """ + authoredByCommitter: Boolean! + + """ + The datetime when this commit was authored. + """ + authoredDate: DateTime! + + """ + The list of authors for this commit based on the git author and the Co-authored-by + message trailer. The git author will always be first. + """ + authors( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GitActorConnection! + + """ + Fetches `git blame` information. + """ + blame( + """ + The file whose Git blame information you want. + """ + path: String! + ): Blame! + + """ + The number of changed files in this commit. + """ + changedFiles: Int! + + """ + The check suites associated with a commit. + """ + checkSuites( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filters the check suites by this type. + """ + filterBy: CheckSuiteFilter + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CheckSuiteConnection + + """ + Comments made on the commit. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CommitCommentConnection! + + """ + The HTTP path for this Git object + """ + commitResourcePath: URI! + + """ + The HTTP URL for this Git object + """ + commitUrl: URI! + + """ + The datetime when this commit was committed. + """ + committedDate: DateTime! + + """ + Check if committed via GitHub web UI. + """ + committedViaWeb: Boolean! + + """ + Committer details of the commit. + """ + committer: GitActor + + """ + The number of deletions in this commit. + """ + deletions: Int! + + """ + The deployments associated with a commit. + """ + deployments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Environments to list deployments for + """ + environments: [String!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for deployments returned from the connection. + """ + orderBy: DeploymentOrder = {field: CREATED_AT, direction: ASC} + ): DeploymentConnection + + """ + The tree entry representing the file located at the given path. + """ + file( + """ + The path for the file + """ + path: String! + ): TreeEntry + + """ + The linear commit history starting from (and including) this commit, in the same order as `git log`. + """ + history( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + If non-null, filters history to only show commits with matching authorship. + """ + author: CommitAuthor + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + If non-null, filters history to only show commits touching files under this path. + """ + path: String + + """ + Allows specifying a beginning time or date for fetching commits. + """ + since: GitTimestamp + + """ + Allows specifying an ending time or date for fetching commits. + """ + until: GitTimestamp + ): CommitHistoryConnection! + id: ID! + + """ + The Git commit message + """ + message: String! + + """ + The Git commit message body + """ + messageBody: String! + + """ + The commit message body rendered to HTML. + """ + messageBodyHTML: HTML! + + """ + The Git commit message headline + """ + messageHeadline: String! + + """ + The commit message headline rendered to HTML. + """ + messageHeadlineHTML: HTML! + + """ + The Git object ID + """ + oid: GitObjectID! + + """ + The organization this commit was made on behalf of. + """ + onBehalfOf: Organization + + """ + The parents of a commit. + """ + parents( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CommitConnection! + + """ + The datetime when this commit was pushed. + """ + pushedDate: DateTime + + """ + The Repository this commit belongs to + """ + repository: Repository! + + """ + The HTTP path for this commit + """ + resourcePath: URI! + + """ + Commit signing information, if present. + """ + signature: GitSignature + + """ + Status information for this commit + """ + status: Status + + """ + Check and Status rollup information for this commit. + """ + statusCheckRollup: StatusCheckRollup + + """ + Returns a list of all submodules in this repository as of this Commit parsed from the .gitmodules file. + """ + submodules( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): SubmoduleConnection! + + """ + Returns a URL to download a tarball archive for a repository. + Note: For private repositories, these links are temporary and expire after five minutes. + """ + tarballUrl: URI! + + """ + Commit's root Tree + """ + tree: Tree! + + """ + The HTTP path for the tree of this commit + """ + treeResourcePath: URI! + + """ + The HTTP URL for the tree of this commit + """ + treeUrl: URI! + + """ + The HTTP URL for this commit + """ + url: URI! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState + + """ + Returns a URL to download a zipball archive for a repository. + Note: For private repositories, these links are temporary and expire after five minutes. + """ + zipballUrl: URI! +} + +""" +Specifies an author for filtering Git commits. +""" +input CommitAuthor { + """ + Email addresses to filter by. Commits authored by any of the specified email addresses will be returned. + """ + emails: [String!] + + """ + ID of a User to filter by. If non-null, only commits authored by this user + will be returned. This field takes precedence over emails. + """ + id: ID +} + +""" +Represents a comment on a given Commit. +""" +type CommitComment implements Comment & Deletable & Minimizable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + Identifies the comment body. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + Identifies the commit associated with the comment, if the commit exists. + """ + commit: Commit + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + Returns whether or not a comment has been minimized. + """ + isMinimized: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Returns why the comment was minimized. + """ + minimizedReason: String + + """ + Identifies the file path associated with the comment. + """ + path: String + + """ + Identifies the line position associated with the comment. + """ + position: Int + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + The HTTP path permalink for this commit comment. + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL permalink for this commit comment. + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Check if the current viewer can minimize this object. + """ + viewerCanMinimize: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! +} + +""" +The connection type for CommitComment. +""" +type CommitCommentConnection { + """ + A list of edges. + """ + edges: [CommitCommentEdge] + + """ + A list of nodes. + """ + nodes: [CommitComment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CommitCommentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CommitComment +} + +""" +A thread of comments on a commit. +""" +type CommitCommentThread implements Node & RepositoryNode { + """ + The comments that exist in this thread. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CommitCommentConnection! + + """ + The commit the comments were made on. + """ + commit: Commit + id: ID! + + """ + The file the comments were made on. + """ + path: String + + """ + The position in the diff for the commit that the comment was made on. + """ + position: Int + + """ + The repository associated with this node. + """ + repository: Repository! +} + +""" +The connection type for Commit. +""" +type CommitConnection { + """ + A list of edges. + """ + edges: [CommitEdge] + + """ + A list of nodes. + """ + nodes: [Commit] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Ordering options for commit contribution connections. +""" +input CommitContributionOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field by which to order commit contributions. + """ + field: CommitContributionOrderField! +} + +""" +Properties by which commit contribution connections can be ordered. +""" +enum CommitContributionOrderField { + """ + Order commit contributions by how many commits they represent. + """ + COMMIT_COUNT + + """ + Order commit contributions by when they were made. + """ + OCCURRED_AT +} + +""" +This aggregates commits made by a user within one repository. +""" +type CommitContributionsByRepository { + """ + The commit contributions, each representing a day. + """ + contributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for commit contributions returned from the connection. + """ + orderBy: CommitContributionOrder = {field: OCCURRED_AT, direction: DESC} + ): CreatedCommitContributionConnection! + + """ + The repository in which the commits were made. + """ + repository: Repository! + + """ + The HTTP path for the user's commits to the repository in this time range. + """ + resourcePath: URI! + + """ + The HTTP URL for the user's commits to the repository in this time range. + """ + url: URI! +} + +""" +An edge in a connection. +""" +type CommitEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Commit +} + +""" +The connection type for Commit. +""" +type CommitHistoryConnection { + """ + A list of edges. + """ + edges: [CommitEdge] + + """ + A list of nodes. + """ + nodes: [Commit] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +A message to include with a new commit +""" +input CommitMessage { + """ + The body of the message. + """ + body: String + + """ + The headline of the message. + """ + headline: String! +} + +""" +A git ref for a commit to be appended to. + +The ref must be a branch, i.e. its fully qualified name must start +with `refs/heads/` (although the input is not required to be fully +qualified). + +The Ref may be specified by its global node ID or by the +repository nameWithOwner and branch name. + +### Examples + +Specify a branch using a global node ID: + + { "id": "MDM6UmVmMTpyZWZzL2hlYWRzL21haW4=" } + +Specify a branch using nameWithOwner and branch name: + + { + "nameWithOwner": "github/graphql-client", + "branchName": "main" + } +""" +input CommittableBranch { + """ + The unqualified name of the branch to append the commit to. + """ + branchName: String + + """ + The Node ID of the Ref to be updated. + """ + id: ID + + """ + The nameWithOwner of the repository to commit to. + """ + repositoryNameWithOwner: String +} + +""" +Represents a 'connected' event on a given issue or pull request. +""" +type ConnectedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Reference originated in a different repository. + """ + isCrossRepository: Boolean! + + """ + Issue or pull request that made the reference. + """ + source: ReferencedSubject! + + """ + Issue or pull request which was connected. + """ + subject: ReferencedSubject! +} + +""" +Represents a contribution a user made on GitHub, such as opening an issue. +""" +interface Contribution { + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +A calendar of contributions made on GitHub by a user. +""" +type ContributionCalendar { + """ + A list of hex color codes used in this calendar. The darker the color, the more contributions it represents. + """ + colors: [String!]! + + """ + Determine if the color set was chosen because it's currently Halloween. + """ + isHalloween: Boolean! + + """ + A list of the months of contributions in this calendar. + """ + months: [ContributionCalendarMonth!]! + + """ + The count of total contributions in the calendar. + """ + totalContributions: Int! + + """ + A list of the weeks of contributions in this calendar. + """ + weeks: [ContributionCalendarWeek!]! +} + +""" +Represents a single day of contributions on GitHub by a user. +""" +type ContributionCalendarDay { + """ + The hex color code that represents how many contributions were made on this day compared to others in the calendar. + """ + color: String! + + """ + How many contributions were made by the user on this day. + """ + contributionCount: Int! + + """ + Indication of contributions, relative to other days. Can be used to indicate + which color to represent this day on a calendar. + """ + contributionLevel: ContributionLevel! + + """ + The day this square represents. + """ + date: Date! + + """ + A number representing which day of the week this square represents, e.g., 1 is Monday. + """ + weekday: Int! +} + +""" +A month of contributions in a user's contribution graph. +""" +type ContributionCalendarMonth { + """ + The date of the first day of this month. + """ + firstDay: Date! + + """ + The name of the month. + """ + name: String! + + """ + How many weeks started in this month. + """ + totalWeeks: Int! + + """ + The year the month occurred in. + """ + year: Int! +} + +""" +A week of contributions in a user's contribution graph. +""" +type ContributionCalendarWeek { + """ + The days of contributions in this week. + """ + contributionDays: [ContributionCalendarDay!]! + + """ + The date of the earliest square in this week. + """ + firstDay: Date! +} + +""" +Varying levels of contributions from none to many. +""" +enum ContributionLevel { + """ + Lowest 25% of days of contributions. + """ + FIRST_QUARTILE + + """ + Highest 25% of days of contributions. More contributions than the third quartile. + """ + FOURTH_QUARTILE + + """ + No contributions occurred. + """ + NONE + + """ + Second lowest 25% of days of contributions. More contributions than the first quartile. + """ + SECOND_QUARTILE + + """ + Second highest 25% of days of contributions. More contributions than second quartile, less than the fourth quartile. + """ + THIRD_QUARTILE +} + +""" +Ordering options for contribution connections. +""" +input ContributionOrder { + """ + The ordering direction. + """ + direction: OrderDirection! +} + +""" +A contributions collection aggregates contributions such as opened issues and commits created by a user. +""" +type ContributionsCollection { + """ + Commit contributions made by the user, grouped by repository. + """ + commitContributionsByRepository( + """ + How many repositories should be included. + """ + maxRepositories: Int = 25 + ): [CommitContributionsByRepository!]! + + """ + A calendar of this user's contributions on GitHub. + """ + contributionCalendar: ContributionCalendar! + + """ + The years the user has been making contributions with the most recent year first. + """ + contributionYears: [Int!]! + + """ + Determine if this collection's time span ends in the current month. + """ + doesEndInCurrentMonth: Boolean! + + """ + The date of the first restricted contribution the user made in this time + period. Can only be non-null when the user has enabled private contribution counts. + """ + earliestRestrictedContributionDate: Date + + """ + The ending date and time of this collection. + """ + endedAt: DateTime! + + """ + The first issue the user opened on GitHub. This will be null if that issue was + opened outside the collection's time range and ignoreTimeRange is false. If + the issue is not visible but the user has opted to show private contributions, + a RestrictedContribution will be returned. + """ + firstIssueContribution: CreatedIssueOrRestrictedContribution + + """ + The first pull request the user opened on GitHub. This will be null if that + pull request was opened outside the collection's time range and + ignoreTimeRange is not true. If the pull request is not visible but the user + has opted to show private contributions, a RestrictedContribution will be returned. + """ + firstPullRequestContribution: CreatedPullRequestOrRestrictedContribution + + """ + The first repository the user created on GitHub. This will be null if that + first repository was created outside the collection's time range and + ignoreTimeRange is false. If the repository is not visible, then a + RestrictedContribution is returned. + """ + firstRepositoryContribution: CreatedRepositoryOrRestrictedContribution + + """ + Does the user have any more activity in the timeline that occurred prior to the collection's time range? + """ + hasActivityInThePast: Boolean! + + """ + Determine if there are any contributions in this collection. + """ + hasAnyContributions: Boolean! + + """ + Determine if the user made any contributions in this time frame whose details + are not visible because they were made in a private repository. Can only be + true if the user enabled private contribution counts. + """ + hasAnyRestrictedContributions: Boolean! + + """ + Whether or not the collector's time span is all within the same day. + """ + isSingleDay: Boolean! + + """ + A list of issues the user opened. + """ + issueContributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Should the user's first issue ever be excluded from the result. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented issue be excluded from the result. + """ + excludePopular: Boolean = false + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for contributions returned from the connection. + """ + orderBy: ContributionOrder = {direction: DESC} + ): CreatedIssueContributionConnection! + + """ + Issue contributions made by the user, grouped by repository. + """ + issueContributionsByRepository( + """ + Should the user's first issue ever be excluded from the result. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented issue be excluded from the result. + """ + excludePopular: Boolean = false + + """ + How many repositories should be included. + """ + maxRepositories: Int = 25 + ): [IssueContributionsByRepository!]! + + """ + When the user signed up for GitHub. This will be null if that sign up date + falls outside the collection's time range and ignoreTimeRange is false. + """ + joinedGitHubContribution: JoinedGitHubContribution + + """ + The date of the most recent restricted contribution the user made in this time + period. Can only be non-null when the user has enabled private contribution counts. + """ + latestRestrictedContributionDate: Date + + """ + When this collection's time range does not include any activity from the user, use this + to get a different collection from an earlier time range that does have activity. + """ + mostRecentCollectionWithActivity: ContributionsCollection + + """ + Returns a different contributions collection from an earlier time range than this one + that does not have any contributions. + """ + mostRecentCollectionWithoutActivity: ContributionsCollection + + """ + The issue the user opened on GitHub that received the most comments in the specified + time frame. + """ + popularIssueContribution: CreatedIssueContribution + + """ + The pull request the user opened on GitHub that received the most comments in the + specified time frame. + """ + popularPullRequestContribution: CreatedPullRequestContribution + + """ + Pull request contributions made by the user. + """ + pullRequestContributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Should the user's first pull request ever be excluded from the result. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented pull request be excluded from the result. + """ + excludePopular: Boolean = false + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for contributions returned from the connection. + """ + orderBy: ContributionOrder = {direction: DESC} + ): CreatedPullRequestContributionConnection! + + """ + Pull request contributions made by the user, grouped by repository. + """ + pullRequestContributionsByRepository( + """ + Should the user's first pull request ever be excluded from the result. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented pull request be excluded from the result. + """ + excludePopular: Boolean = false + + """ + How many repositories should be included. + """ + maxRepositories: Int = 25 + ): [PullRequestContributionsByRepository!]! + + """ + Pull request review contributions made by the user. + """ + pullRequestReviewContributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for contributions returned from the connection. + """ + orderBy: ContributionOrder = {direction: DESC} + ): CreatedPullRequestReviewContributionConnection! + + """ + Pull request review contributions made by the user, grouped by repository. + """ + pullRequestReviewContributionsByRepository( + """ + How many repositories should be included. + """ + maxRepositories: Int = 25 + ): [PullRequestReviewContributionsByRepository!]! + + """ + A list of repositories owned by the user that the user created in this time range. + """ + repositoryContributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Should the user's first repository ever be excluded from the result. + """ + excludeFirst: Boolean = false + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for contributions returned from the connection. + """ + orderBy: ContributionOrder = {direction: DESC} + ): CreatedRepositoryContributionConnection! + + """ + A count of contributions made by the user that the viewer cannot access. Only + non-zero when the user has chosen to share their private contribution counts. + """ + restrictedContributionsCount: Int! + + """ + The beginning date and time of this collection. + """ + startedAt: DateTime! + + """ + How many commits were made by the user in this time span. + """ + totalCommitContributions: Int! + + """ + How many issues the user opened. + """ + totalIssueContributions( + """ + Should the user's first issue ever be excluded from this count. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented issue be excluded from this count. + """ + excludePopular: Boolean = false + ): Int! + + """ + How many pull requests the user opened. + """ + totalPullRequestContributions( + """ + Should the user's first pull request ever be excluded from this count. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented pull request be excluded from this count. + """ + excludePopular: Boolean = false + ): Int! + + """ + How many pull request reviews the user left. + """ + totalPullRequestReviewContributions: Int! + + """ + How many different repositories the user committed to. + """ + totalRepositoriesWithContributedCommits: Int! + + """ + How many different repositories the user opened issues in. + """ + totalRepositoriesWithContributedIssues( + """ + Should the user's first issue ever be excluded from this count. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented issue be excluded from this count. + """ + excludePopular: Boolean = false + ): Int! + + """ + How many different repositories the user left pull request reviews in. + """ + totalRepositoriesWithContributedPullRequestReviews: Int! + + """ + How many different repositories the user opened pull requests in. + """ + totalRepositoriesWithContributedPullRequests( + """ + Should the user's first pull request ever be excluded from this count. + """ + excludeFirst: Boolean = false + + """ + Should the user's most commented pull request be excluded from this count. + """ + excludePopular: Boolean = false + ): Int! + + """ + How many repositories the user created. + """ + totalRepositoryContributions( + """ + Should the user's first repository ever be excluded from this count. + """ + excludeFirst: Boolean = false + ): Int! + + """ + The user who made the contributions in this collection. + """ + user: User! +} + +""" +Autogenerated input type of ConvertProjectCardNoteToIssue +""" +input ConvertProjectCardNoteToIssueInput { + """ + The body of the newly created issue. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ProjectCard ID to convert. + """ + projectCardId: ID! + + """ + The ID of the repository to create the issue in. + """ + repositoryId: ID! + + """ + The title of the newly created issue. Defaults to the card's note text. + """ + title: String +} + +""" +Autogenerated return type of ConvertProjectCardNoteToIssue +""" +type ConvertProjectCardNoteToIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated ProjectCard. + """ + projectCard: ProjectCard +} + +""" +Autogenerated input type of ConvertPullRequestToDraft +""" +input ConvertPullRequestToDraftInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the pull request to convert to draft + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of ConvertPullRequestToDraft +""" +type ConvertPullRequestToDraftPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request that is now a draft. + """ + pullRequest: PullRequest +} + +""" +Represents a 'convert_to_draft' event on a given pull request. +""" +type ConvertToDraftEvent implements Node & UniformResourceLocatable { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + The HTTP path for this convert to draft event. + """ + resourcePath: URI! + + """ + The HTTP URL for this convert to draft event. + """ + url: URI! +} + +""" +Represents a 'converted_note_to_issue' event on a given issue or pull request. +""" +type ConvertedNoteToIssueEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! +} + +""" +Represents a 'converted_to_discussion' event on a given issue. +""" +type ConvertedToDiscussionEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The discussion that the issue was converted into. + """ + discussion: Discussion + id: ID! +} + +""" +Autogenerated input type of CreateBranchProtectionRule +""" +input CreateBranchProtectionRuleInput { + """ + Can this branch be deleted. + """ + allowsDeletions: Boolean + + """ + Are force pushes allowed on this branch. + """ + allowsForcePushes: Boolean + + """ + Is branch creation a protected operation. + """ + blocksCreations: Boolean + + """ + A list of User, Team, or App IDs allowed to bypass force push targeting matching branches. + """ + bypassForcePushActorIds: [ID!] + + """ + A list of User, Team, or App IDs allowed to bypass pull requests targeting matching branches. + """ + bypassPullRequestActorIds: [ID!] + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Will new commits pushed to matching branches dismiss pull request review approvals. + """ + dismissesStaleReviews: Boolean + + """ + Can admins overwrite branch protection. + """ + isAdminEnforced: Boolean + + """ + The glob-like pattern used to determine matching branches. + """ + pattern: String! + + """ + A list of User, Team, or App IDs allowed to push to matching branches. + """ + pushActorIds: [ID!] + + """ + The global relay id of the repository in which a new branch protection rule should be created in. + """ + repositoryId: ID! + + """ + Number of approving reviews required to update matching branches. + """ + requiredApprovingReviewCount: Int + + """ + List of required status check contexts that must pass for commits to be accepted to matching branches. + """ + requiredStatusCheckContexts: [String!] + + """ + The list of required status checks + """ + requiredStatusChecks: [RequiredStatusCheckInput!] + + """ + Are approving reviews required to update matching branches. + """ + requiresApprovingReviews: Boolean + + """ + Are reviews from code owners required to update matching branches. + """ + requiresCodeOwnerReviews: Boolean + + """ + Are commits required to be signed. + """ + requiresCommitSignatures: Boolean + + """ + Are conversations required to be resolved before merging. + """ + requiresConversationResolution: Boolean + + """ + Are merge commits prohibited from being pushed to this branch. + """ + requiresLinearHistory: Boolean + + """ + Are status checks required to update matching branches. + """ + requiresStatusChecks: Boolean + + """ + Are branches required to be up to date before merging. + """ + requiresStrictStatusChecks: Boolean + + """ + Is pushing to matching branches restricted. + """ + restrictsPushes: Boolean + + """ + Is dismissal of pull request reviews restricted. + """ + restrictsReviewDismissals: Boolean + + """ + A list of User, Team, or App IDs allowed to dismiss reviews on pull requests targeting matching branches. + """ + reviewDismissalActorIds: [ID!] +} + +""" +Autogenerated return type of CreateBranchProtectionRule +""" +type CreateBranchProtectionRulePayload { + """ + The newly created BranchProtectionRule. + """ + branchProtectionRule: BranchProtectionRule + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of CreateCheckRun +""" +input CreateCheckRunInput { + """ + Possible further actions the integrator can perform, which a user may trigger. + """ + actions: [CheckRunAction!] + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The time that the check run finished. + """ + completedAt: DateTime + + """ + The final conclusion of the check. + """ + conclusion: CheckConclusionState + + """ + The URL of the integrator's site that has the full details of the check. + """ + detailsUrl: URI + + """ + A reference for the run on the integrator's system. + """ + externalId: String + + """ + The SHA of the head commit. + """ + headSha: GitObjectID! + + """ + The name of the check. + """ + name: String! + + """ + Descriptive details about the run. + """ + output: CheckRunOutput + + """ + The node ID of the repository. + """ + repositoryId: ID! + + """ + The time that the check run began. + """ + startedAt: DateTime + + """ + The current status. + """ + status: RequestableCheckStatusState +} + +""" +Autogenerated return type of CreateCheckRun +""" +type CreateCheckRunPayload { + """ + The newly created check run. + """ + checkRun: CheckRun + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of CreateCheckSuite +""" +input CreateCheckSuiteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The SHA of the head commit. + """ + headSha: GitObjectID! + + """ + The Node ID of the repository. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of CreateCheckSuite +""" +type CreateCheckSuitePayload { + """ + The newly created check suite. + """ + checkSuite: CheckSuite + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of CreateCommitOnBranch +""" +input CreateCommitOnBranchInput { + """ + The Ref to be updated. Must be a branch. + """ + branch: CommittableBranch! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The git commit oid expected at the head of the branch prior to the commit + """ + expectedHeadOid: GitObjectID! + + """ + A description of changes to files in this commit. + """ + fileChanges: FileChanges + + """ + The commit message the be included with the commit. + """ + message: CommitMessage! +} + +""" +Autogenerated return type of CreateCommitOnBranch +""" +type CreateCommitOnBranchPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new commit. + """ + commit: Commit + + """ + The ref which has been updated to point to the new commit. + """ + ref: Ref +} + +""" +Autogenerated input type of CreateDiscussion +""" +input CreateDiscussionInput { + """ + The body of the discussion. + """ + body: String! + + """ + The id of the discussion category to associate with this discussion. + """ + categoryId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the repository on which to create the discussion. + """ + repositoryId: ID! + + """ + The title of the discussion. + """ + title: String! +} + +""" +Autogenerated return type of CreateDiscussion +""" +type CreateDiscussionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The discussion that was just created. + """ + discussion: Discussion +} + +""" +Autogenerated input type of CreateEnterpriseOrganization +""" +input CreateEnterpriseOrganizationInput { + """ + The logins for the administrators of the new organization. + """ + adminLogins: [String!]! + + """ + The email used for sending billing receipts. + """ + billingEmail: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise owning the new organization. + """ + enterpriseId: ID! + + """ + The login of the new organization. + """ + login: String! + + """ + The profile name of the new organization. + """ + profileName: String! +} + +""" +Autogenerated return type of CreateEnterpriseOrganization +""" +type CreateEnterpriseOrganizationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise that owns the created organization. + """ + enterprise: Enterprise + + """ + The organization that was created. + """ + organization: Organization +} + +""" +Autogenerated input type of CreateEnvironment +""" +input CreateEnvironmentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of the environment. + """ + name: String! + + """ + The node ID of the repository. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of CreateEnvironment +""" +type CreateEnvironmentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new or existing environment. + """ + environment: Environment +} + +""" +Autogenerated input type of CreateIpAllowListEntry +""" +input CreateIpAllowListEntryInput { + """ + An IP address or range of addresses in CIDR notation. + """ + allowListValue: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Whether the IP allow list entry is active when an IP allow list is enabled. + """ + isActive: Boolean! + + """ + An optional name for the IP allow list entry. + """ + name: String + + """ + The ID of the owner for which to create the new IP allow list entry. + """ + ownerId: ID! +} + +""" +Autogenerated return type of CreateIpAllowListEntry +""" +type CreateIpAllowListEntryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The IP allow list entry that was created. + """ + ipAllowListEntry: IpAllowListEntry +} + +""" +Autogenerated input type of CreateIssue +""" +input CreateIssueInput { + """ + The Node ID for the user assignee for this issue. + """ + assigneeIds: [ID!] + + """ + The body for the issue description. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of an issue template in the repository, assigns labels and assignees from the template to the issue + """ + issueTemplate: String + + """ + An array of Node IDs of labels for this issue. + """ + labelIds: [ID!] + + """ + The Node ID of the milestone for this issue. + """ + milestoneId: ID + + """ + An array of Node IDs for projects associated with this issue. + """ + projectIds: [ID!] + + """ + The Node ID of the repository. + """ + repositoryId: ID! + + """ + The title for the issue. + """ + title: String! +} + +""" +Autogenerated return type of CreateIssue +""" +type CreateIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new issue. + """ + issue: Issue +} + +""" +Autogenerated input type of CreateMigrationSource +""" +input CreateMigrationSourceInput { + """ + The Octoshift migration source access token. + """ + accessToken: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The GitHub personal access token of the user importing to the target repository. + """ + githubPat: String + + """ + The Octoshift migration source name. + """ + name: String! + + """ + The ID of the organization that will own the Octoshift migration source. + """ + ownerId: ID! + + """ + The Octoshift migration source type. + """ + type: MigrationSourceType! + + """ + The Octoshift migration source URL. + """ + url: String! +} + +""" +Autogenerated return type of CreateMigrationSource +""" +type CreateMigrationSourcePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The created Octoshift migration source. + """ + migrationSource: MigrationSource +} + +""" +Autogenerated input type of CreateProject +""" +input CreateProjectInput { + """ + The description of project. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of project. + """ + name: String! + + """ + The owner ID to create the project under. + """ + ownerId: ID! + + """ + A list of repository IDs to create as linked repositories for the project + """ + repositoryIds: [ID!] + + """ + The name of the GitHub-provided template. + """ + template: ProjectTemplate +} + +""" +Autogenerated return type of CreateProject +""" +type CreateProjectPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new project. + """ + project: Project +} + +""" +Autogenerated input type of CreateProjectV2 +""" +input CreateProjectV2Input { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The owner ID to create the project under. + """ + ownerId: ID! + + """ + The title of the project. + """ + title: String! +} + +""" +Autogenerated return type of CreateProjectV2 +""" +type CreateProjectV2Payload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new project. + """ + projectV2: ProjectV2 +} + +""" +Autogenerated input type of CreatePullRequest +""" +input CreatePullRequestInput { + """ + The name of the branch you want your changes pulled into. This should be an existing branch + on the current repository. You cannot update the base branch on a pull request to point + to another repository. + """ + baseRefName: String! + + """ + The contents of the pull request. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Indicates whether this pull request should be a draft. + """ + draft: Boolean = false + + """ + The name of the branch where your changes are implemented. For cross-repository pull requests + in the same network, namespace `head_ref_name` with a user like this: `username:branch`. + """ + headRefName: String! + + """ + Indicates whether maintainers can modify the pull request. + """ + maintainerCanModify: Boolean = true + + """ + The Node ID of the repository. + """ + repositoryId: ID! + + """ + The title of the pull request. + """ + title: String! +} + +""" +Autogenerated return type of CreatePullRequest +""" +type CreatePullRequestPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new pull request. + """ + pullRequest: PullRequest +} + +""" +Autogenerated input type of CreateRef +""" +input CreateRefInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The fully qualified name of the new Ref (ie: `refs/heads/my_new_branch`). + """ + name: String! + + """ + The GitObjectID that the new Ref shall target. Must point to a commit. + """ + oid: GitObjectID! + + """ + The Node ID of the Repository to create the Ref in. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of CreateRef +""" +type CreateRefPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The newly created ref. + """ + ref: Ref +} + +""" +Autogenerated input type of CreateRepository +""" +input CreateRepositoryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A short description of the new repository. + """ + description: String + + """ + Indicates if the repository should have the issues feature enabled. + """ + hasIssuesEnabled: Boolean = true + + """ + Indicates if the repository should have the wiki feature enabled. + """ + hasWikiEnabled: Boolean = false + + """ + The URL for a web page about this repository. + """ + homepageUrl: URI + + """ + The name of the new repository. + """ + name: String! + + """ + The ID of the owner for the new repository. + """ + ownerId: ID + + """ + When an organization is specified as the owner, this ID identifies the team + that should be granted access to the new repository. + """ + teamId: ID + + """ + Whether this repository should be marked as a template such that anyone who + can access it can create new repositories with the same files and directory structure. + """ + template: Boolean = false + + """ + Indicates the repository's visibility level. + """ + visibility: RepositoryVisibility! +} + +""" +Autogenerated return type of CreateRepository +""" +type CreateRepositoryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new repository. + """ + repository: Repository +} + +""" +Autogenerated input type of CreateSponsorsTier +""" +input CreateSponsorsTierInput { + """ + The value of the new tier in US dollars. Valid values: 1-12000. + """ + amount: Int! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A description of what this tier is, what perks sponsors might receive, what a sponsorship at this tier means for you, etc. + """ + description: String! + + """ + Whether sponsorships using this tier should happen monthly/yearly or just once. + """ + isRecurring: Boolean = true + + """ + Whether to make the tier available immediately for sponsors to choose. + Defaults to creating a draft tier that will not be publicly visible. + """ + publish: Boolean = false + + """ + Optional ID of the private repository that sponsors at this tier should gain + read-only access to. Must be owned by an organization. + """ + repositoryId: ID + + """ + Optional name of the private repository that sponsors at this tier should gain + read-only access to. Must be owned by an organization. Necessary if + repositoryOwnerLogin is given. Will be ignored if repositoryId is given. + """ + repositoryName: String + + """ + Optional login of the organization owner of the private repository that + sponsors at this tier should gain read-only access to. Necessary if + repositoryName is given. Will be ignored if repositoryId is given. + """ + repositoryOwnerLogin: String + + """ + The ID of the user or organization who owns the GitHub Sponsors profile. + Defaults to the current user if omitted and sponsorableLogin is not given. + """ + sponsorableId: ID + + """ + The username of the user or organization who owns the GitHub Sponsors profile. + Defaults to the current user if omitted and sponsorableId is not given. + """ + sponsorableLogin: String + + """ + Optional message new sponsors at this tier will receive. + """ + welcomeMessage: String +} + +""" +Autogenerated return type of CreateSponsorsTier +""" +type CreateSponsorsTierPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new tier. + """ + sponsorsTier: SponsorsTier +} + +""" +Autogenerated input type of CreateSponsorship +""" +input CreateSponsorshipInput { + """ + The amount to pay to the sponsorable in US dollars. Required if a tierId is not specified. Valid values: 1-12000. + """ + amount: Int + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Whether the sponsorship should happen monthly/yearly or just this one time. Required if a tierId is not specified. + """ + isRecurring: Boolean + + """ + Specify whether others should be able to see that the sponsor is sponsoring + the sponsorable. Public visibility still does not reveal which tier is used. + """ + privacyLevel: SponsorshipPrivacy = PUBLIC + + """ + Whether the sponsor should receive email updates from the sponsorable. + """ + receiveEmails: Boolean = true + + """ + The ID of the user or organization who is acting as the sponsor, paying for + the sponsorship. Required if sponsorLogin is not given. + """ + sponsorId: ID + + """ + The username of the user or organization who is acting as the sponsor, paying + for the sponsorship. Required if sponsorId is not given. + """ + sponsorLogin: String + + """ + The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given. + """ + sponsorableId: ID + + """ + The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given. + """ + sponsorableLogin: String + + """ + The ID of one of sponsorable's existing tiers to sponsor at. Required if amount is not specified. + """ + tierId: ID +} + +""" +Autogenerated return type of CreateSponsorship +""" +type CreateSponsorshipPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The sponsorship that was started. + """ + sponsorship: Sponsorship +} + +""" +Autogenerated input type of CreateTeamDiscussionComment +""" +input CreateTeamDiscussionCommentInput { + """ + The content of the comment. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the discussion to which the comment belongs. + """ + discussionId: ID! +} + +""" +Autogenerated return type of CreateTeamDiscussionComment +""" +type CreateTeamDiscussionCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new comment. + """ + teamDiscussionComment: TeamDiscussionComment +} + +""" +Autogenerated input type of CreateTeamDiscussion +""" +input CreateTeamDiscussionInput { + """ + The content of the discussion. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + If true, restricts the visibility of this discussion to team members and + organization admins. If false or not specified, allows any organization member + to view this discussion. + """ + private: Boolean + + """ + The ID of the team to which the discussion belongs. + """ + teamId: ID! + + """ + The title of the discussion. + """ + title: String! +} + +""" +Autogenerated return type of CreateTeamDiscussion +""" +type CreateTeamDiscussionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new discussion. + """ + teamDiscussion: TeamDiscussion +} + +""" +Represents the contribution a user made by committing to a repository. +""" +type CreatedCommitContribution implements Contribution { + """ + How many commits were made on this day to this repository by the user. + """ + commitCount: Int! + + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The repository the user made a commit in. + """ + repository: Repository! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +The connection type for CreatedCommitContribution. +""" +type CreatedCommitContributionConnection { + """ + A list of edges. + """ + edges: [CreatedCommitContributionEdge] + + """ + A list of nodes. + """ + nodes: [CreatedCommitContribution] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of commits across days and repositories in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CreatedCommitContributionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CreatedCommitContribution +} + +""" +Represents the contribution a user made on GitHub by opening an issue. +""" +type CreatedIssueContribution implements Contribution { + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + The issue that was opened. + """ + issue: Issue! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +The connection type for CreatedIssueContribution. +""" +type CreatedIssueContributionConnection { + """ + A list of edges. + """ + edges: [CreatedIssueContributionEdge] + + """ + A list of nodes. + """ + nodes: [CreatedIssueContribution] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CreatedIssueContributionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CreatedIssueContribution +} + +""" +Represents either a issue the viewer can access or a restricted contribution. +""" +union CreatedIssueOrRestrictedContribution = CreatedIssueContribution | RestrictedContribution + +""" +Represents the contribution a user made on GitHub by opening a pull request. +""" +type CreatedPullRequestContribution implements Contribution { + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The pull request that was opened. + """ + pullRequest: PullRequest! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +The connection type for CreatedPullRequestContribution. +""" +type CreatedPullRequestContributionConnection { + """ + A list of edges. + """ + edges: [CreatedPullRequestContributionEdge] + + """ + A list of nodes. + """ + nodes: [CreatedPullRequestContribution] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CreatedPullRequestContributionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CreatedPullRequestContribution +} + +""" +Represents either a pull request the viewer can access or a restricted contribution. +""" +union CreatedPullRequestOrRestrictedContribution = CreatedPullRequestContribution | RestrictedContribution + +""" +Represents the contribution a user made by leaving a review on a pull request. +""" +type CreatedPullRequestReviewContribution implements Contribution { + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The pull request the user reviewed. + """ + pullRequest: PullRequest! + + """ + The review the user left on the pull request. + """ + pullRequestReview: PullRequestReview! + + """ + The repository containing the pull request that the user reviewed. + """ + repository: Repository! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +The connection type for CreatedPullRequestReviewContribution. +""" +type CreatedPullRequestReviewContributionConnection { + """ + A list of edges. + """ + edges: [CreatedPullRequestReviewContributionEdge] + + """ + A list of nodes. + """ + nodes: [CreatedPullRequestReviewContribution] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CreatedPullRequestReviewContributionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CreatedPullRequestReviewContribution +} + +""" +Represents the contribution a user made on GitHub by creating a repository. +""" +type CreatedRepositoryContribution implements Contribution { + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The repository that was created. + """ + repository: Repository! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +The connection type for CreatedRepositoryContribution. +""" +type CreatedRepositoryContributionConnection { + """ + A list of edges. + """ + edges: [CreatedRepositoryContributionEdge] + + """ + A list of nodes. + """ + nodes: [CreatedRepositoryContribution] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type CreatedRepositoryContributionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: CreatedRepositoryContribution +} + +""" +Represents either a repository the viewer can access or a restricted contribution. +""" +union CreatedRepositoryOrRestrictedContribution = CreatedRepositoryContribution | RestrictedContribution + +""" +Represents a mention made by one issue or pull request to another. +""" +type CrossReferencedEvent implements Node & UniformResourceLocatable { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Reference originated in a different repository. + """ + isCrossRepository: Boolean! + + """ + Identifies when the reference was made. + """ + referencedAt: DateTime! + + """ + The HTTP path for this pull request. + """ + resourcePath: URI! + + """ + Issue or pull request that made the reference. + """ + source: ReferencedSubject! + + """ + Issue or pull request to which the reference was made. + """ + target: ReferencedSubject! + + """ + The HTTP URL for this pull request. + """ + url: URI! + + """ + Checks if the target will be closed when the source is merged. + """ + willCloseTarget: Boolean! +} + +""" +An ISO-8601 encoded date string. +""" +scalar Date + +""" +An ISO-8601 encoded UTC date string. +""" +scalar DateTime + +""" +Autogenerated input type of DeclineTopicSuggestion +""" +input DeclineTopicSuggestionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of the suggested topic. + """ + name: String! + + """ + The reason why the suggested topic is declined. + """ + reason: TopicSuggestionDeclineReason! + + """ + The Node ID of the repository. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of DeclineTopicSuggestion +""" +type DeclineTopicSuggestionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The declined topic. + """ + topic: Topic +} + +""" +The possible base permissions for repositories. +""" +enum DefaultRepositoryPermissionField { + """ + Can read, write, and administrate repos by default + """ + ADMIN + + """ + No access + """ + NONE + + """ + Can read repos by default + """ + READ + + """ + Can read and write repos by default + """ + WRITE +} + +""" +Entities that can be deleted. +""" +interface Deletable { + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! +} + +""" +Autogenerated input type of DeleteBranchProtectionRule +""" +input DeleteBranchProtectionRuleInput { + """ + The global relay id of the branch protection rule to be deleted. + """ + branchProtectionRuleId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated return type of DeleteBranchProtectionRule +""" +type DeleteBranchProtectionRulePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of DeleteDeployment +""" +input DeleteDeploymentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the deployment to be deleted. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteDeployment +""" +type DeleteDeploymentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of DeleteDiscussionComment +""" +input DeleteDiscussionCommentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node id of the discussion comment to delete. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteDiscussionComment +""" +type DeleteDiscussionCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The discussion comment that was just deleted. + """ + comment: DiscussionComment +} + +""" +Autogenerated input type of DeleteDiscussion +""" +input DeleteDiscussionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the discussion to delete. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteDiscussion +""" +type DeleteDiscussionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The discussion that was just deleted. + """ + discussion: Discussion +} + +""" +Autogenerated input type of DeleteEnvironment +""" +input DeleteEnvironmentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the environment to be deleted. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteEnvironment +""" +type DeleteEnvironmentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of DeleteIpAllowListEntry +""" +input DeleteIpAllowListEntryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the IP allow list entry to delete. + """ + ipAllowListEntryId: ID! +} + +""" +Autogenerated return type of DeleteIpAllowListEntry +""" +type DeleteIpAllowListEntryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The IP allow list entry that was deleted. + """ + ipAllowListEntry: IpAllowListEntry +} + +""" +Autogenerated input type of DeleteIssueComment +""" +input DeleteIssueCommentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the comment to delete. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteIssueComment +""" +type DeleteIssueCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of DeleteIssue +""" +input DeleteIssueInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the issue to delete. + """ + issueId: ID! +} + +""" +Autogenerated return type of DeleteIssue +""" +type DeleteIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The repository the issue belonged to + """ + repository: Repository +} + +""" +Autogenerated input type of DeleteProjectCard +""" +input DeleteProjectCardInput { + """ + The id of the card to delete. + """ + cardId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated return type of DeleteProjectCard +""" +type DeleteProjectCardPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The column the deleted card was in. + """ + column: ProjectColumn + + """ + The deleted card ID. + """ + deletedCardId: ID +} + +""" +Autogenerated input type of DeleteProjectColumn +""" +input DeleteProjectColumnInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the column to delete. + """ + columnId: ID! +} + +""" +Autogenerated return type of DeleteProjectColumn +""" +type DeleteProjectColumnPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The deleted column ID. + """ + deletedColumnId: ID + + """ + The project the deleted column was in. + """ + project: Project +} + +""" +Autogenerated input type of DeleteProject +""" +input DeleteProjectInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Project ID to update. + """ + projectId: ID! +} + +""" +Autogenerated input type of DeleteProjectNextItem +""" +input DeleteProjectNextItemInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the item to be removed. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `itemId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + itemId: ID + + """ + The ID of the Project from which the item should be removed. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `projectId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + projectId: ID +} + +""" +Autogenerated return type of DeleteProjectNextItem +""" +type DeleteProjectNextItemPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the deleted item. + """ + deletedItemId: ID @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Autogenerated return type of DeleteProject +""" +type DeleteProjectPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The repository or organization the project was removed from. + """ + owner: ProjectOwner +} + +""" +Autogenerated input type of DeleteProjectV2Item +""" +input DeleteProjectV2ItemInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the item to be removed. + """ + itemId: ID! + + """ + The ID of the Project from which the item should be removed. + """ + projectId: ID! +} + +""" +Autogenerated return type of DeleteProjectV2Item +""" +type DeleteProjectV2ItemPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the deleted item. + """ + deletedItemId: ID +} + +""" +Autogenerated input type of DeletePullRequestReviewComment +""" +input DeletePullRequestReviewCommentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the comment to delete. + """ + id: ID! +} + +""" +Autogenerated return type of DeletePullRequestReviewComment +""" +type DeletePullRequestReviewCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request review the deleted comment belonged to. + """ + pullRequestReview: PullRequestReview +} + +""" +Autogenerated input type of DeletePullRequestReview +""" +input DeletePullRequestReviewInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the pull request review to delete. + """ + pullRequestReviewId: ID! +} + +""" +Autogenerated return type of DeletePullRequestReview +""" +type DeletePullRequestReviewPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The deleted pull request review. + """ + pullRequestReview: PullRequestReview +} + +""" +Autogenerated input type of DeleteRef +""" +input DeleteRefInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the Ref to be deleted. + """ + refId: ID! +} + +""" +Autogenerated return type of DeleteRef +""" +type DeleteRefPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of DeleteTeamDiscussionComment +""" +input DeleteTeamDiscussionCommentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the comment to delete. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteTeamDiscussionComment +""" +type DeleteTeamDiscussionCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of DeleteTeamDiscussion +""" +input DeleteTeamDiscussionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The discussion ID to delete. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteTeamDiscussion +""" +type DeleteTeamDiscussionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of DeleteVerifiableDomain +""" +input DeleteVerifiableDomainInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the verifiable domain to delete. + """ + id: ID! +} + +""" +Autogenerated return type of DeleteVerifiableDomain +""" +type DeleteVerifiableDomainPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The owning account from which the domain was deleted. + """ + owner: VerifiableDomainOwner +} + +""" +Represents a 'demilestoned' event on a given issue or pull request. +""" +type DemilestonedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the milestone title associated with the 'demilestoned' event. + """ + milestoneTitle: String! + + """ + Object referenced by event. + """ + subject: MilestoneItem! +} + +""" +A Dependabot Update for a dependency in a repository +""" +type DependabotUpdate implements RepositoryNode { + """ + The error from a dependency update + """ + error: DependabotUpdateError + + """ + The associated pull request + """ + pullRequest: PullRequest + + """ + The repository associated with this node. + """ + repository: Repository! +} + +""" +An error produced from a Dependabot Update +""" +type DependabotUpdateError { + """ + The body of the error + """ + body: String! + + """ + The error code + """ + errorType: String! + + """ + The title of the error + """ + title: String! +} + +""" +The possible ecosystems of a dependency graph package. +""" +enum DependencyGraphEcosystem { + """ + GitHub Actions + """ + ACTIONS + + """ + PHP packages hosted at packagist.org + """ + COMPOSER + + """ + Go modules + """ + GO + + """ + Java artifacts hosted at the Maven central repository + """ + MAVEN + + """ + JavaScript packages hosted at npmjs.com + """ + NPM + + """ + .NET packages hosted at the NuGet Gallery + """ + NUGET + + """ + Python packages hosted at PyPI.org + """ + PIP + + """ + Ruby gems hosted at RubyGems.org + """ + RUBYGEMS + + """ + Rust crates + """ + RUST +} + +""" +A repository deploy key. +""" +type DeployKey implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + The deploy key. + """ + key: String! + + """ + Whether or not the deploy key is read only. + """ + readOnly: Boolean! + + """ + The deploy key title. + """ + title: String! + + """ + Whether or not the deploy key has been verified. + """ + verified: Boolean! +} + +""" +The connection type for DeployKey. +""" +type DeployKeyConnection { + """ + A list of edges. + """ + edges: [DeployKeyEdge] + + """ + A list of nodes. + """ + nodes: [DeployKey] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DeployKeyEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DeployKey +} + +""" +Represents a 'deployed' event on a given pull request. +""" +type DeployedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The deployment associated with the 'deployed' event. + """ + deployment: Deployment! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + The ref associated with the 'deployed' event. + """ + ref: Ref +} + +""" +Represents triggered deployment instance. +""" +type Deployment implements Node { + """ + Identifies the commit sha of the deployment. + """ + commit: Commit + + """ + Identifies the oid of the deployment commit, even if the commit has been deleted. + """ + commitOid: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the actor who triggered the deployment. + """ + creator: Actor! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The deployment description. + """ + description: String + + """ + The latest environment to which this deployment was made. + """ + environment: String + id: ID! + + """ + The latest environment to which this deployment was made. + """ + latestEnvironment: String + + """ + The latest status of this deployment. + """ + latestStatus: DeploymentStatus + + """ + The original environment to which this deployment was made. + """ + originalEnvironment: String + + """ + Extra information that a deployment system might need. + """ + payload: String + + """ + Identifies the Ref of the deployment, if the deployment was created by ref. + """ + ref: Ref + + """ + Identifies the repository associated with the deployment. + """ + repository: Repository! + + """ + The current state of the deployment. + """ + state: DeploymentState + + """ + A list of statuses associated with the deployment. + """ + statuses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DeploymentStatusConnection + + """ + The deployment task. + """ + task: String + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for Deployment. +""" +type DeploymentConnection { + """ + A list of edges. + """ + edges: [DeploymentEdge] + + """ + A list of nodes. + """ + nodes: [Deployment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DeploymentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Deployment +} + +""" +Represents a 'deployment_environment_changed' event on a given pull request. +""" +type DeploymentEnvironmentChangedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The deployment status that updated the deployment environment. + """ + deploymentStatus: DeploymentStatus! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! +} + +""" +Ordering options for deployment connections +""" +input DeploymentOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order deployments by. + """ + field: DeploymentOrderField! +} + +""" +Properties by which deployment connections can be ordered. +""" +enum DeploymentOrderField { + """ + Order collection by creation time + """ + CREATED_AT +} + +""" +A protection rule. +""" +type DeploymentProtectionRule { + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The teams or users that can review the deployment + """ + reviewers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DeploymentReviewerConnection! + + """ + The timeout in minutes for this protection rule. + """ + timeout: Int! + + """ + The type of protection rule. + """ + type: DeploymentProtectionRuleType! +} + +""" +The connection type for DeploymentProtectionRule. +""" +type DeploymentProtectionRuleConnection { + """ + A list of edges. + """ + edges: [DeploymentProtectionRuleEdge] + + """ + A list of nodes. + """ + nodes: [DeploymentProtectionRule] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DeploymentProtectionRuleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DeploymentProtectionRule +} + +""" +The possible protection rule types. +""" +enum DeploymentProtectionRuleType { + """ + Required reviewers + """ + REQUIRED_REVIEWERS + + """ + Wait timer + """ + WAIT_TIMER +} + +""" +A request to deploy a workflow run to an environment. +""" +type DeploymentRequest { + """ + Whether or not the current user can approve the deployment + """ + currentUserCanApprove: Boolean! + + """ + The target environment of the deployment + """ + environment: Environment! + + """ + The teams or users that can review the deployment + """ + reviewers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DeploymentReviewerConnection! + + """ + The wait timer in minutes configured in the environment + """ + waitTimer: Int! + + """ + The wait timer in minutes configured in the environment + """ + waitTimerStartedAt: DateTime +} + +""" +The connection type for DeploymentRequest. +""" +type DeploymentRequestConnection { + """ + A list of edges. + """ + edges: [DeploymentRequestEdge] + + """ + A list of nodes. + """ + nodes: [DeploymentRequest] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DeploymentRequestEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DeploymentRequest +} + +""" +A deployment review. +""" +type DeploymentReview implements Node { + """ + The comment the user left. + """ + comment: String! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The environments approved or rejected + """ + environments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): EnvironmentConnection! + id: ID! + + """ + The decision of the user. + """ + state: DeploymentReviewState! + + """ + The user that reviewed the deployment. + """ + user: User! +} + +""" +The connection type for DeploymentReview. +""" +type DeploymentReviewConnection { + """ + A list of edges. + """ + edges: [DeploymentReviewEdge] + + """ + A list of nodes. + """ + nodes: [DeploymentReview] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DeploymentReviewEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DeploymentReview +} + +""" +The possible states for a deployment review. +""" +enum DeploymentReviewState { + """ + The deployment was approved. + """ + APPROVED + + """ + The deployment was rejected. + """ + REJECTED +} + +""" +Users and teams. +""" +union DeploymentReviewer = Team | User + +""" +The connection type for DeploymentReviewer. +""" +type DeploymentReviewerConnection { + """ + A list of edges. + """ + edges: [DeploymentReviewerEdge] + + """ + A list of nodes. + """ + nodes: [DeploymentReviewer] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DeploymentReviewerEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DeploymentReviewer +} + +""" +The possible states in which a deployment can be. +""" +enum DeploymentState { + """ + The pending deployment was not updated after 30 minutes. + """ + ABANDONED + + """ + The deployment is currently active. + """ + ACTIVE + + """ + An inactive transient deployment. + """ + DESTROYED + + """ + The deployment experienced an error. + """ + ERROR + + """ + The deployment has failed. + """ + FAILURE + + """ + The deployment is inactive. + """ + INACTIVE + + """ + The deployment is in progress. + """ + IN_PROGRESS + + """ + The deployment is pending. + """ + PENDING + + """ + The deployment has queued + """ + QUEUED + + """ + The deployment is waiting. + """ + WAITING +} + +""" +Describes the status of a given deployment attempt. +""" +type DeploymentStatus implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the actor who triggered the deployment. + """ + creator: Actor! + + """ + Identifies the deployment associated with status. + """ + deployment: Deployment! + + """ + Identifies the description of the deployment. + """ + description: String + + """ + Identifies the environment URL of the deployment. + """ + environmentUrl: URI + id: ID! + + """ + Identifies the log URL of the deployment. + """ + logUrl: URI + + """ + Identifies the current state of the deployment. + """ + state: DeploymentStatusState! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for DeploymentStatus. +""" +type DeploymentStatusConnection { + """ + A list of edges. + """ + edges: [DeploymentStatusEdge] + + """ + A list of nodes. + """ + nodes: [DeploymentStatus] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DeploymentStatusEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DeploymentStatus +} + +""" +The possible states for a deployment status. +""" +enum DeploymentStatusState { + """ + The deployment experienced an error. + """ + ERROR + + """ + The deployment has failed. + """ + FAILURE + + """ + The deployment is inactive. + """ + INACTIVE + + """ + The deployment is in progress. + """ + IN_PROGRESS + + """ + The deployment is pending. + """ + PENDING + + """ + The deployment is queued + """ + QUEUED + + """ + The deployment was successful. + """ + SUCCESS + + """ + The deployment is waiting. + """ + WAITING +} + +""" +The possible sides of a diff. +""" +enum DiffSide { + """ + The left side of the diff. + """ + LEFT + + """ + The right side of the diff. + """ + RIGHT +} + +""" +Autogenerated input type of DisablePullRequestAutoMerge +""" +input DisablePullRequestAutoMergeInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the pull request to disable auto merge on. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of DisablePullRequestAutoMerge +""" +type DisablePullRequestAutoMergePayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request auto merge was disabled on. + """ + pullRequest: PullRequest +} + +""" +Represents a 'disconnected' event on a given issue or pull request. +""" +type DisconnectedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Reference originated in a different repository. + """ + isCrossRepository: Boolean! + + """ + Issue or pull request from which the issue was disconnected. + """ + source: ReferencedSubject! + + """ + Issue or pull request which was disconnected. + """ + subject: ReferencedSubject! +} + +""" +A discussion in a repository. +""" +type Discussion implements Comment & Deletable & Labelable & Lockable & Node & Reactable & RepositoryNode & Subscribable & Updatable & Votable { + """ + Reason that the conversation was locked. + """ + activeLockReason: LockReason + + """ + The comment chosen as this discussion's answer, if any. + """ + answer: DiscussionComment + + """ + The time when a user chose this discussion's answer, if answered. + """ + answerChosenAt: DateTime + + """ + The user who chose this discussion's answer, if answered. + """ + answerChosenBy: Actor + + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + The main text of the discussion post. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + The category for this discussion. + """ + category: DiscussionCategory! + + """ + The replies to the discussion. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DiscussionCommentConnection! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + A list of labels associated with the object. + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for labels returned from the connection. + """ + orderBy: LabelOrder = {field: CREATED_AT, direction: ASC} + ): LabelConnection + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + `true` if the object is locked + """ + locked: Boolean! + + """ + The number identifying this discussion within the repository. + """ + number: Int! + + """ + The poll associated with this discussion, if one exists. + """ + poll: DiscussionPoll + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + The path for this discussion. + """ + resourcePath: URI! + + """ + The title of this discussion. + """ + title: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + Number of upvotes that this subject has received. + """ + upvoteCount: Int! + + """ + The URL for this discussion. + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Whether or not the current user can add or remove an upvote on this subject. + """ + viewerCanUpvote: Boolean! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! + + """ + Whether or not the current user has already upvoted this subject. + """ + viewerHasUpvoted: Boolean! + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState +} + +""" +A category for discussions in a repository. +""" +type DiscussionCategory implements Node & RepositoryNode { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + A description of this category. + """ + description: String + + """ + An emoji representing this category. + """ + emoji: String! + + """ + This category's emoji rendered as HTML. + """ + emojiHTML: HTML! + id: ID! + + """ + Whether or not discussions in this category support choosing an answer with the markDiscussionCommentAsAnswer mutation. + """ + isAnswerable: Boolean! + + """ + The name of this category. + """ + name: String! + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for DiscussionCategory. +""" +type DiscussionCategoryConnection { + """ + A list of edges. + """ + edges: [DiscussionCategoryEdge] + + """ + A list of nodes. + """ + nodes: [DiscussionCategory] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DiscussionCategoryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DiscussionCategory +} + +""" +A comment on a discussion. +""" +type DiscussionComment implements Comment & Deletable & Minimizable & Node & Reactable & Updatable & UpdatableComment & Votable { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + The body as Markdown. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The time when this replied-to comment was deleted + """ + deletedAt: DateTime + + """ + The discussion this comment was created in + """ + discussion: Discussion + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + Has this comment been chosen as the answer of its discussion? + """ + isAnswer: Boolean! + + """ + Returns whether or not a comment has been minimized. + """ + isMinimized: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Returns why the comment was minimized. + """ + minimizedReason: String + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The threaded replies to this comment. + """ + replies( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DiscussionCommentConnection! + + """ + The discussion comment this comment is a reply to + """ + replyTo: DiscussionComment + + """ + The path for this discussion comment. + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + Number of upvotes that this subject has received. + """ + upvoteCount: Int! + + """ + The URL for this discussion comment. + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Can the current user mark this comment as an answer? + """ + viewerCanMarkAsAnswer: Boolean! + + """ + Check if the current viewer can minimize this object. + """ + viewerCanMinimize: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Can the current user unmark this comment as an answer? + """ + viewerCanUnmarkAsAnswer: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Whether or not the current user can add or remove an upvote on this subject. + """ + viewerCanUpvote: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! + + """ + Whether or not the current user has already upvoted this subject. + """ + viewerHasUpvoted: Boolean! +} + +""" +The connection type for DiscussionComment. +""" +type DiscussionCommentConnection { + """ + A list of edges. + """ + edges: [DiscussionCommentEdge] + + """ + A list of nodes. + """ + nodes: [DiscussionComment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DiscussionCommentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DiscussionComment +} + +""" +The connection type for Discussion. +""" +type DiscussionConnection { + """ + A list of edges. + """ + edges: [DiscussionEdge] + + """ + A list of nodes. + """ + nodes: [Discussion] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DiscussionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Discussion +} + +""" +Ways in which lists of discussions can be ordered upon return. +""" +input DiscussionOrder { + """ + The direction in which to order discussions by the specified field. + """ + direction: OrderDirection! + + """ + The field by which to order discussions. + """ + field: DiscussionOrderField! +} + +""" +Properties by which discussion connections can be ordered. +""" +enum DiscussionOrderField { + """ + Order discussions by creation time. + """ + CREATED_AT + + """ + Order discussions by most recent modification time. + """ + UPDATED_AT +} + +""" +A poll for a discussion. +""" +type DiscussionPoll implements Node { + """ + The discussion that this poll belongs to. + """ + discussion: Discussion + id: ID! + + """ + The options for this poll. + """ + options( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + How to order the options for the discussion poll. + """ + orderBy: DiscussionPollOptionOrder = {field: AUTHORED_ORDER, direction: ASC} + ): DiscussionPollOptionConnection + + """ + The question that is being asked by this poll. + """ + question: String! + + """ + The total number of votes that have been cast for this poll. + """ + totalVoteCount: Int! + + """ + Indicates if the viewer has permission to vote in this poll. + """ + viewerCanVote: Boolean! + + """ + Indicates if the viewer has voted for any option in this poll. + """ + viewerHasVoted: Boolean! +} + +""" +An option for a discussion poll. +""" +type DiscussionPollOption implements Node { + id: ID! + + """ + The text for this option. + """ + option: String! + + """ + The discussion poll that this option belongs to. + """ + poll: DiscussionPoll + + """ + The total number of votes that have been cast for this option. + """ + totalVoteCount: Int! + + """ + Indicates if the viewer has voted for this option in the poll. + """ + viewerHasVoted: Boolean! +} + +""" +The connection type for DiscussionPollOption. +""" +type DiscussionPollOptionConnection { + """ + A list of edges. + """ + edges: [DiscussionPollOptionEdge] + + """ + A list of nodes. + """ + nodes: [DiscussionPollOption] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type DiscussionPollOptionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DiscussionPollOption +} + +""" +Ordering options for discussion poll option connections. +""" +input DiscussionPollOptionOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order poll options by. + """ + field: DiscussionPollOptionOrderField! +} + +""" +Properties by which discussion poll option connections can be ordered. +""" +enum DiscussionPollOptionOrderField { + """ + Order poll options by the order that the poll author specified when creating the poll. + """ + AUTHORED_ORDER + + """ + Order poll options by the number of votes it has. + """ + VOTE_COUNT +} + +""" +Autogenerated input type of DismissPullRequestReview +""" +input DismissPullRequestReviewInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The contents of the pull request review dismissal message. + """ + message: String! + + """ + The Node ID of the pull request review to modify. + """ + pullRequestReviewId: ID! +} + +""" +Autogenerated return type of DismissPullRequestReview +""" +type DismissPullRequestReviewPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The dismissed pull request review. + """ + pullRequestReview: PullRequestReview +} + +""" +The possible reasons that a Dependabot alert was dismissed. +""" +enum DismissReason { + """ + A fix has already been started + """ + FIX_STARTED + + """ + This alert is inaccurate or incorrect + """ + INACCURATE + + """ + Vulnerable code is not actually used + """ + NOT_USED + + """ + No bandwidth to fix this + """ + NO_BANDWIDTH + + """ + Risk is tolerable to this project + """ + TOLERABLE_RISK +} + +""" +Autogenerated input type of DismissRepositoryVulnerabilityAlert +""" +input DismissRepositoryVulnerabilityAlertInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The reason the Dependabot alert is being dismissed. + """ + dismissReason: DismissReason! + + """ + The Dependabot alert ID to dismiss. + """ + repositoryVulnerabilityAlertId: ID! +} + +""" +Autogenerated return type of DismissRepositoryVulnerabilityAlert +""" +type DismissRepositoryVulnerabilityAlertPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Dependabot alert that was dismissed + """ + repositoryVulnerabilityAlert: RepositoryVulnerabilityAlert +} + +""" +A draft issue within a project. +""" +type DraftIssue implements Node { + """ + A list of users to assigned to this draft issue. + """ + assignees( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! + + """ + The body of the draft issue. + """ + body: String! + + """ + The body of the draft issue rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body of the draft issue rendered to text. + """ + bodyText: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created this draft issue. + """ + creator: Actor + id: ID! + + """ + The project (beta) that contains this draft issue. + """ + project: ProjectNext! + + """ + The project (beta) item that wraps this draft issue. + """ + projectItem: ProjectNextItem! + + """ + List of items linked with the draft issue (currently draft issue can be linked to only one item). + """ + projectV2Items( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ItemConnection! + + """ + Projects that link to this draft issue (currently draft issue can be linked to only one project). + """ + projectsV2( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2Connection! + + """ + The title of the draft issue + """ + title: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +Specifies a review comment to be left with a Pull Request Review. +""" +input DraftPullRequestReviewComment { + """ + Body of the comment to leave. + """ + body: String! + + """ + Path to the file being commented on. + """ + path: String! + + """ + Position in the file to leave a comment on. + """ + position: Int! +} + +""" +Specifies a review comment thread to be left with a Pull Request Review. +""" +input DraftPullRequestReviewThread { + """ + Body of the comment to leave. + """ + body: String! + + """ + The line of the blob to which the thread refers. The end of the line range for multi-line comments. + """ + line: Int! + + """ + Path to the file being commented on. + """ + path: String! + + """ + The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range. + """ + side: DiffSide = RIGHT + + """ + The first line of the range to which the comment refers. + """ + startLine: Int + + """ + The side of the diff on which the start line resides. + """ + startSide: DiffSide = RIGHT +} + +""" +Autogenerated input type of EnablePullRequestAutoMerge +""" +input EnablePullRequestAutoMergeInput { + """ + The email address to associate with this merge. + """ + authorEmail: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Commit body to use for the commit when the PR is mergable; if omitted, a default message will be used. + """ + commitBody: String + + """ + Commit headline to use for the commit when the PR is mergable; if omitted, a default message will be used. + """ + commitHeadline: String + + """ + The merge method to use. If omitted, defaults to 'MERGE' + """ + mergeMethod: PullRequestMergeMethod = MERGE + + """ + ID of the pull request to enable auto-merge on. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of EnablePullRequestAutoMerge +""" +type EnablePullRequestAutoMergePayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request auto-merge was enabled on. + """ + pullRequest: PullRequest +} + +""" +An account to manage multiple organizations with consolidated policy and billing. +""" +type Enterprise implements Node { + """ + A URL pointing to the enterprise's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + Enterprise billing information visible to enterprise billing managers. + """ + billingInfo: EnterpriseBillingInfo + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The description of the enterprise. + """ + description: String + + """ + The description of the enterprise as HTML. + """ + descriptionHTML: HTML! + id: ID! + + """ + The location of the enterprise. + """ + location: String + + """ + A list of users who are members of this enterprise. + """ + members( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Only return members within the selected GitHub Enterprise deployment + """ + deployment: EnterpriseUserDeployment + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for members returned from the connection. + """ + orderBy: EnterpriseMemberOrder = {field: LOGIN, direction: ASC} + + """ + Only return members within the organizations with these logins + """ + organizationLogins: [String!] + + """ + The search string to look for. + """ + query: String + + """ + The role of the user in the enterprise organization or server. + """ + role: EnterpriseUserAccountMembershipRole + ): EnterpriseMemberConnection! + + """ + The name of the enterprise. + """ + name: String! + + """ + A list of organizations that belong to this enterprise. + """ + organizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations returned from the connection. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The search string to look for. + """ + query: String + + """ + The viewer's role in an organization. + """ + viewerOrganizationRole: RoleInOrganization + ): OrganizationConnection! + + """ + Enterprise information only visible to enterprise owners. + """ + ownerInfo: EnterpriseOwnerInfo + + """ + The HTTP path for this enterprise. + """ + resourcePath: URI! + + """ + The URL-friendly identifier for the enterprise. + """ + slug: String! + + """ + The HTTP URL for this enterprise. + """ + url: URI! + + """ + A list of user accounts on this enterprise. + """ + userAccounts( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): EnterpriseUserAccountConnection! @deprecated(reason: "The `Enterprise.userAccounts` field is being removed. Use the `Enterprise.members` field instead. Removal on 2022-07-01 UTC.") + + """ + Is the current viewer an admin of this enterprise? + """ + viewerIsAdmin: Boolean! + + """ + The URL of the enterprise website. + """ + websiteUrl: URI +} + +""" +The connection type for User. +""" +type EnterpriseAdministratorConnection { + """ + A list of edges. + """ + edges: [EnterpriseAdministratorEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +A User who is an administrator of an enterprise. +""" +type EnterpriseAdministratorEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: User + + """ + The role of the administrator. + """ + role: EnterpriseAdministratorRole! +} + +""" +An invitation for a user to become an owner or billing manager of an enterprise. +""" +type EnterpriseAdministratorInvitation implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The email of the person who was invited to the enterprise. + """ + email: String + + """ + The enterprise the invitation is for. + """ + enterprise: Enterprise! + id: ID! + + """ + The user who was invited to the enterprise. + """ + invitee: User + + """ + The user who created the invitation. + """ + inviter: User + + """ + The invitee's pending role in the enterprise (owner or billing_manager). + """ + role: EnterpriseAdministratorRole! +} + +""" +The connection type for EnterpriseAdministratorInvitation. +""" +type EnterpriseAdministratorInvitationConnection { + """ + A list of edges. + """ + edges: [EnterpriseAdministratorInvitationEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseAdministratorInvitation] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnterpriseAdministratorInvitationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseAdministratorInvitation +} + +""" +Ordering options for enterprise administrator invitation connections +""" +input EnterpriseAdministratorInvitationOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order enterprise administrator invitations by. + """ + field: EnterpriseAdministratorInvitationOrderField! +} + +""" +Properties by which enterprise administrator invitation connections can be ordered. +""" +enum EnterpriseAdministratorInvitationOrderField { + """ + Order enterprise administrator member invitations by creation time + """ + CREATED_AT +} + +""" +The possible administrator roles in an enterprise account. +""" +enum EnterpriseAdministratorRole { + """ + Represents a billing manager of the enterprise account. + """ + BILLING_MANAGER + + """ + Represents an owner of the enterprise account. + """ + OWNER +} + +""" +Metadata for an audit entry containing enterprise account information. +""" +interface EnterpriseAuditEntryData { + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI +} + +""" +Enterprise billing information visible to enterprise billing managers and owners. +""" +type EnterpriseBillingInfo { + """ + The number of licenseable users/emails across the enterprise. + """ + allLicensableUsersCount: Int! + + """ + The number of data packs used by all organizations owned by the enterprise. + """ + assetPacks: Int! + + """ + The bandwidth quota in GB for all organizations owned by the enterprise. + """ + bandwidthQuota: Float! + + """ + The bandwidth usage in GB for all organizations owned by the enterprise. + """ + bandwidthUsage: Float! + + """ + The bandwidth usage as a percentage of the bandwidth quota. + """ + bandwidthUsagePercentage: Int! + + """ + The storage quota in GB for all organizations owned by the enterprise. + """ + storageQuota: Float! + + """ + The storage usage in GB for all organizations owned by the enterprise. + """ + storageUsage: Float! + + """ + The storage usage as a percentage of the storage quota. + """ + storageUsagePercentage: Int! + + """ + The number of available licenses across all owned organizations based on the unique number of billable users. + """ + totalAvailableLicenses: Int! + + """ + The total number of licenses allocated. + """ + totalLicenses: Int! +} + +""" +The possible values for the enterprise base repository permission setting. +""" +enum EnterpriseDefaultRepositoryPermissionSettingValue { + """ + Organization members will be able to clone, pull, push, and add new collaborators to all organization repositories. + """ + ADMIN + + """ + Organization members will only be able to clone and pull public repositories. + """ + NONE + + """ + Organizations in the enterprise choose base repository permissions for their members. + """ + NO_POLICY + + """ + Organization members will be able to clone and pull all organization repositories. + """ + READ + + """ + Organization members will be able to clone, pull, and push all organization repositories. + """ + WRITE +} + +""" +The possible values for an enabled/disabled enterprise setting. +""" +enum EnterpriseEnabledDisabledSettingValue { + """ + The setting is disabled for organizations in the enterprise. + """ + DISABLED + + """ + The setting is enabled for organizations in the enterprise. + """ + ENABLED + + """ + There is no policy set for organizations in the enterprise. + """ + NO_POLICY +} + +""" +The possible values for an enabled/no policy enterprise setting. +""" +enum EnterpriseEnabledSettingValue { + """ + The setting is enabled for organizations in the enterprise. + """ + ENABLED + + """ + There is no policy set for organizations in the enterprise. + """ + NO_POLICY +} + +""" +An identity provider configured to provision identities for an enterprise. +""" +type EnterpriseIdentityProvider implements Node { + """ + The digest algorithm used to sign SAML requests for the identity provider. + """ + digestMethod: SamlDigestAlgorithm + + """ + The enterprise this identity provider belongs to. + """ + enterprise: Enterprise + + """ + ExternalIdentities provisioned by this identity provider. + """ + externalIdentities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter to external identities with the users login + """ + login: String + + """ + Filter to external identities with valid org membership only + """ + membersOnly: Boolean + + """ + Filter to external identities with the users userName/NameID attribute + """ + userName: String + ): ExternalIdentityConnection! + id: ID! + + """ + The x509 certificate used by the identity provider to sign assertions and responses. + """ + idpCertificate: X509Certificate + + """ + The Issuer Entity ID for the SAML identity provider. + """ + issuer: String + + """ + Recovery codes that can be used by admins to access the enterprise if the identity provider is unavailable. + """ + recoveryCodes: [String!] + + """ + The signature algorithm used to sign SAML requests for the identity provider. + """ + signatureMethod: SamlSignatureAlgorithm + + """ + The URL endpoint for the identity provider's SAML SSO. + """ + ssoUrl: URI +} + +""" +An object that is a member of an enterprise. +""" +union EnterpriseMember = EnterpriseUserAccount | User + +""" +The connection type for EnterpriseMember. +""" +type EnterpriseMemberConnection { + """ + A list of edges. + """ + edges: [EnterpriseMemberEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseMember] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +A User who is a member of an enterprise through one or more organizations. +""" +type EnterpriseMemberEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseMember +} + +""" +Ordering options for enterprise member connections. +""" +input EnterpriseMemberOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order enterprise members by. + """ + field: EnterpriseMemberOrderField! +} + +""" +Properties by which enterprise member connections can be ordered. +""" +enum EnterpriseMemberOrderField { + """ + Order enterprise members by creation time + """ + CREATED_AT + + """ + Order enterprise members by login + """ + LOGIN +} + +""" +The possible values for the enterprise members can create repositories setting. +""" +enum EnterpriseMembersCanCreateRepositoriesSettingValue { + """ + Members will be able to create public and private repositories. + """ + ALL + + """ + Members will not be able to create public or private repositories. + """ + DISABLED + + """ + Organization administrators choose whether to allow members to create repositories. + """ + NO_POLICY + + """ + Members will be able to create only private repositories. + """ + PRIVATE + + """ + Members will be able to create only public repositories. + """ + PUBLIC +} + +""" +The possible values for the members can make purchases setting. +""" +enum EnterpriseMembersCanMakePurchasesSettingValue { + """ + The setting is disabled for organizations in the enterprise. + """ + DISABLED + + """ + The setting is enabled for organizations in the enterprise. + """ + ENABLED +} + +""" +The connection type for Organization. +""" +type EnterpriseOrganizationMembershipConnection { + """ + A list of edges. + """ + edges: [EnterpriseOrganizationMembershipEdge] + + """ + A list of nodes. + """ + nodes: [Organization] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An enterprise organization that a user is a member of. +""" +type EnterpriseOrganizationMembershipEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Organization + + """ + The role of the user in the enterprise membership. + """ + role: EnterpriseUserAccountMembershipRole! +} + +""" +The connection type for User. +""" +type EnterpriseOutsideCollaboratorConnection { + """ + A list of edges. + """ + edges: [EnterpriseOutsideCollaboratorEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +A User who is an outside collaborator of an enterprise through one or more organizations. +""" +type EnterpriseOutsideCollaboratorEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: User + + """ + The enterprise organization repositories this user is a member of. + """ + repositories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories. + """ + orderBy: RepositoryOrder = {field: NAME, direction: ASC} + ): EnterpriseRepositoryInfoConnection! +} + +""" +Enterprise information only visible to enterprise owners. +""" +type EnterpriseOwnerInfo { + """ + A list of all of the administrators for this enterprise. + """ + admins( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for administrators returned from the connection. + """ + orderBy: EnterpriseMemberOrder = {field: LOGIN, direction: ASC} + + """ + Only return members within the organizations with these logins + """ + organizationLogins: [String!] + + """ + The search string to look for. + """ + query: String + + """ + The role to filter by. + """ + role: EnterpriseAdministratorRole + ): EnterpriseAdministratorConnection! + + """ + A list of users in the enterprise who currently have two-factor authentication disabled. + """ + affiliatedUsersWithTwoFactorDisabled( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! + + """ + Whether or not affiliated users with two-factor authentication disabled exist in the enterprise. + """ + affiliatedUsersWithTwoFactorDisabledExist: Boolean! + + """ + The setting value for whether private repository forking is enabled for repositories in organizations in this enterprise. + """ + allowPrivateRepositoryForkingSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided private repository forking setting value. + """ + allowPrivateRepositoryForkingSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + The setting value for base repository permissions for organizations in this enterprise. + """ + defaultRepositoryPermissionSetting: EnterpriseDefaultRepositoryPermissionSettingValue! + + """ + A list of enterprise organizations configured with the provided base repository permission. + """ + defaultRepositoryPermissionSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The permission to find organizations for. + """ + value: DefaultRepositoryPermissionField! + ): OrganizationConnection! + + """ + A list of domains owned by the enterprise. + """ + domains( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Filter whether or not the domain is approved. + """ + isApproved: Boolean = null + + """ + Filter whether or not the domain is verified. + """ + isVerified: Boolean = null + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for verifiable domains returned. + """ + orderBy: VerifiableDomainOrder = {field: DOMAIN, direction: ASC} + ): VerifiableDomainConnection! + + """ + Enterprise Server installations owned by the enterprise. + """ + enterpriseServerInstallations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Whether or not to only return installations discovered via GitHub Connect. + """ + connectedOnly: Boolean = false + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for Enterprise Server installations returned. + """ + orderBy: EnterpriseServerInstallationOrder = {field: HOST_NAME, direction: ASC} + ): EnterpriseServerInstallationConnection! + + """ + The setting value for whether the enterprise has an IP allow list enabled. + """ + ipAllowListEnabledSetting: IpAllowListEnabledSettingValue! + + """ + The IP addresses that are allowed to access resources owned by the enterprise. + """ + ipAllowListEntries( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for IP allow list entries returned. + """ + orderBy: IpAllowListEntryOrder = {field: ALLOW_LIST_VALUE, direction: ASC} + ): IpAllowListEntryConnection! + + """ + The setting value for whether the enterprise has IP allow list configuration for installed GitHub Apps enabled. + """ + ipAllowListForInstalledAppsEnabledSetting: IpAllowListForInstalledAppsEnabledSettingValue! + + """ + Whether or not the base repository permission is currently being updated. + """ + isUpdatingDefaultRepositoryPermission: Boolean! + + """ + Whether the two-factor authentication requirement is currently being enforced. + """ + isUpdatingTwoFactorRequirement: Boolean! + + """ + The setting value for whether organization members with admin permissions on a + repository can change repository visibility. + """ + membersCanChangeRepositoryVisibilitySetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided can change repository visibility setting value. + """ + membersCanChangeRepositoryVisibilitySettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + The setting value for whether members of organizations in the enterprise can create internal repositories. + """ + membersCanCreateInternalRepositoriesSetting: Boolean + + """ + The setting value for whether members of organizations in the enterprise can create private repositories. + """ + membersCanCreatePrivateRepositoriesSetting: Boolean + + """ + The setting value for whether members of organizations in the enterprise can create public repositories. + """ + membersCanCreatePublicRepositoriesSetting: Boolean + + """ + The setting value for whether members of organizations in the enterprise can create repositories. + """ + membersCanCreateRepositoriesSetting: EnterpriseMembersCanCreateRepositoriesSettingValue + + """ + A list of enterprise organizations configured with the provided repository creation setting value. + """ + membersCanCreateRepositoriesSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting to find organizations for. + """ + value: OrganizationMembersCanCreateRepositoriesSettingValue! + ): OrganizationConnection! + + """ + The setting value for whether members with admin permissions for repositories can delete issues. + """ + membersCanDeleteIssuesSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided members can delete issues setting value. + """ + membersCanDeleteIssuesSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + The setting value for whether members with admin permissions for repositories can delete or transfer repositories. + """ + membersCanDeleteRepositoriesSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided members can delete repositories setting value. + """ + membersCanDeleteRepositoriesSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + The setting value for whether members of organizations in the enterprise can invite outside collaborators. + """ + membersCanInviteCollaboratorsSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided members can invite collaborators setting value. + """ + membersCanInviteCollaboratorsSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + Indicates whether members of this enterprise's organizations can purchase additional services for those organizations. + """ + membersCanMakePurchasesSetting: EnterpriseMembersCanMakePurchasesSettingValue! + + """ + The setting value for whether members with admin permissions for repositories can update protected branches. + """ + membersCanUpdateProtectedBranchesSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided members can update protected branches setting value. + """ + membersCanUpdateProtectedBranchesSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + The setting value for whether members can view dependency insights. + """ + membersCanViewDependencyInsightsSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided members can view dependency insights setting value. + """ + membersCanViewDependencyInsightsSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + Indicates if email notification delivery for this enterprise is restricted to verified or approved domains. + """ + notificationDeliveryRestrictionEnabledSetting: NotificationRestrictionSettingValue! + + """ + The OIDC Identity Provider for the enterprise. + """ + oidcProvider: OIDCProvider + + """ + The setting value for whether organization projects are enabled for organizations in this enterprise. + """ + organizationProjectsSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided organization projects setting value. + """ + organizationProjectsSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + A list of outside collaborators across the repositories in the enterprise. + """ + outsideCollaborators( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Only return outside collaborators with this two-factor authentication status. + """ + hasTwoFactorEnabled: Boolean = null + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + The login of one specific outside collaborator. + """ + login: String + + """ + Ordering options for outside collaborators returned from the connection. + """ + orderBy: EnterpriseMemberOrder = {field: LOGIN, direction: ASC} + + """ + Only return outside collaborators within the organizations with these logins + """ + organizationLogins: [String!] + + """ + The search string to look for. + """ + query: String + + """ + Only return outside collaborators on repositories with this visibility. + """ + visibility: RepositoryVisibility + ): EnterpriseOutsideCollaboratorConnection! + + """ + A list of pending administrator invitations for the enterprise. + """ + pendingAdminInvitations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pending enterprise administrator invitations returned from the connection. + """ + orderBy: EnterpriseAdministratorInvitationOrder = {field: CREATED_AT, direction: DESC} + + """ + The search string to look for. + """ + query: String + + """ + The role to filter by. + """ + role: EnterpriseAdministratorRole + ): EnterpriseAdministratorInvitationConnection! + + """ + A list of pending collaborator invitations across the repositories in the enterprise. + """ + pendingCollaboratorInvitations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pending repository collaborator invitations returned from the connection. + """ + orderBy: RepositoryInvitationOrder = {field: CREATED_AT, direction: DESC} + + """ + The search string to look for. + """ + query: String + ): RepositoryInvitationConnection! + + """ + A list of pending member invitations for organizations in the enterprise. + """ + pendingMemberInvitations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Only return invitations within the organizations with these logins + """ + organizationLogins: [String!] + + """ + The search string to look for. + """ + query: String + ): EnterprisePendingMemberInvitationConnection! + + """ + The setting value for whether repository projects are enabled in this enterprise. + """ + repositoryProjectsSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided repository projects setting value. + """ + repositoryProjectsSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + The SAML Identity Provider for the enterprise. When used by a GitHub App, + requires an installation token with read and write access to members. + """ + samlIdentityProvider: EnterpriseIdentityProvider + + """ + A list of enterprise organizations configured with the SAML single sign-on setting value. + """ + samlIdentityProviderSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: IdentityProviderConfigurationState! + ): OrganizationConnection! + + """ + A list of members with a support entitlement. + """ + supportEntitlements( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for support entitlement users returned from the connection. + """ + orderBy: EnterpriseMemberOrder = {field: LOGIN, direction: ASC} + ): EnterpriseMemberConnection! + + """ + The setting value for whether team discussions are enabled for organizations in this enterprise. + """ + teamDiscussionsSetting: EnterpriseEnabledDisabledSettingValue! + + """ + A list of enterprise organizations configured with the provided team discussions setting value. + """ + teamDiscussionsSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! + + """ + The setting value for whether the enterprise requires two-factor authentication for its organizations and users. + """ + twoFactorRequiredSetting: EnterpriseEnabledSettingValue! + + """ + A list of enterprise organizations configured with the two-factor authentication setting value. + """ + twoFactorRequiredSettingOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations with this setting. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The setting value to find organizations for. + """ + value: Boolean! + ): OrganizationConnection! +} + +""" +The connection type for OrganizationInvitation. +""" +type EnterprisePendingMemberInvitationConnection { + """ + A list of edges. + """ + edges: [EnterprisePendingMemberInvitationEdge] + + """ + A list of nodes. + """ + nodes: [OrganizationInvitation] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! + + """ + Identifies the total count of unique users in the connection. + """ + totalUniqueUserCount: Int! +} + +""" +An invitation to be a member in an enterprise organization. +""" +type EnterprisePendingMemberInvitationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationInvitation +} + +""" +A subset of repository information queryable from an enterprise. +""" +type EnterpriseRepositoryInfo implements Node { + id: ID! + + """ + Identifies if the repository is private or internal. + """ + isPrivate: Boolean! + + """ + The repository's name. + """ + name: String! + + """ + The repository's name with owner. + """ + nameWithOwner: String! +} + +""" +The connection type for EnterpriseRepositoryInfo. +""" +type EnterpriseRepositoryInfoConnection { + """ + A list of edges. + """ + edges: [EnterpriseRepositoryInfoEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseRepositoryInfo] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnterpriseRepositoryInfoEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseRepositoryInfo +} + +""" +An Enterprise Server installation. +""" +type EnterpriseServerInstallation implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The customer name to which the Enterprise Server installation belongs. + """ + customerName: String! + + """ + The host name of the Enterprise Server installation. + """ + hostName: String! + id: ID! + + """ + Whether or not the installation is connected to an Enterprise Server installation via GitHub Connect. + """ + isConnected: Boolean! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + User accounts on this Enterprise Server installation. + """ + userAccounts( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for Enterprise Server user accounts returned from the connection. + """ + orderBy: EnterpriseServerUserAccountOrder = {field: LOGIN, direction: ASC} + ): EnterpriseServerUserAccountConnection! + + """ + User accounts uploads for the Enterprise Server installation. + """ + userAccountsUploads( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for Enterprise Server user accounts uploads returned from the connection. + """ + orderBy: EnterpriseServerUserAccountsUploadOrder = {field: CREATED_AT, direction: DESC} + ): EnterpriseServerUserAccountsUploadConnection! +} + +""" +The connection type for EnterpriseServerInstallation. +""" +type EnterpriseServerInstallationConnection { + """ + A list of edges. + """ + edges: [EnterpriseServerInstallationEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseServerInstallation] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnterpriseServerInstallationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseServerInstallation +} + +""" +Ordering options for Enterprise Server installation connections. +""" +input EnterpriseServerInstallationOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order Enterprise Server installations by. + """ + field: EnterpriseServerInstallationOrderField! +} + +""" +Properties by which Enterprise Server installation connections can be ordered. +""" +enum EnterpriseServerInstallationOrderField { + """ + Order Enterprise Server installations by creation time + """ + CREATED_AT + + """ + Order Enterprise Server installations by customer name + """ + CUSTOMER_NAME + + """ + Order Enterprise Server installations by host name + """ + HOST_NAME +} + +""" +A user account on an Enterprise Server installation. +""" +type EnterpriseServerUserAccount implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + User emails belonging to this user account. + """ + emails( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for Enterprise Server user account emails returned from the connection. + """ + orderBy: EnterpriseServerUserAccountEmailOrder = {field: EMAIL, direction: ASC} + ): EnterpriseServerUserAccountEmailConnection! + + """ + The Enterprise Server installation on which this user account exists. + """ + enterpriseServerInstallation: EnterpriseServerInstallation! + id: ID! + + """ + Whether the user account is a site administrator on the Enterprise Server installation. + """ + isSiteAdmin: Boolean! + + """ + The login of the user account on the Enterprise Server installation. + """ + login: String! + + """ + The profile name of the user account on the Enterprise Server installation. + """ + profileName: String + + """ + The date and time when the user account was created on the Enterprise Server installation. + """ + remoteCreatedAt: DateTime! + + """ + The ID of the user account on the Enterprise Server installation. + """ + remoteUserId: Int! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for EnterpriseServerUserAccount. +""" +type EnterpriseServerUserAccountConnection { + """ + A list of edges. + """ + edges: [EnterpriseServerUserAccountEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseServerUserAccount] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnterpriseServerUserAccountEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseServerUserAccount +} + +""" +An email belonging to a user account on an Enterprise Server installation. +""" +type EnterpriseServerUserAccountEmail implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The email address. + """ + email: String! + id: ID! + + """ + Indicates whether this is the primary email of the associated user account. + """ + isPrimary: Boolean! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The user account to which the email belongs. + """ + userAccount: EnterpriseServerUserAccount! +} + +""" +The connection type for EnterpriseServerUserAccountEmail. +""" +type EnterpriseServerUserAccountEmailConnection { + """ + A list of edges. + """ + edges: [EnterpriseServerUserAccountEmailEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseServerUserAccountEmail] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnterpriseServerUserAccountEmailEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseServerUserAccountEmail +} + +""" +Ordering options for Enterprise Server user account email connections. +""" +input EnterpriseServerUserAccountEmailOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order emails by. + """ + field: EnterpriseServerUserAccountEmailOrderField! +} + +""" +Properties by which Enterprise Server user account email connections can be ordered. +""" +enum EnterpriseServerUserAccountEmailOrderField { + """ + Order emails by email + """ + EMAIL +} + +""" +Ordering options for Enterprise Server user account connections. +""" +input EnterpriseServerUserAccountOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order user accounts by. + """ + field: EnterpriseServerUserAccountOrderField! +} + +""" +Properties by which Enterprise Server user account connections can be ordered. +""" +enum EnterpriseServerUserAccountOrderField { + """ + Order user accounts by login + """ + LOGIN + + """ + Order user accounts by creation time on the Enterprise Server installation + """ + REMOTE_CREATED_AT +} + +""" +A user accounts upload from an Enterprise Server installation. +""" +type EnterpriseServerUserAccountsUpload implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The enterprise to which this upload belongs. + """ + enterprise: Enterprise! + + """ + The Enterprise Server installation for which this upload was generated. + """ + enterpriseServerInstallation: EnterpriseServerInstallation! + id: ID! + + """ + The name of the file uploaded. + """ + name: String! + + """ + The synchronization state of the upload + """ + syncState: EnterpriseServerUserAccountsUploadSyncState! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for EnterpriseServerUserAccountsUpload. +""" +type EnterpriseServerUserAccountsUploadConnection { + """ + A list of edges. + """ + edges: [EnterpriseServerUserAccountsUploadEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseServerUserAccountsUpload] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnterpriseServerUserAccountsUploadEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseServerUserAccountsUpload +} + +""" +Ordering options for Enterprise Server user accounts upload connections. +""" +input EnterpriseServerUserAccountsUploadOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order user accounts uploads by. + """ + field: EnterpriseServerUserAccountsUploadOrderField! +} + +""" +Properties by which Enterprise Server user accounts upload connections can be ordered. +""" +enum EnterpriseServerUserAccountsUploadOrderField { + """ + Order user accounts uploads by creation time + """ + CREATED_AT +} + +""" +Synchronization state of the Enterprise Server user accounts upload +""" +enum EnterpriseServerUserAccountsUploadSyncState { + """ + The synchronization of the upload failed. + """ + FAILURE + + """ + The synchronization of the upload is pending. + """ + PENDING + + """ + The synchronization of the upload succeeded. + """ + SUCCESS +} + +""" +An account for a user who is an admin of an enterprise or a member of an enterprise through one or more organizations. +""" +type EnterpriseUserAccount implements Actor & Node { + """ + A URL pointing to the enterprise user account's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The enterprise in which this user account exists. + """ + enterprise: Enterprise! + id: ID! + + """ + An identifier for the enterprise user account, a login or email address + """ + login: String! + + """ + The name of the enterprise user account + """ + name: String + + """ + A list of enterprise organizations this user is a member of. + """ + organizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for organizations returned from the connection. + """ + orderBy: OrganizationOrder = {field: LOGIN, direction: ASC} + + """ + The search string to look for. + """ + query: String + + """ + The role of the user in the enterprise organization. + """ + role: EnterpriseUserAccountMembershipRole + ): EnterpriseOrganizationMembershipConnection! + + """ + The HTTP path for this user. + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this user. + """ + url: URI! + + """ + The user within the enterprise. + """ + user: User +} + +""" +The connection type for EnterpriseUserAccount. +""" +type EnterpriseUserAccountConnection { + """ + A list of edges. + """ + edges: [EnterpriseUserAccountEdge] + + """ + A list of nodes. + """ + nodes: [EnterpriseUserAccount] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnterpriseUserAccountEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: EnterpriseUserAccount +} + +""" +The possible roles for enterprise membership. +""" +enum EnterpriseUserAccountMembershipRole { + """ + The user is a member of an organization in the enterprise. + """ + MEMBER + + """ + The user is an owner of an organization in the enterprise. + """ + OWNER +} + +""" +The possible GitHub Enterprise deployments where this user can exist. +""" +enum EnterpriseUserDeployment { + """ + The user is part of a GitHub Enterprise Cloud deployment. + """ + CLOUD + + """ + The user is part of a GitHub Enterprise Server deployment. + """ + SERVER +} + +""" +An environment. +""" +type Environment implements Node { + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The name of the environment + """ + name: String! + + """ + The protection rules defined for this environment + """ + protectionRules( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DeploymentProtectionRuleConnection! +} + +""" +The connection type for Environment. +""" +type EnvironmentConnection { + """ + A list of edges. + """ + edges: [EnvironmentEdge] + + """ + A list of nodes. + """ + nodes: [Environment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type EnvironmentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Environment +} + +""" +An external identity provisioned by SAML SSO or SCIM. +""" +type ExternalIdentity implements Node { + """ + The GUID for this identity + """ + guid: String! + id: ID! + + """ + Organization invitation for this SCIM-provisioned external identity + """ + organizationInvitation: OrganizationInvitation + + """ + SAML Identity attributes + """ + samlIdentity: ExternalIdentitySamlAttributes + + """ + SCIM Identity attributes + """ + scimIdentity: ExternalIdentityScimAttributes + + """ + User linked to this external identity. Will be NULL if this identity has not been claimed by an organization member. + """ + user: User +} + +""" +An attribute for the External Identity attributes collection +""" +type ExternalIdentityAttribute { + """ + The attribute metadata as JSON + """ + metadata: String + + """ + The attribute name + """ + name: String! + + """ + The attribute value + """ + value: String! +} + +""" +The connection type for ExternalIdentity. +""" +type ExternalIdentityConnection { + """ + A list of edges. + """ + edges: [ExternalIdentityEdge] + + """ + A list of nodes. + """ + nodes: [ExternalIdentity] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ExternalIdentityEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ExternalIdentity +} + +""" +SAML attributes for the External Identity +""" +type ExternalIdentitySamlAttributes { + """ + SAML Identity attributes + """ + attributes: [ExternalIdentityAttribute!]! + + """ + The emails associated with the SAML identity + """ + emails: [UserEmailMetadata!] + + """ + Family name of the SAML identity + """ + familyName: String + + """ + Given name of the SAML identity + """ + givenName: String + + """ + The groups linked to this identity in IDP + """ + groups: [String!] + + """ + The NameID of the SAML identity + """ + nameId: String + + """ + The userName of the SAML identity + """ + username: String +} + +""" +SCIM attributes for the External Identity +""" +type ExternalIdentityScimAttributes { + """ + The emails associated with the SCIM identity + """ + emails: [UserEmailMetadata!] + + """ + Family name of the SCIM identity + """ + familyName: String + + """ + Given name of the SCIM identity + """ + givenName: String + + """ + The groups linked to this identity in IDP + """ + groups: [String!] + + """ + The userName of the SCIM identity + """ + username: String +} + +""" +A command to add a file at the given path with the given contents as part of a +commit. Any existing file at that that path will be replaced. +""" +input FileAddition { + """ + The base64 encoded contents of the file + """ + contents: Base64String! + + """ + The path in the repository where the file will be located + """ + path: String! +} + +""" +A description of a set of changes to a file tree to be made as part of +a git commit, modeled as zero or more file `additions` and zero or more +file `deletions`. + +Both fields are optional; omitting both will produce a commit with no +file changes. + +`deletions` and `additions` describe changes to files identified +by their path in the git tree using unix-style path separators, i.e. +`/`. The root of a git tree is an empty string, so paths are not +slash-prefixed. + +`path` values must be unique across all `additions` and `deletions` +provided. Any duplication will result in a validation error. + +### Encoding + +File contents must be provided in full for each `FileAddition`. + +The `contents` of a `FileAddition` must be encoded using RFC 4648 +compliant base64, i.e. correct padding is required and no characters +outside the standard alphabet may be used. Invalid base64 +encoding will be rejected with a validation error. + +The encoded contents may be binary. + +For text files, no assumptions are made about the character encoding of +the file contents (after base64 decoding). No charset transcoding or +line-ending normalization will be performed; it is the client's +responsibility to manage the character encoding of files they provide. +However, for maximum compatibility we recommend using UTF-8 encoding +and ensuring that all files in a repository use a consistent +line-ending convention (`\n` or `\r\n`), and that all files end +with a newline. + +### Modeling file changes + +Each of the the five types of conceptual changes that can be made in a +git commit can be described using the `FileChanges` type as follows: + +1. New file addition: create file `hello world\n` at path `docs/README.txt`: + + { + "additions" [ + { + "path": "docs/README.txt", + "contents": base64encode("hello world\n") + } + ] + } + +2. Existing file modification: change existing `docs/README.txt` to have new + content `new content here\n`: + + { + "additions" [ + { + "path": "docs/README.txt", + "contents": base64encode("new content here\n") + } + ] + } + +3. Existing file deletion: remove existing file `docs/README.txt`. + Note that the path is required to exist -- specifying a + path that does not exist on the given branch will abort the + commit and return an error. + + { + "deletions" [ + { + "path": "docs/README.txt" + } + ] + } + + +4. File rename with no changes: rename `docs/README.txt` with + previous content `hello world\n` to the same content at + `newdocs/README.txt`: + + { + "deletions" [ + { + "path": "docs/README.txt", + } + ], + "additions" [ + { + "path": "newdocs/README.txt", + "contents": base64encode("hello world\n") + } + ] + } + + +5. File rename with changes: rename `docs/README.txt` with + previous content `hello world\n` to a file at path + `newdocs/README.txt` with content `new contents\n`: + + { + "deletions" [ + { + "path": "docs/README.txt", + } + ], + "additions" [ + { + "path": "newdocs/README.txt", + "contents": base64encode("new contents\n") + } + ] + } +""" +input FileChanges { + """ + File to add or change. + """ + additions: [FileAddition!] = [] + + """ + Files to delete. + """ + deletions: [FileDeletion!] = [] +} + +""" +A command to delete the file at the given path as part of a commit. +""" +input FileDeletion { + """ + The path to delete + """ + path: String! +} + +""" +The possible viewed states of a file . +""" +enum FileViewedState { + """ + The file has new changes since last viewed. + """ + DISMISSED + + """ + The file has not been marked as viewed. + """ + UNVIEWED + + """ + The file has been marked as viewed. + """ + VIEWED +} + +""" +Autogenerated input type of FollowOrganization +""" +input FollowOrganizationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the organization to follow. + """ + organizationId: ID! +} + +""" +Autogenerated return type of FollowOrganization +""" +type FollowOrganizationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The organization that was followed. + """ + organization: Organization +} + +""" +Autogenerated input type of FollowUser +""" +input FollowUserInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the user to follow. + """ + userId: ID! +} + +""" +Autogenerated return type of FollowUser +""" +type FollowUserPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The user that was followed. + """ + user: User +} + +""" +The connection type for User. +""" +type FollowerConnection { + """ + A list of edges. + """ + edges: [UserEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +The connection type for User. +""" +type FollowingConnection { + """ + A list of edges. + """ + edges: [UserEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +A funding platform link for a repository. +""" +type FundingLink { + """ + The funding platform this link is for. + """ + platform: FundingPlatform! + + """ + The configured URL for this funding link. + """ + url: URI! +} + +""" +The possible funding platforms for repository funding links. +""" +enum FundingPlatform { + """ + Community Bridge funding platform. + """ + COMMUNITY_BRIDGE + + """ + Custom funding platform. + """ + CUSTOM + + """ + GitHub funding platform. + """ + GITHUB + + """ + IssueHunt funding platform. + """ + ISSUEHUNT + + """ + Ko-fi funding platform. + """ + KO_FI + + """ + LFX Crowdfunding funding platform. + """ + LFX_CROWDFUNDING + + """ + Liberapay funding platform. + """ + LIBERAPAY + + """ + Open Collective funding platform. + """ + OPEN_COLLECTIVE + + """ + Otechie funding platform. + """ + OTECHIE + + """ + Patreon funding platform. + """ + PATREON + + """ + Tidelift funding platform. + """ + TIDELIFT +} + +""" +A generic hovercard context with a message and icon +""" +type GenericHovercardContext implements HovercardContext { + """ + A string describing this context + """ + message: String! + + """ + An octicon to accompany this context + """ + octicon: String! +} + +""" +A Gist. +""" +type Gist implements Node & Starrable & UniformResourceLocatable { + """ + A list of comments associated with the gist + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GistCommentConnection! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The gist description. + """ + description: String + + """ + The files in this gist. + """ + files( + """ + The maximum number of files to return. + """ + limit: Int = 10 + + """ + The oid of the files to return + """ + oid: GitObjectID + ): [GistFile] + + """ + A list of forks associated with the gist + """ + forks( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for gists returned from the connection + """ + orderBy: GistOrder + ): GistConnection! + id: ID! + + """ + Identifies if the gist is a fork. + """ + isFork: Boolean! + + """ + Whether the gist is public or not. + """ + isPublic: Boolean! + + """ + The gist name. + """ + name: String! + + """ + The gist owner. + """ + owner: RepositoryOwner + + """ + Identifies when the gist was last pushed to. + """ + pushedAt: DateTime + + """ + The HTML path to this resource. + """ + resourcePath: URI! + + """ + Returns a count of how many stargazers there are on this object + """ + stargazerCount: Int! + + """ + A list of users who have starred this starrable. + """ + stargazers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: StarOrder + ): StargazerConnection! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this Gist. + """ + url: URI! + + """ + Returns a boolean indicating whether the viewing user has starred this starrable. + """ + viewerHasStarred: Boolean! +} + +""" +Represents a comment on an Gist. +""" +type GistComment implements Comment & Deletable & Minimizable & Node & Updatable & UpdatableComment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the gist. + """ + authorAssociation: CommentAuthorAssociation! + + """ + Identifies the comment body. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The actor who edited the comment. + """ + editor: Actor + + """ + The associated gist. + """ + gist: Gist! + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + Returns whether or not a comment has been minimized. + """ + isMinimized: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Returns why the comment was minimized. + """ + minimizedReason: String + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Check if the current viewer can minimize this object. + """ + viewerCanMinimize: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! +} + +""" +The connection type for GistComment. +""" +type GistCommentConnection { + """ + A list of edges. + """ + edges: [GistCommentEdge] + + """ + A list of nodes. + """ + nodes: [GistComment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type GistCommentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: GistComment +} + +""" +The connection type for Gist. +""" +type GistConnection { + """ + A list of edges. + """ + edges: [GistEdge] + + """ + A list of nodes. + """ + nodes: [Gist] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type GistEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Gist +} + +""" +A file in a gist. +""" +type GistFile { + """ + The file name encoded to remove characters that are invalid in URL paths. + """ + encodedName: String + + """ + The gist file encoding. + """ + encoding: String + + """ + The file extension from the file name. + """ + extension: String + + """ + Indicates if this file is an image. + """ + isImage: Boolean! + + """ + Whether the file's contents were truncated. + """ + isTruncated: Boolean! + + """ + The programming language this file is written in. + """ + language: Language + + """ + The gist file name. + """ + name: String + + """ + The gist file size in bytes. + """ + size: Int + + """ + UTF8 text data or null if the file is binary + """ + text( + """ + Optionally truncate the returned file to this length. + """ + truncate: Int + ): String +} + +""" +Ordering options for gist connections +""" +input GistOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order repositories by. + """ + field: GistOrderField! +} + +""" +Properties by which gist connections can be ordered. +""" +enum GistOrderField { + """ + Order gists by creation time + """ + CREATED_AT + + """ + Order gists by push time + """ + PUSHED_AT + + """ + Order gists by update time + """ + UPDATED_AT +} + +""" +The privacy of a Gist +""" +enum GistPrivacy { + """ + Gists that are public and secret + """ + ALL + + """ + Public + """ + PUBLIC + + """ + Secret + """ + SECRET +} + +""" +Represents an actor in a Git commit (ie. an author or committer). +""" +type GitActor { + """ + A URL pointing to the author's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + The timestamp of the Git action (authoring or committing). + """ + date: GitTimestamp + + """ + The email in the Git commit. + """ + email: String + + """ + The name in the Git commit. + """ + name: String + + """ + The GitHub user corresponding to the email field. Null if no such user exists. + """ + user: User +} + +""" +The connection type for GitActor. +""" +type GitActorConnection { + """ + A list of edges. + """ + edges: [GitActorEdge] + + """ + A list of nodes. + """ + nodes: [GitActor] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type GitActorEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: GitActor +} + +""" +Represents information about the GitHub instance. +""" +type GitHubMetadata { + """ + Returns a String that's a SHA of `github-services` + """ + gitHubServicesSha: GitObjectID! + + """ + IP addresses that users connect to for git operations + """ + gitIpAddresses: [String!] + + """ + IP addresses that service hooks are sent from + """ + hookIpAddresses: [String!] + + """ + IP addresses that the importer connects from + """ + importerIpAddresses: [String!] + + """ + Whether or not users are verified + """ + isPasswordAuthenticationVerifiable: Boolean! + + """ + IP addresses for GitHub Pages' A records + """ + pagesIpAddresses: [String!] +} + +""" +Represents a Git object. +""" +interface GitObject { + """ + An abbreviated version of the Git object ID + """ + abbreviatedOid: String! + + """ + The HTTP path for this Git object + """ + commitResourcePath: URI! + + """ + The HTTP URL for this Git object + """ + commitUrl: URI! + id: ID! + + """ + The Git object ID + """ + oid: GitObjectID! + + """ + The Repository the Git object belongs to + """ + repository: Repository! +} + +""" +A Git object ID. +""" +scalar GitObjectID + +""" +Git SSH string +""" +scalar GitSSHRemote + +""" +Information about a signature (GPG or S/MIME) on a Commit or Tag. +""" +interface GitSignature { + """ + Email used to sign this object. + """ + email: String! + + """ + True if the signature is valid and verified by GitHub. + """ + isValid: Boolean! + + """ + Payload for GPG signing object. Raw ODB object without the signature header. + """ + payload: String! + + """ + ASCII-armored signature header from object. + """ + signature: String! + + """ + GitHub user corresponding to the email signing this commit. + """ + signer: User + + """ + The state of this signature. `VALID` if signature is valid and verified by + GitHub, otherwise represents reason why signature is considered invalid. + """ + state: GitSignatureState! + + """ + True if the signature was made with GitHub's signing key. + """ + wasSignedByGitHub: Boolean! +} + +""" +The state of a Git signature. +""" +enum GitSignatureState { + """ + The signing certificate or its chain could not be verified + """ + BAD_CERT + + """ + Invalid email used for signing + """ + BAD_EMAIL + + """ + Signing key expired + """ + EXPIRED_KEY + + """ + Internal error - the GPG verification service misbehaved + """ + GPGVERIFY_ERROR + + """ + Internal error - the GPG verification service is unavailable at the moment + """ + GPGVERIFY_UNAVAILABLE + + """ + Invalid signature + """ + INVALID + + """ + Malformed signature + """ + MALFORMED_SIG + + """ + The usage flags for the key that signed this don't allow signing + """ + NOT_SIGNING_KEY + + """ + Email used for signing not known to GitHub + """ + NO_USER + + """ + Valid signature, though certificate revocation check failed + """ + OCSP_ERROR + + """ + Valid signature, pending certificate revocation checking + """ + OCSP_PENDING + + """ + One or more certificates in chain has been revoked + """ + OCSP_REVOKED + + """ + Key used for signing not known to GitHub + """ + UNKNOWN_KEY + + """ + Unknown signature type + """ + UNKNOWN_SIG_TYPE + + """ + Unsigned + """ + UNSIGNED + + """ + Email used for signing unverified on GitHub + """ + UNVERIFIED_EMAIL + + """ + Valid signature and verified by GitHub + """ + VALID +} + +""" +An ISO-8601 encoded date string. Unlike the DateTime type, GitTimestamp is not converted in UTC. +""" +scalar GitTimestamp + +""" +Represents a GPG signature on a Commit or Tag. +""" +type GpgSignature implements GitSignature { + """ + Email used to sign this object. + """ + email: String! + + """ + True if the signature is valid and verified by GitHub. + """ + isValid: Boolean! + + """ + Hex-encoded ID of the key that signed this object. + """ + keyId: String + + """ + Payload for GPG signing object. Raw ODB object without the signature header. + """ + payload: String! + + """ + ASCII-armored signature header from object. + """ + signature: String! + + """ + GitHub user corresponding to the email signing this commit. + """ + signer: User + + """ + The state of this signature. `VALID` if signature is valid and verified by + GitHub, otherwise represents reason why signature is considered invalid. + """ + state: GitSignatureState! + + """ + True if the signature was made with GitHub's signing key. + """ + wasSignedByGitHub: Boolean! +} + +""" +Autogenerated input type of GrantEnterpriseOrganizationsMigratorRole +""" +input GrantEnterpriseOrganizationsMigratorRoleInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise to which all organizations managed by it will be granted the migrator role. + """ + enterpriseId: ID! + + """ + The login of the user to grant the migrator role + """ + login: String! +} + +""" +Autogenerated return type of GrantEnterpriseOrganizationsMigratorRole +""" +type GrantEnterpriseOrganizationsMigratorRolePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The organizations that had the migrator role applied to for the given user. + """ + organizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationConnection +} + +""" +Autogenerated input type of GrantMigratorRole +""" +input GrantMigratorRoleInput { + """ + The user login or Team slug to grant the migrator role. + """ + actor: String! + + """ + Specifies the type of the actor, can be either USER or TEAM. + """ + actorType: ActorType! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the organization that the user/team belongs to. + """ + organizationId: ID! +} + +""" +Autogenerated return type of GrantMigratorRole +""" +type GrantMigratorRolePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Did the operation succeed? + """ + success: Boolean +} + +""" +A string containing HTML code. +""" +scalar HTML + +""" +Represents a 'head_ref_deleted' event on a given pull request. +""" +type HeadRefDeletedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the Ref associated with the `head_ref_deleted` event. + """ + headRef: Ref + + """ + Identifies the name of the Ref associated with the `head_ref_deleted` event. + """ + headRefName: String! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! +} + +""" +Represents a 'head_ref_force_pushed' event on a given pull request. +""" +type HeadRefForcePushedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the after commit SHA for the 'head_ref_force_pushed' event. + """ + afterCommit: Commit + + """ + Identifies the before commit SHA for the 'head_ref_force_pushed' event. + """ + beforeCommit: Commit + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + Identifies the fully qualified ref name for the 'head_ref_force_pushed' event. + """ + ref: Ref +} + +""" +Represents a 'head_ref_restored' event on a given pull request. +""" +type HeadRefRestoredEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! +} + +""" +Detail needed to display a hovercard for a user +""" +type Hovercard { + """ + Each of the contexts for this hovercard + """ + contexts: [HovercardContext!]! +} + +""" +An individual line of a hovercard +""" +interface HovercardContext { + """ + A string describing this context + """ + message: String! + + """ + An octicon to accompany this context + """ + octicon: String! +} + +""" +The possible states in which authentication can be configured with an identity provider. +""" +enum IdentityProviderConfigurationState { + """ + Authentication with an identity provider is configured but not enforced. + """ + CONFIGURED + + """ + Authentication with an identity provider is configured and enforced. + """ + ENFORCED + + """ + Authentication with an identity provider is not configured. + """ + UNCONFIGURED +} + +""" +Autogenerated input type of InviteEnterpriseAdmin +""" +input InviteEnterpriseAdminInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The email of the person to invite as an administrator. + """ + email: String + + """ + The ID of the enterprise to which you want to invite an administrator. + """ + enterpriseId: ID! + + """ + The login of a user to invite as an administrator. + """ + invitee: String + + """ + The role of the administrator. + """ + role: EnterpriseAdministratorRole +} + +""" +Autogenerated return type of InviteEnterpriseAdmin +""" +type InviteEnterpriseAdminPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The created enterprise administrator invitation. + """ + invitation: EnterpriseAdministratorInvitation +} + +""" +The possible values for the IP allow list enabled setting. +""" +enum IpAllowListEnabledSettingValue { + """ + The setting is disabled for the owner. + """ + DISABLED + + """ + The setting is enabled for the owner. + """ + ENABLED +} + +""" +An IP address or range of addresses that is allowed to access an owner's resources. +""" +type IpAllowListEntry implements Node { + """ + A single IP address or range of IP addresses in CIDR notation. + """ + allowListValue: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Whether the entry is currently active. + """ + isActive: Boolean! + + """ + The name of the IP allow list entry. + """ + name: String + + """ + The owner of the IP allow list entry. + """ + owner: IpAllowListOwner! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for IpAllowListEntry. +""" +type IpAllowListEntryConnection { + """ + A list of edges. + """ + edges: [IpAllowListEntryEdge] + + """ + A list of nodes. + """ + nodes: [IpAllowListEntry] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type IpAllowListEntryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: IpAllowListEntry +} + +""" +Ordering options for IP allow list entry connections. +""" +input IpAllowListEntryOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order IP allow list entries by. + """ + field: IpAllowListEntryOrderField! +} + +""" +Properties by which IP allow list entry connections can be ordered. +""" +enum IpAllowListEntryOrderField { + """ + Order IP allow list entries by the allow list value. + """ + ALLOW_LIST_VALUE + + """ + Order IP allow list entries by creation time. + """ + CREATED_AT +} + +""" +The possible values for the IP allow list configuration for installed GitHub Apps setting. +""" +enum IpAllowListForInstalledAppsEnabledSettingValue { + """ + The setting is disabled for the owner. + """ + DISABLED + + """ + The setting is enabled for the owner. + """ + ENABLED +} + +""" +Types that can own an IP allow list. +""" +union IpAllowListOwner = App | Enterprise | Organization + +""" +An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project. +""" +type Issue implements Assignable & Closable & Comment & Labelable & Lockable & Node & ProjectNextOwner & ProjectV2Owner & Reactable & RepositoryNode & Subscribable & UniformResourceLocatable & Updatable & UpdatableComment { + """ + Reason that the conversation was locked. + """ + activeLockReason: LockReason + + """ + A list of Users assigned to this object. + """ + assignees( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! + + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + Identifies the body of the issue. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The http path for this issue body + """ + bodyResourcePath: URI! + + """ + Identifies the body of the issue rendered to text. + """ + bodyText: String! + + """ + The http URL for this issue body + """ + bodyUrl: URI! + + """ + `true` if the object is closed (definition of closed may depend on type) + """ + closed: Boolean! + + """ + Identifies the date and time when the object was closed. + """ + closedAt: DateTime + + """ + A list of comments associated with the Issue. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issue comments returned from the connection. + """ + orderBy: IssueCommentOrder + ): IssueCommentConnection! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The actor who edited the comment. + """ + editor: Actor + + """ + The hovercard information for this issue + """ + hovercard( + """ + Whether or not to include notification contexts + """ + includeNotificationContexts: Boolean = true + ): Hovercard! + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + Indicates whether or not this issue is currently pinned to the repository issues list + """ + isPinned: Boolean + + """ + Is this issue read by the viewer + """ + isReadByViewer: Boolean + + """ + A list of labels associated with the object. + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for labels returned from the connection. + """ + orderBy: LabelOrder = {field: CREATED_AT, direction: ASC} + ): LabelConnection + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + `true` if the object is locked + """ + locked: Boolean! + + """ + Identifies the milestone associated with the issue. + """ + milestone: Milestone + + """ + Identifies the issue number. + """ + number: Int! + + """ + A list of Users that are participating in the Issue conversation. + """ + participants( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! + + """ + List of project cards associated with this issue. + """ + projectCards( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + A list of archived states to filter the cards by + """ + archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectCardConnection! + + """ + List of project items associated with this issue. + """ + projectItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Include archived items. + """ + includeArchived: Boolean = true + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ItemConnection! + + """ + Find a project by project (beta) number. + """ + projectNext( + """ + The project (beta) number. + """ + number: Int! + ): ProjectNext @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + List of project (beta) items associated with this issue. + """ + projectNextItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Include archived items. + """ + includeArchived: Boolean = true + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectNextItemConnection! + + """ + Find a project by number. + """ + projectV2( + """ + The project number. + """ + number: Int! + ): ProjectV2 + + """ + A list of projects (beta) under the owner. + """ + projectsNext( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A project (beta) to search for under the the owner. + """ + query: String + + """ + How to order the returned projects (beta). + """ + sortBy: ProjectNextOrderField = TITLE + ): ProjectNextConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + A list of projects under the owner. + """ + projectsV2( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + How to order the returned projects. + """ + orderBy: ProjectV2Order = {field: NUMBER, direction: DESC} + + """ + A project to search for under the the owner. + """ + query: String + ): ProjectV2Connection! + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + The HTTP path for this issue + """ + resourcePath: URI! + + """ + Identifies the state of the issue. + """ + state: IssueState! + + """ + Identifies the reason for the issue state. + """ + stateReason: IssueStateReason + + """ + A list of events, comments, commits, etc. associated with the issue. + """ + timeline( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows filtering timeline events by a `since` timestamp. + """ + since: DateTime + ): IssueTimelineConnection! @deprecated(reason: "`timeline` will be removed Use Issue.timelineItems instead. Removal on 2020-10-01 UTC.") + + """ + A list of events, comments, commits, etc. associated with the issue. + """ + timelineItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Filter timeline items by type. + """ + itemTypes: [IssueTimelineItemsItemType!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter timeline items by a `since` timestamp. + """ + since: DateTime + + """ + Skips the first _n_ elements in the list. + """ + skip: Int + ): IssueTimelineItemsConnection! + + """ + Identifies the issue title. + """ + title: String! + + """ + Identifies the issue title rendered to HTML. + """ + titleHTML: String! + + """ + A list of issues that track this issue + """ + trackedInIssues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): IssueConnection! + + """ + A list of issues tracked inside the current issue + """ + trackedIssues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): IssueConnection! + + """ + The number of tracked issues for this issue + """ + trackedIssuesCount( + """ + Limit the count to tracked issues with the specified states. + """ + states: [TrackedIssueStates] + ): Int! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this issue + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState +} + +""" +The possible state reasons of a closed issue. +""" +enum IssueClosedStateReason { + """ + An issue that has been closed as completed + """ + COMPLETED + + """ + An issue that has been closed as not planned + """ + NOT_PLANNED +} + +""" +Represents a comment on an Issue. +""" +type IssueComment implements Comment & Deletable & Minimizable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + The body as Markdown. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + Returns whether or not a comment has been minimized. + """ + isMinimized: Boolean! + + """ + Identifies the issue associated with the comment. + """ + issue: Issue! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Returns why the comment was minimized. + """ + minimizedReason: String + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + Returns the pull request associated with the comment, if this comment was made on a + pull request. + """ + pullRequest: PullRequest + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + The HTTP path for this issue comment + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this issue comment + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Check if the current viewer can minimize this object. + """ + viewerCanMinimize: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! +} + +""" +The connection type for IssueComment. +""" +type IssueCommentConnection { + """ + A list of edges. + """ + edges: [IssueCommentEdge] + + """ + A list of nodes. + """ + nodes: [IssueComment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type IssueCommentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: IssueComment +} + +""" +Ways in which lists of issue comments can be ordered upon return. +""" +input IssueCommentOrder { + """ + The direction in which to order issue comments by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order issue comments by. + """ + field: IssueCommentOrderField! +} + +""" +Properties by which issue comment connections can be ordered. +""" +enum IssueCommentOrderField { + """ + Order issue comments by update time + """ + UPDATED_AT +} + +""" +The connection type for Issue. +""" +type IssueConnection { + """ + A list of edges. + """ + edges: [IssueEdge] + + """ + A list of nodes. + """ + nodes: [Issue] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +This aggregates issues opened by a user within one repository. +""" +type IssueContributionsByRepository { + """ + The issue contributions. + """ + contributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for contributions returned from the connection. + """ + orderBy: ContributionOrder = {direction: DESC} + ): CreatedIssueContributionConnection! + + """ + The repository in which the issues were opened. + """ + repository: Repository! +} + +""" +An edge in a connection. +""" +type IssueEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Issue +} + +""" +Ways in which to filter lists of issues. +""" +input IssueFilters { + """ + List issues assigned to given name. Pass in `null` for issues with no assigned + user, and `*` for issues assigned to any user. + """ + assignee: String + + """ + List issues created by given name. + """ + createdBy: String + + """ + List issues where the list of label names exist on the issue. + """ + labels: [String!] + + """ + List issues where the given name is mentioned in the issue. + """ + mentioned: String + + """ + List issues by given milestone argument. If an string representation of an + integer is passed, it should refer to a milestone by its database ID. Pass in + `null` for issues with no milestone, and `*` for issues that are assigned to any milestone. + """ + milestone: String + + """ + List issues by given milestone argument. If an string representation of an + integer is passed, it should refer to a milestone by its number field. Pass in + `null` for issues with no milestone, and `*` for issues that are assigned to any milestone. + """ + milestoneNumber: String + + """ + List issues that have been updated at or after the given date. + """ + since: DateTime + + """ + List issues filtered by the list of states given. + """ + states: [IssueState!] + + """ + List issues subscribed to by viewer. + """ + viewerSubscribed: Boolean = false +} + +""" +Used for return value of Repository.issueOrPullRequest. +""" +union IssueOrPullRequest = Issue | PullRequest + +""" +Ways in which lists of issues can be ordered upon return. +""" +input IssueOrder { + """ + The direction in which to order issues by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order issues by. + """ + field: IssueOrderField! +} + +""" +Properties by which issue connections can be ordered. +""" +enum IssueOrderField { + """ + Order issues by comment count + """ + COMMENTS + + """ + Order issues by creation time + """ + CREATED_AT + + """ + Order issues by update time + """ + UPDATED_AT +} + +""" +The possible states of an issue. +""" +enum IssueState { + """ + An issue that has been closed + """ + CLOSED + + """ + An issue that is still open + """ + OPEN +} + +""" +The possible state reasons of an issue. +""" +enum IssueStateReason { + """ + An issue that has been closed as completed + """ + COMPLETED + + """ + An issue that has been closed as not planned + """ + NOT_PLANNED + + """ + An issue that has been reopened + """ + REOPENED +} + +""" +A repository issue template. +""" +type IssueTemplate { + """ + The template purpose. + """ + about: String + + """ + The suggested issue body. + """ + body: String + + """ + The template name. + """ + name: String! + + """ + The suggested issue title. + """ + title: String +} + +""" +The connection type for IssueTimelineItem. +""" +type IssueTimelineConnection { + """ + A list of edges. + """ + edges: [IssueTimelineItemEdge] + + """ + A list of nodes. + """ + nodes: [IssueTimelineItem] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An item in an issue timeline +""" +union IssueTimelineItem = AssignedEvent | ClosedEvent | Commit | CrossReferencedEvent | DemilestonedEvent | IssueComment | LabeledEvent | LockedEvent | MilestonedEvent | ReferencedEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnsubscribedEvent | UserBlockedEvent + +""" +An edge in a connection. +""" +type IssueTimelineItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: IssueTimelineItem +} + +""" +An item in an issue timeline +""" +union IssueTimelineItems = AddedToProjectEvent | AssignedEvent | ClosedEvent | CommentDeletedEvent | ConnectedEvent | ConvertedNoteToIssueEvent | ConvertedToDiscussionEvent | CrossReferencedEvent | DemilestonedEvent | DisconnectedEvent | IssueComment | LabeledEvent | LockedEvent | MarkedAsDuplicateEvent | MentionedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnmarkedAsDuplicateEvent | UnpinnedEvent | UnsubscribedEvent | UserBlockedEvent + +""" +The connection type for IssueTimelineItems. +""" +type IssueTimelineItemsConnection { + """ + A list of edges. + """ + edges: [IssueTimelineItemsEdge] + + """ + Identifies the count of items after applying `before` and `after` filters. + """ + filteredCount: Int! + + """ + A list of nodes. + """ + nodes: [IssueTimelineItems] + + """ + Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing. + """ + pageCount: Int! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! + + """ + Identifies the date and time when the timeline was last updated. + """ + updatedAt: DateTime! +} + +""" +An edge in a connection. +""" +type IssueTimelineItemsEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: IssueTimelineItems +} + +""" +The possible item types found in a timeline. +""" +enum IssueTimelineItemsItemType { + """ + Represents a 'added_to_project' event on a given issue or pull request. + """ + ADDED_TO_PROJECT_EVENT + + """ + Represents an 'assigned' event on any assignable object. + """ + ASSIGNED_EVENT + + """ + Represents a 'closed' event on any `Closable`. + """ + CLOSED_EVENT + + """ + Represents a 'comment_deleted' event on a given issue or pull request. + """ + COMMENT_DELETED_EVENT + + """ + Represents a 'connected' event on a given issue or pull request. + """ + CONNECTED_EVENT + + """ + Represents a 'converted_note_to_issue' event on a given issue or pull request. + """ + CONVERTED_NOTE_TO_ISSUE_EVENT + + """ + Represents a 'converted_to_discussion' event on a given issue. + """ + CONVERTED_TO_DISCUSSION_EVENT + + """ + Represents a mention made by one issue or pull request to another. + """ + CROSS_REFERENCED_EVENT + + """ + Represents a 'demilestoned' event on a given issue or pull request. + """ + DEMILESTONED_EVENT + + """ + Represents a 'disconnected' event on a given issue or pull request. + """ + DISCONNECTED_EVENT + + """ + Represents a comment on an Issue. + """ + ISSUE_COMMENT + + """ + Represents a 'labeled' event on a given issue or pull request. + """ + LABELED_EVENT + + """ + Represents a 'locked' event on a given issue or pull request. + """ + LOCKED_EVENT + + """ + Represents a 'marked_as_duplicate' event on a given issue or pull request. + """ + MARKED_AS_DUPLICATE_EVENT + + """ + Represents a 'mentioned' event on a given issue or pull request. + """ + MENTIONED_EVENT + + """ + Represents a 'milestoned' event on a given issue or pull request. + """ + MILESTONED_EVENT + + """ + Represents a 'moved_columns_in_project' event on a given issue or pull request. + """ + MOVED_COLUMNS_IN_PROJECT_EVENT + + """ + Represents a 'pinned' event on a given issue or pull request. + """ + PINNED_EVENT + + """ + Represents a 'referenced' event on a given `ReferencedSubject`. + """ + REFERENCED_EVENT + + """ + Represents a 'removed_from_project' event on a given issue or pull request. + """ + REMOVED_FROM_PROJECT_EVENT + + """ + Represents a 'renamed' event on a given issue or pull request + """ + RENAMED_TITLE_EVENT + + """ + Represents a 'reopened' event on any `Closable`. + """ + REOPENED_EVENT + + """ + Represents a 'subscribed' event on a given `Subscribable`. + """ + SUBSCRIBED_EVENT + + """ + Represents a 'transferred' event on a given issue or pull request. + """ + TRANSFERRED_EVENT + + """ + Represents an 'unassigned' event on any assignable object. + """ + UNASSIGNED_EVENT + + """ + Represents an 'unlabeled' event on a given issue or pull request. + """ + UNLABELED_EVENT + + """ + Represents an 'unlocked' event on a given issue or pull request. + """ + UNLOCKED_EVENT + + """ + Represents an 'unmarked_as_duplicate' event on a given issue or pull request. + """ + UNMARKED_AS_DUPLICATE_EVENT + + """ + Represents an 'unpinned' event on a given issue or pull request. + """ + UNPINNED_EVENT + + """ + Represents an 'unsubscribed' event on a given `Subscribable`. + """ + UNSUBSCRIBED_EVENT + + """ + Represents a 'user_blocked' event on a given user. + """ + USER_BLOCKED_EVENT +} + +""" +Represents a user signing up for a GitHub account. +""" +type JoinedGitHubContribution implements Contribution { + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +A label for categorizing Issues, Pull Requests, Milestones, or Discussions with a given Repository. +""" +type Label implements Node { + """ + Identifies the label color. + """ + color: String! + + """ + Identifies the date and time when the label was created. + """ + createdAt: DateTime + + """ + A brief description of this label. + """ + description: String + id: ID! + + """ + Indicates whether or not this is a default label. + """ + isDefault: Boolean! + + """ + A list of issues associated with this label. + """ + issues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for issues returned from the connection. + """ + filterBy: IssueFilters + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issues returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the issues by. + """ + states: [IssueState!] + ): IssueConnection! + + """ + Identifies the label name. + """ + name: String! + + """ + A list of pull requests associated with this label. + """ + pullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + The base ref name to filter the pull requests by. + """ + baseRefName: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + The head ref name to filter the pull requests by. + """ + headRefName: String + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pull requests returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the pull requests by. + """ + states: [PullRequestState!] + ): PullRequestConnection! + + """ + The repository associated with this label. + """ + repository: Repository! + + """ + The HTTP path for this label. + """ + resourcePath: URI! + + """ + Identifies the date and time when the label was last updated. + """ + updatedAt: DateTime + + """ + The HTTP URL for this label. + """ + url: URI! +} + +""" +The connection type for Label. +""" +type LabelConnection { + """ + A list of edges. + """ + edges: [LabelEdge] + + """ + A list of nodes. + """ + nodes: [Label] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type LabelEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Label +} + +""" +Ways in which lists of labels can be ordered upon return. +""" +input LabelOrder { + """ + The direction in which to order labels by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order labels by. + """ + field: LabelOrderField! +} + +""" +Properties by which label connections can be ordered. +""" +enum LabelOrderField { + """ + Order labels by creation time + """ + CREATED_AT + + """ + Order labels by name + """ + NAME +} + +""" +An object that can have labels assigned to it. +""" +interface Labelable { + """ + A list of labels associated with the object. + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for labels returned from the connection. + """ + orderBy: LabelOrder = {field: CREATED_AT, direction: ASC} + ): LabelConnection +} + +""" +Represents a 'labeled' event on a given issue or pull request. +""" +type LabeledEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the label associated with the 'labeled' event. + """ + label: Label! + + """ + Identifies the `Labelable` associated with the event. + """ + labelable: Labelable! +} + +""" +Represents a given language found in repositories. +""" +type Language implements Node { + """ + The color defined for the current language. + """ + color: String + id: ID! + + """ + The name of the current language. + """ + name: String! +} + +""" +A list of languages associated with the parent. +""" +type LanguageConnection { + """ + A list of edges. + """ + edges: [LanguageEdge] + + """ + A list of nodes. + """ + nodes: [Language] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! + + """ + The total size in bytes of files written in that language. + """ + totalSize: Int! +} + +""" +Represents the language of a repository. +""" +type LanguageEdge { + cursor: String! + node: Language! + + """ + The number of bytes of code written in the language. + """ + size: Int! +} + +""" +Ordering options for language connections. +""" +input LanguageOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order languages by. + """ + field: LanguageOrderField! +} + +""" +Properties by which language connections can be ordered. +""" +enum LanguageOrderField { + """ + Order languages by the size of all files containing the language + """ + SIZE +} + +""" +A repository's open source license +""" +type License implements Node { + """ + The full text of the license + """ + body: String! + + """ + The conditions set by the license + """ + conditions: [LicenseRule]! + + """ + A human-readable description of the license + """ + description: String + + """ + Whether the license should be featured + """ + featured: Boolean! + + """ + Whether the license should be displayed in license pickers + """ + hidden: Boolean! + id: ID! + + """ + Instructions on how to implement the license + """ + implementation: String + + """ + The lowercased SPDX ID of the license + """ + key: String! + + """ + The limitations set by the license + """ + limitations: [LicenseRule]! + + """ + The license full name specified by + """ + name: String! + + """ + Customary short name if applicable (e.g, GPLv3) + """ + nickname: String + + """ + The permissions set by the license + """ + permissions: [LicenseRule]! + + """ + Whether the license is a pseudo-license placeholder (e.g., other, no-license) + """ + pseudoLicense: Boolean! + + """ + Short identifier specified by + """ + spdxId: String + + """ + URL to the license on + """ + url: URI +} + +""" +Describes a License's conditions, permissions, and limitations +""" +type LicenseRule { + """ + A description of the rule + """ + description: String! + + """ + The machine-readable rule key + """ + key: String! + + """ + The human-readable rule label + """ + label: String! +} + +""" +Autogenerated input type of LinkRepositoryToProject +""" +input LinkRepositoryToProjectInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Project to link to a Repository + """ + projectId: ID! + + """ + The ID of the Repository to link to a Project. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of LinkRepositoryToProject +""" +type LinkRepositoryToProjectPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The linked Project. + """ + project: Project + + """ + The linked Repository. + """ + repository: Repository +} + +""" +Autogenerated input type of LockLockable +""" +input LockLockableInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A reason for why the item will be locked. + """ + lockReason: LockReason + + """ + ID of the item to be locked. + """ + lockableId: ID! +} + +""" +Autogenerated return type of LockLockable +""" +type LockLockablePayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The item that was locked. + """ + lockedRecord: Lockable +} + +""" +The possible reasons that an issue or pull request was locked. +""" +enum LockReason { + """ + The issue or pull request was locked because the conversation was off-topic. + """ + OFF_TOPIC + + """ + The issue or pull request was locked because the conversation was resolved. + """ + RESOLVED + + """ + The issue or pull request was locked because the conversation was spam. + """ + SPAM + + """ + The issue or pull request was locked because the conversation was too heated. + """ + TOO_HEATED +} + +""" +An object that can be locked. +""" +interface Lockable { + """ + Reason that the conversation was locked. + """ + activeLockReason: LockReason + + """ + `true` if the object is locked + """ + locked: Boolean! +} + +""" +Represents a 'locked' event on a given issue or pull request. +""" +type LockedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Reason that the conversation was locked (optional). + """ + lockReason: LockReason + + """ + Object that was locked. + """ + lockable: Lockable! +} + +""" +A placeholder user for attribution of imported data on GitHub. +""" +type Mannequin implements Actor & Node & UniformResourceLocatable { + """ + A URL pointing to the GitHub App's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + The user that has claimed the data attributed to this mannequin. + """ + claimant: User + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The mannequin's email on the source instance. + """ + email: String + id: ID! + + """ + The username of the actor. + """ + login: String! + + """ + The HTML path to this resource. + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The URL to this resource. + """ + url: URI! +} + +""" +Autogenerated input type of MarkDiscussionCommentAsAnswer +""" +input MarkDiscussionCommentAsAnswerInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion comment to mark as an answer. + """ + id: ID! +} + +""" +Autogenerated return type of MarkDiscussionCommentAsAnswer +""" +type MarkDiscussionCommentAsAnswerPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The discussion that includes the chosen comment. + """ + discussion: Discussion +} + +""" +Autogenerated input type of MarkFileAsViewed +""" +input MarkFileAsViewedInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The path of the file to mark as viewed + """ + path: String! + + """ + The Node ID of the pull request. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of MarkFileAsViewed +""" +type MarkFileAsViewedPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated pull request. + """ + pullRequest: PullRequest +} + +""" +Autogenerated input type of MarkPullRequestReadyForReview +""" +input MarkPullRequestReadyForReviewInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the pull request to be marked as ready for review. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of MarkPullRequestReadyForReview +""" +type MarkPullRequestReadyForReviewPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request that is ready for review. + """ + pullRequest: PullRequest +} + +""" +Represents a 'marked_as_duplicate' event on a given issue or pull request. +""" +type MarkedAsDuplicateEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + The authoritative issue or pull request which has been duplicated by another. + """ + canonical: IssueOrPullRequest + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The issue or pull request which has been marked as a duplicate of another. + """ + duplicate: IssueOrPullRequest + id: ID! + + """ + Canonical and duplicate belong to different repositories. + """ + isCrossRepository: Boolean! +} + +""" +A public description of a Marketplace category. +""" +type MarketplaceCategory implements Node { + """ + The category's description. + """ + description: String + + """ + The technical description of how apps listed in this category work with GitHub. + """ + howItWorks: String + id: ID! + + """ + The category's name. + """ + name: String! + + """ + How many Marketplace listings have this as their primary category. + """ + primaryListingCount: Int! + + """ + The HTTP path for this Marketplace category. + """ + resourcePath: URI! + + """ + How many Marketplace listings have this as their secondary category. + """ + secondaryListingCount: Int! + + """ + The short name of the category used in its URL. + """ + slug: String! + + """ + The HTTP URL for this Marketplace category. + """ + url: URI! +} + +""" +A listing in the GitHub integration marketplace. +""" +type MarketplaceListing implements Node { + """ + The GitHub App this listing represents. + """ + app: App + + """ + URL to the listing owner's company site. + """ + companyUrl: URI + + """ + The HTTP path for configuring access to the listing's integration or OAuth app + """ + configurationResourcePath: URI! + + """ + The HTTP URL for configuring access to the listing's integration or OAuth app + """ + configurationUrl: URI! + + """ + URL to the listing's documentation. + """ + documentationUrl: URI + + """ + The listing's detailed description. + """ + extendedDescription: String + + """ + The listing's detailed description rendered to HTML. + """ + extendedDescriptionHTML: HTML! + + """ + The listing's introductory description. + """ + fullDescription: String! + + """ + The listing's introductory description rendered to HTML. + """ + fullDescriptionHTML: HTML! + + """ + Does this listing have any plans with a free trial? + """ + hasPublishedFreeTrialPlans: Boolean! + + """ + Does this listing have a terms of service link? + """ + hasTermsOfService: Boolean! + + """ + Whether the creator of the app is a verified org + """ + hasVerifiedOwner: Boolean! + + """ + A technical description of how this app works with GitHub. + """ + howItWorks: String + + """ + The listing's technical description rendered to HTML. + """ + howItWorksHTML: HTML! + id: ID! + + """ + URL to install the product to the viewer's account or organization. + """ + installationUrl: URI + + """ + Whether this listing's app has been installed for the current viewer + """ + installedForViewer: Boolean! + + """ + Whether this listing has been removed from the Marketplace. + """ + isArchived: Boolean! + + """ + Whether this listing is still an editable draft that has not been submitted + for review and is not publicly visible in the Marketplace. + """ + isDraft: Boolean! + + """ + Whether the product this listing represents is available as part of a paid plan. + """ + isPaid: Boolean! + + """ + Whether this listing has been approved for display in the Marketplace. + """ + isPublic: Boolean! + + """ + Whether this listing has been rejected by GitHub for display in the Marketplace. + """ + isRejected: Boolean! + + """ + Whether this listing has been approved for unverified display in the Marketplace. + """ + isUnverified: Boolean! + + """ + Whether this draft listing has been submitted for review for approval to be unverified in the Marketplace. + """ + isUnverifiedPending: Boolean! + + """ + Whether this draft listing has been submitted for review from GitHub for approval to be verified in the Marketplace. + """ + isVerificationPendingFromDraft: Boolean! + + """ + Whether this unverified listing has been submitted for review from GitHub for approval to be verified in the Marketplace. + """ + isVerificationPendingFromUnverified: Boolean! + + """ + Whether this listing has been approved for verified display in the Marketplace. + """ + isVerified: Boolean! + + """ + The hex color code, without the leading '#', for the logo background. + """ + logoBackgroundColor: String! + + """ + URL for the listing's logo image. + """ + logoUrl( + """ + The size in pixels of the resulting square image. + """ + size: Int = 400 + ): URI + + """ + The listing's full name. + """ + name: String! + + """ + The listing's very short description without a trailing period or ampersands. + """ + normalizedShortDescription: String! + + """ + URL to the listing's detailed pricing. + """ + pricingUrl: URI + + """ + The category that best describes the listing. + """ + primaryCategory: MarketplaceCategory! + + """ + URL to the listing's privacy policy, may return an empty string for listings that do not require a privacy policy URL. + """ + privacyPolicyUrl: URI! + + """ + The HTTP path for the Marketplace listing. + """ + resourcePath: URI! + + """ + The URLs for the listing's screenshots. + """ + screenshotUrls: [String]! + + """ + An alternate category that describes the listing. + """ + secondaryCategory: MarketplaceCategory + + """ + The listing's very short description. + """ + shortDescription: String! + + """ + The short name of the listing used in its URL. + """ + slug: String! + + """ + URL to the listing's status page. + """ + statusUrl: URI + + """ + An email address for support for this listing's app. + """ + supportEmail: String + + """ + Either a URL or an email address for support for this listing's app, may + return an empty string for listings that do not require a support URL. + """ + supportUrl: URI! + + """ + URL to the listing's terms of service. + """ + termsOfServiceUrl: URI + + """ + The HTTP URL for the Marketplace listing. + """ + url: URI! + + """ + Can the current viewer add plans for this Marketplace listing. + """ + viewerCanAddPlans: Boolean! + + """ + Can the current viewer approve this Marketplace listing. + """ + viewerCanApprove: Boolean! + + """ + Can the current viewer delist this Marketplace listing. + """ + viewerCanDelist: Boolean! + + """ + Can the current viewer edit this Marketplace listing. + """ + viewerCanEdit: Boolean! + + """ + Can the current viewer edit the primary and secondary category of this + Marketplace listing. + """ + viewerCanEditCategories: Boolean! + + """ + Can the current viewer edit the plans for this Marketplace listing. + """ + viewerCanEditPlans: Boolean! + + """ + Can the current viewer return this Marketplace listing to draft state + so it becomes editable again. + """ + viewerCanRedraft: Boolean! + + """ + Can the current viewer reject this Marketplace listing by returning it to + an editable draft state or rejecting it entirely. + """ + viewerCanReject: Boolean! + + """ + Can the current viewer request this listing be reviewed for display in + the Marketplace as verified. + """ + viewerCanRequestApproval: Boolean! + + """ + Indicates whether the current user has an active subscription to this Marketplace listing. + """ + viewerHasPurchased: Boolean! + + """ + Indicates if the current user has purchased a subscription to this Marketplace listing + for all of the organizations the user owns. + """ + viewerHasPurchasedForAllOrganizations: Boolean! + + """ + Does the current viewer role allow them to administer this Marketplace listing. + """ + viewerIsListingAdmin: Boolean! +} + +""" +Look up Marketplace Listings +""" +type MarketplaceListingConnection { + """ + A list of edges. + """ + edges: [MarketplaceListingEdge] + + """ + A list of nodes. + """ + nodes: [MarketplaceListing] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type MarketplaceListingEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: MarketplaceListing +} + +""" +Entities that have members who can set status messages. +""" +interface MemberStatusable { + """ + Get the status messages members of this entity have set that are either public or visible only to the organization. + """ + memberStatuses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for user statuses returned from the connection. + """ + orderBy: UserStatusOrder = {field: UPDATED_AT, direction: DESC} + ): UserStatusConnection! +} + +""" +Audit log entry for a members_can_delete_repos.clear event. +""" +type MembersCanDeleteReposClearAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a members_can_delete_repos.disable event. +""" +type MembersCanDeleteReposDisableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a members_can_delete_repos.enable event. +""" +type MembersCanDeleteReposEnableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Represents a 'mentioned' event on a given issue or pull request. +""" +type MentionedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! +} + +""" +Autogenerated input type of MergeBranch +""" +input MergeBranchInput { + """ + The email address to associate with this commit. + """ + authorEmail: String + + """ + The name of the base branch that the provided head will be merged into. + """ + base: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Message to use for the merge commit. If omitted, a default will be used. + """ + commitMessage: String + + """ + The head to merge into the base branch. This can be a branch name or a commit GitObjectID. + """ + head: String! + + """ + The Node ID of the Repository containing the base branch that will be modified. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of MergeBranch +""" +type MergeBranchPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The resulting merge Commit. + """ + mergeCommit: Commit +} + +""" +Autogenerated input type of MergePullRequest +""" +input MergePullRequestInput { + """ + The email address to associate with this merge. + """ + authorEmail: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Commit body to use for the merge commit; if omitted, a default message will be used + """ + commitBody: String + + """ + Commit headline to use for the merge commit; if omitted, a default message will be used. + """ + commitHeadline: String + + """ + OID that the pull request head ref must match to allow merge; if omitted, no check is performed. + """ + expectedHeadOid: GitObjectID + + """ + The merge method to use. If omitted, defaults to 'MERGE' + """ + mergeMethod: PullRequestMergeMethod = MERGE + + """ + ID of the pull request to be merged. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of MergePullRequest +""" +type MergePullRequestPayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request that was merged. + """ + pullRequest: PullRequest +} + +""" +Whether or not a PullRequest can be merged. +""" +enum MergeableState { + """ + The pull request cannot be merged due to merge conflicts. + """ + CONFLICTING + + """ + The pull request can be merged. + """ + MERGEABLE + + """ + The mergeability of the pull request is still being calculated. + """ + UNKNOWN +} + +""" +Represents a 'merged' event on a given pull request. +""" +type MergedEvent implements Node & UniformResourceLocatable { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the commit associated with the `merge` event. + """ + commit: Commit + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the Ref associated with the `merge` event. + """ + mergeRef: Ref + + """ + Identifies the name of the Ref associated with the `merge` event. + """ + mergeRefName: String! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + The HTTP path for this merged event. + """ + resourcePath: URI! + + """ + The HTTP URL for this merged event. + """ + url: URI! +} + +""" +Represents an Octoshift migration. +""" +interface Migration { + """ + The Octoshift migration flag to continue on error. + """ + continueOnError: Boolean! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The reason the migration failed. + """ + failureReason: String + id: ID! + + """ + The URL for the migration log (expires 1 day after migration completes). + """ + migrationLogUrl: URI + + """ + The Octoshift migration source. + """ + migrationSource: MigrationSource! + + """ + The target repository name. + """ + repositoryName: String! + + """ + The Octoshift migration source URL. + """ + sourceUrl: URI! + + """ + The Octoshift migration state. + """ + state: MigrationState! +} + +""" +An Octoshift migration source. +""" +type MigrationSource implements Node { + id: ID! + + """ + The Octoshift migration source name. + """ + name: String! + + """ + The Octoshift migration source type. + """ + type: MigrationSourceType! + + """ + The Octoshift migration source URL. + """ + url: URI! +} + +""" +Represents the different Octoshift migration sources. +""" +enum MigrationSourceType { + """ + An Azure DevOps migration source. + """ + AZURE_DEVOPS + + """ + A Bitbucket Server migration source. + """ + BITBUCKET_SERVER + + """ + A GitHub migration source. + """ + GITHUB + + """ + A GitHub Migration API source. + """ + GITHUB_ARCHIVE + + """ + A GitLab migration source. + """ + GITLAB +} + +""" +The Octoshift migration state. +""" +enum MigrationState { + """ + The Octoshift migration has failed. + """ + FAILED + + """ + The Octoshift migration has invalid credentials. + """ + FAILED_VALIDATION + + """ + The Octoshift migration is in progress. + """ + IN_PROGRESS + + """ + The Octoshift migration has not started. + """ + NOT_STARTED + + """ + The Octoshift migration needs to have its credentials validated. + """ + PENDING_VALIDATION + + """ + The Octoshift migration has been queued. + """ + QUEUED + + """ + The Octoshift migration has succeeded. + """ + SUCCEEDED +} + +""" +Represents a Milestone object on a given repository. +""" +type Milestone implements Closable & Node & UniformResourceLocatable { + """ + `true` if the object is closed (definition of closed may depend on type) + """ + closed: Boolean! + + """ + Identifies the date and time when the object was closed. + """ + closedAt: DateTime + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the actor who created the milestone. + """ + creator: Actor + + """ + Identifies the description of the milestone. + """ + description: String + + """ + Identifies the due date of the milestone. + """ + dueOn: DateTime + id: ID! + + """ + A list of issues associated with the milestone. + """ + issues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for issues returned from the connection. + """ + filterBy: IssueFilters + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issues returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the issues by. + """ + states: [IssueState!] + ): IssueConnection! + + """ + Identifies the number of the milestone. + """ + number: Int! + + """ + Identifies the percentage complete for the milestone + """ + progressPercentage: Float! + + """ + A list of pull requests associated with the milestone. + """ + pullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + The base ref name to filter the pull requests by. + """ + baseRefName: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + The head ref name to filter the pull requests by. + """ + headRefName: String + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pull requests returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the pull requests by. + """ + states: [PullRequestState!] + ): PullRequestConnection! + + """ + The repository associated with this milestone. + """ + repository: Repository! + + """ + The HTTP path for this milestone + """ + resourcePath: URI! + + """ + Identifies the state of the milestone. + """ + state: MilestoneState! + + """ + Identifies the title of the milestone. + """ + title: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this milestone + """ + url: URI! +} + +""" +The connection type for Milestone. +""" +type MilestoneConnection { + """ + A list of edges. + """ + edges: [MilestoneEdge] + + """ + A list of nodes. + """ + nodes: [Milestone] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type MilestoneEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Milestone +} + +""" +Types that can be inside a Milestone. +""" +union MilestoneItem = Issue | PullRequest + +""" +Ordering options for milestone connections. +""" +input MilestoneOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order milestones by. + """ + field: MilestoneOrderField! +} + +""" +Properties by which milestone connections can be ordered. +""" +enum MilestoneOrderField { + """ + Order milestones by when they were created. + """ + CREATED_AT + + """ + Order milestones by when they are due. + """ + DUE_DATE + + """ + Order milestones by their number. + """ + NUMBER + + """ + Order milestones by when they were last updated. + """ + UPDATED_AT +} + +""" +The possible states of a milestone. +""" +enum MilestoneState { + """ + A milestone that has been closed. + """ + CLOSED + + """ + A milestone that is still open. + """ + OPEN +} + +""" +Represents a 'milestoned' event on a given issue or pull request. +""" +type MilestonedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the milestone title associated with the 'milestoned' event. + """ + milestoneTitle: String! + + """ + Object referenced by event. + """ + subject: MilestoneItem! +} + +""" +Entities that can be minimized. +""" +interface Minimizable { + """ + Returns whether or not a comment has been minimized. + """ + isMinimized: Boolean! + + """ + Returns why the comment was minimized. + """ + minimizedReason: String + + """ + Check if the current viewer can minimize this object. + """ + viewerCanMinimize: Boolean! +} + +""" +Autogenerated input type of MinimizeComment +""" +input MinimizeCommentInput { + """ + The classification of comment + """ + classifier: ReportedContentClassifiers! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the subject to modify. + """ + subjectId: ID! +} + +""" +Autogenerated return type of MinimizeComment +""" +type MinimizeCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The comment that was minimized. + """ + minimizedComment: Minimizable +} + +""" +Autogenerated input type of MoveProjectCard +""" +input MoveProjectCardInput { + """ + Place the new card after the card with this id. Pass null to place it at the top. + """ + afterCardId: ID + + """ + The id of the card to move. + """ + cardId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the column to move it into. + """ + columnId: ID! +} + +""" +Autogenerated return type of MoveProjectCard +""" +type MoveProjectCardPayload { + """ + The new edge of the moved card. + """ + cardEdge: ProjectCardEdge + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of MoveProjectColumn +""" +input MoveProjectColumnInput { + """ + Place the new column after the column with this id. Pass null to place it at the front. + """ + afterColumnId: ID + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the column to move. + """ + columnId: ID! +} + +""" +Autogenerated return type of MoveProjectColumn +""" +type MoveProjectColumnPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new edge of the moved column. + """ + columnEdge: ProjectColumnEdge +} + +""" +Represents a 'moved_columns_in_project' event on a given issue or pull request. +""" +type MovedColumnsInProjectEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! +} + +""" +The root query for implementing GraphQL mutations. +""" +type Mutation { + """ + Clear all of a customer's queued migrations + """ + abortQueuedMigrations( + """ + Parameters for AbortQueuedMigrations + """ + input: AbortQueuedMigrationsInput! + ): AbortQueuedMigrationsPayload + + """ + Accepts a pending invitation for a user to become an administrator of an enterprise. + """ + acceptEnterpriseAdministratorInvitation( + """ + Parameters for AcceptEnterpriseAdministratorInvitation + """ + input: AcceptEnterpriseAdministratorInvitationInput! + ): AcceptEnterpriseAdministratorInvitationPayload + + """ + Applies a suggested topic to the repository. + """ + acceptTopicSuggestion( + """ + Parameters for AcceptTopicSuggestion + """ + input: AcceptTopicSuggestionInput! + ): AcceptTopicSuggestionPayload + + """ + Adds assignees to an assignable object. + """ + addAssigneesToAssignable( + """ + Parameters for AddAssigneesToAssignable + """ + input: AddAssigneesToAssignableInput! + ): AddAssigneesToAssignablePayload + + """ + Adds a comment to an Issue or Pull Request. + """ + addComment( + """ + Parameters for AddComment + """ + input: AddCommentInput! + ): AddCommentPayload + + """ + Adds a comment to a Discussion, possibly as a reply to another comment. + """ + addDiscussionComment( + """ + Parameters for AddDiscussionComment + """ + input: AddDiscussionCommentInput! + ): AddDiscussionCommentPayload + + """ + Vote for an option in a discussion poll. + """ + addDiscussionPollVote( + """ + Parameters for AddDiscussionPollVote + """ + input: AddDiscussionPollVoteInput! + ): AddDiscussionPollVotePayload + + """ + Adds a support entitlement to an enterprise member. + """ + addEnterpriseSupportEntitlement( + """ + Parameters for AddEnterpriseSupportEntitlement + """ + input: AddEnterpriseSupportEntitlementInput! + ): AddEnterpriseSupportEntitlementPayload + + """ + Adds labels to a labelable object. + """ + addLabelsToLabelable( + """ + Parameters for AddLabelsToLabelable + """ + input: AddLabelsToLabelableInput! + ): AddLabelsToLabelablePayload + + """ + Adds a card to a ProjectColumn. Either `contentId` or `note` must be provided but **not** both. + """ + addProjectCard( + """ + Parameters for AddProjectCard + """ + input: AddProjectCardInput! + ): AddProjectCardPayload + + """ + Adds a column to a Project. + """ + addProjectColumn( + """ + Parameters for AddProjectColumn + """ + input: AddProjectColumnInput! + ): AddProjectColumnPayload + + """ + Creates a new draft issue and add it to a Project. + """ + addProjectDraftIssue( + """ + Parameters for AddProjectDraftIssue + """ + input: AddProjectDraftIssueInput! + ): AddProjectDraftIssuePayload @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Adds an existing item (Issue or PullRequest) to a Project. + """ + addProjectNextItem( + """ + Parameters for AddProjectNextItem + """ + input: AddProjectNextItemInput! + ): AddProjectNextItemPayload @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Creates a new draft issue and add it to a Project. + """ + addProjectV2DraftIssue( + """ + Parameters for AddProjectV2DraftIssue + """ + input: AddProjectV2DraftIssueInput! + ): AddProjectV2DraftIssuePayload + + """ + Links an existing content instance to a Project. + """ + addProjectV2ItemById( + """ + Parameters for AddProjectV2ItemById + """ + input: AddProjectV2ItemByIdInput! + ): AddProjectV2ItemByIdPayload + + """ + Adds a review to a Pull Request. + """ + addPullRequestReview( + """ + Parameters for AddPullRequestReview + """ + input: AddPullRequestReviewInput! + ): AddPullRequestReviewPayload + + """ + Adds a comment to a review. + """ + addPullRequestReviewComment( + """ + Parameters for AddPullRequestReviewComment + """ + input: AddPullRequestReviewCommentInput! + ): AddPullRequestReviewCommentPayload + + """ + Adds a new thread to a pending Pull Request Review. + """ + addPullRequestReviewThread( + """ + Parameters for AddPullRequestReviewThread + """ + input: AddPullRequestReviewThreadInput! + ): AddPullRequestReviewThreadPayload + + """ + Adds a reaction to a subject. + """ + addReaction( + """ + Parameters for AddReaction + """ + input: AddReactionInput! + ): AddReactionPayload + + """ + Adds a star to a Starrable. + """ + addStar( + """ + Parameters for AddStar + """ + input: AddStarInput! + ): AddStarPayload + + """ + Add an upvote to a discussion or discussion comment. + """ + addUpvote( + """ + Parameters for AddUpvote + """ + input: AddUpvoteInput! + ): AddUpvotePayload + + """ + Adds a verifiable domain to an owning account. + """ + addVerifiableDomain( + """ + Parameters for AddVerifiableDomain + """ + input: AddVerifiableDomainInput! + ): AddVerifiableDomainPayload + + """ + Approve all pending deployments under one or more environments + """ + approveDeployments( + """ + Parameters for ApproveDeployments + """ + input: ApproveDeploymentsInput! + ): ApproveDeploymentsPayload + + """ + Approve a verifiable domain for notification delivery. + """ + approveVerifiableDomain( + """ + Parameters for ApproveVerifiableDomain + """ + input: ApproveVerifiableDomainInput! + ): ApproveVerifiableDomainPayload + + """ + Marks a repository as archived. + """ + archiveRepository( + """ + Parameters for ArchiveRepository + """ + input: ArchiveRepositoryInput! + ): ArchiveRepositoryPayload + + """ + Cancels a pending invitation for an administrator to join an enterprise. + """ + cancelEnterpriseAdminInvitation( + """ + Parameters for CancelEnterpriseAdminInvitation + """ + input: CancelEnterpriseAdminInvitationInput! + ): CancelEnterpriseAdminInvitationPayload + + """ + Cancel an active sponsorship. + """ + cancelSponsorship( + """ + Parameters for CancelSponsorship + """ + input: CancelSponsorshipInput! + ): CancelSponsorshipPayload + + """ + Update your status on GitHub. + """ + changeUserStatus( + """ + Parameters for ChangeUserStatus + """ + input: ChangeUserStatusInput! + ): ChangeUserStatusPayload + + """ + Clears all labels from a labelable object. + """ + clearLabelsFromLabelable( + """ + Parameters for ClearLabelsFromLabelable + """ + input: ClearLabelsFromLabelableInput! + ): ClearLabelsFromLabelablePayload + + """ + Creates a new project by cloning configuration from an existing project. + """ + cloneProject( + """ + Parameters for CloneProject + """ + input: CloneProjectInput! + ): CloneProjectPayload + + """ + Create a new repository with the same files and directory structure as a template repository. + """ + cloneTemplateRepository( + """ + Parameters for CloneTemplateRepository + """ + input: CloneTemplateRepositoryInput! + ): CloneTemplateRepositoryPayload + + """ + Close an issue. + """ + closeIssue( + """ + Parameters for CloseIssue + """ + input: CloseIssueInput! + ): CloseIssuePayload + + """ + Close a pull request. + """ + closePullRequest( + """ + Parameters for ClosePullRequest + """ + input: ClosePullRequestInput! + ): ClosePullRequestPayload + + """ + Convert a project note card to one associated with a newly created issue. + """ + convertProjectCardNoteToIssue( + """ + Parameters for ConvertProjectCardNoteToIssue + """ + input: ConvertProjectCardNoteToIssueInput! + ): ConvertProjectCardNoteToIssuePayload + + """ + Converts a pull request to draft + """ + convertPullRequestToDraft( + """ + Parameters for ConvertPullRequestToDraft + """ + input: ConvertPullRequestToDraftInput! + ): ConvertPullRequestToDraftPayload + + """ + Create a new branch protection rule + """ + createBranchProtectionRule( + """ + Parameters for CreateBranchProtectionRule + """ + input: CreateBranchProtectionRuleInput! + ): CreateBranchProtectionRulePayload + + """ + Create a check run. + """ + createCheckRun( + """ + Parameters for CreateCheckRun + """ + input: CreateCheckRunInput! + ): CreateCheckRunPayload + + """ + Create a check suite + """ + createCheckSuite( + """ + Parameters for CreateCheckSuite + """ + input: CreateCheckSuiteInput! + ): CreateCheckSuitePayload + + """ + Appends a commit to the given branch as the authenticated user. + + This mutation creates a commit whose parent is the HEAD of the provided + branch and also updates that branch to point to the new commit. + It can be thought of as similar to `git commit`. + + ### Locating a Branch + + Commits are appended to a `branch` of type `Ref`. + This must refer to a git branch (i.e. the fully qualified path must + begin with `refs/heads/`, although including this prefix is optional. + + Callers may specify the `branch` to commit to either by its global node + ID or by passing both of `repositoryNameWithOwner` and `refName`. For + more details see the documentation for `CommittableBranch`. + + ### Describing Changes + + `fileChanges` are specified as a `FilesChanges` object describing + `FileAdditions` and `FileDeletions`. + + Please see the documentation for `FileChanges` for more information on + how to use this argument to describe any set of file changes. + + ### Authorship + + Similar to the web commit interface, this mutation does not support + specifying the author or committer of the commit and will not add + support for this in the future. + + A commit created by a successful execution of this mutation will be + authored by the owner of the credential which authenticates the API + request. The committer will be identical to that of commits authored + using the web interface. + + If you need full control over author and committer information, please + use the Git Database REST API instead. + + ### Commit Signing + + Commits made using this mutation are automatically signed by GitHub if + supported and will be marked as verified in the user interface. + """ + createCommitOnBranch( + """ + Parameters for CreateCommitOnBranch + """ + input: CreateCommitOnBranchInput! + ): CreateCommitOnBranchPayload + + """ + Create a discussion. + """ + createDiscussion( + """ + Parameters for CreateDiscussion + """ + input: CreateDiscussionInput! + ): CreateDiscussionPayload + + """ + Creates an organization as part of an enterprise account. + """ + createEnterpriseOrganization( + """ + Parameters for CreateEnterpriseOrganization + """ + input: CreateEnterpriseOrganizationInput! + ): CreateEnterpriseOrganizationPayload + + """ + Creates an environment or simply returns it if already exists. + """ + createEnvironment( + """ + Parameters for CreateEnvironment + """ + input: CreateEnvironmentInput! + ): CreateEnvironmentPayload + + """ + Creates a new IP allow list entry. + """ + createIpAllowListEntry( + """ + Parameters for CreateIpAllowListEntry + """ + input: CreateIpAllowListEntryInput! + ): CreateIpAllowListEntryPayload + + """ + Creates a new issue. + """ + createIssue( + """ + Parameters for CreateIssue + """ + input: CreateIssueInput! + ): CreateIssuePayload + + """ + Creates an Octoshift migration source. + """ + createMigrationSource( + """ + Parameters for CreateMigrationSource + """ + input: CreateMigrationSourceInput! + ): CreateMigrationSourcePayload + + """ + Creates a new project. + """ + createProject( + """ + Parameters for CreateProject + """ + input: CreateProjectInput! + ): CreateProjectPayload + + """ + Creates a new project. + """ + createProjectV2( + """ + Parameters for CreateProjectV2 + """ + input: CreateProjectV2Input! + ): CreateProjectV2Payload + + """ + Create a new pull request + """ + createPullRequest( + """ + Parameters for CreatePullRequest + """ + input: CreatePullRequestInput! + ): CreatePullRequestPayload + + """ + Create a new Git Ref. + """ + createRef( + """ + Parameters for CreateRef + """ + input: CreateRefInput! + ): CreateRefPayload + + """ + Create a new repository. + """ + createRepository( + """ + Parameters for CreateRepository + """ + input: CreateRepositoryInput! + ): CreateRepositoryPayload + + """ + Create a new payment tier for your GitHub Sponsors profile. + """ + createSponsorsTier( + """ + Parameters for CreateSponsorsTier + """ + input: CreateSponsorsTierInput! + ): CreateSponsorsTierPayload + + """ + Start a new sponsorship of a maintainer in GitHub Sponsors, or reactivate a past sponsorship. + """ + createSponsorship( + """ + Parameters for CreateSponsorship + """ + input: CreateSponsorshipInput! + ): CreateSponsorshipPayload + + """ + Creates a new team discussion. + """ + createTeamDiscussion( + """ + Parameters for CreateTeamDiscussion + """ + input: CreateTeamDiscussionInput! + ): CreateTeamDiscussionPayload + + """ + Creates a new team discussion comment. + """ + createTeamDiscussionComment( + """ + Parameters for CreateTeamDiscussionComment + """ + input: CreateTeamDiscussionCommentInput! + ): CreateTeamDiscussionCommentPayload + + """ + Rejects a suggested topic for the repository. + """ + declineTopicSuggestion( + """ + Parameters for DeclineTopicSuggestion + """ + input: DeclineTopicSuggestionInput! + ): DeclineTopicSuggestionPayload + + """ + Delete a branch protection rule + """ + deleteBranchProtectionRule( + """ + Parameters for DeleteBranchProtectionRule + """ + input: DeleteBranchProtectionRuleInput! + ): DeleteBranchProtectionRulePayload + + """ + Deletes a deployment. + """ + deleteDeployment( + """ + Parameters for DeleteDeployment + """ + input: DeleteDeploymentInput! + ): DeleteDeploymentPayload + + """ + Delete a discussion and all of its replies. + """ + deleteDiscussion( + """ + Parameters for DeleteDiscussion + """ + input: DeleteDiscussionInput! + ): DeleteDiscussionPayload + + """ + Delete a discussion comment. If it has replies, wipe it instead. + """ + deleteDiscussionComment( + """ + Parameters for DeleteDiscussionComment + """ + input: DeleteDiscussionCommentInput! + ): DeleteDiscussionCommentPayload + + """ + Deletes an environment + """ + deleteEnvironment( + """ + Parameters for DeleteEnvironment + """ + input: DeleteEnvironmentInput! + ): DeleteEnvironmentPayload + + """ + Deletes an IP allow list entry. + """ + deleteIpAllowListEntry( + """ + Parameters for DeleteIpAllowListEntry + """ + input: DeleteIpAllowListEntryInput! + ): DeleteIpAllowListEntryPayload + + """ + Deletes an Issue object. + """ + deleteIssue( + """ + Parameters for DeleteIssue + """ + input: DeleteIssueInput! + ): DeleteIssuePayload + + """ + Deletes an IssueComment object. + """ + deleteIssueComment( + """ + Parameters for DeleteIssueComment + """ + input: DeleteIssueCommentInput! + ): DeleteIssueCommentPayload + + """ + Deletes a project. + """ + deleteProject( + """ + Parameters for DeleteProject + """ + input: DeleteProjectInput! + ): DeleteProjectPayload + + """ + Deletes a project card. + """ + deleteProjectCard( + """ + Parameters for DeleteProjectCard + """ + input: DeleteProjectCardInput! + ): DeleteProjectCardPayload + + """ + Deletes a project column. + """ + deleteProjectColumn( + """ + Parameters for DeleteProjectColumn + """ + input: DeleteProjectColumnInput! + ): DeleteProjectColumnPayload + + """ + Deletes an item from a Project. + """ + deleteProjectNextItem( + """ + Parameters for DeleteProjectNextItem + """ + input: DeleteProjectNextItemInput! + ): DeleteProjectNextItemPayload @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Deletes an item from a Project. + """ + deleteProjectV2Item( + """ + Parameters for DeleteProjectV2Item + """ + input: DeleteProjectV2ItemInput! + ): DeleteProjectV2ItemPayload + + """ + Deletes a pull request review. + """ + deletePullRequestReview( + """ + Parameters for DeletePullRequestReview + """ + input: DeletePullRequestReviewInput! + ): DeletePullRequestReviewPayload + + """ + Deletes a pull request review comment. + """ + deletePullRequestReviewComment( + """ + Parameters for DeletePullRequestReviewComment + """ + input: DeletePullRequestReviewCommentInput! + ): DeletePullRequestReviewCommentPayload + + """ + Delete a Git Ref. + """ + deleteRef( + """ + Parameters for DeleteRef + """ + input: DeleteRefInput! + ): DeleteRefPayload + + """ + Deletes a team discussion. + """ + deleteTeamDiscussion( + """ + Parameters for DeleteTeamDiscussion + """ + input: DeleteTeamDiscussionInput! + ): DeleteTeamDiscussionPayload + + """ + Deletes a team discussion comment. + """ + deleteTeamDiscussionComment( + """ + Parameters for DeleteTeamDiscussionComment + """ + input: DeleteTeamDiscussionCommentInput! + ): DeleteTeamDiscussionCommentPayload + + """ + Deletes a verifiable domain. + """ + deleteVerifiableDomain( + """ + Parameters for DeleteVerifiableDomain + """ + input: DeleteVerifiableDomainInput! + ): DeleteVerifiableDomainPayload + + """ + Disable auto merge on the given pull request + """ + disablePullRequestAutoMerge( + """ + Parameters for DisablePullRequestAutoMerge + """ + input: DisablePullRequestAutoMergeInput! + ): DisablePullRequestAutoMergePayload + + """ + Dismisses an approved or rejected pull request review. + """ + dismissPullRequestReview( + """ + Parameters for DismissPullRequestReview + """ + input: DismissPullRequestReviewInput! + ): DismissPullRequestReviewPayload + + """ + Dismisses the Dependabot alert. + """ + dismissRepositoryVulnerabilityAlert( + """ + Parameters for DismissRepositoryVulnerabilityAlert + """ + input: DismissRepositoryVulnerabilityAlertInput! + ): DismissRepositoryVulnerabilityAlertPayload + + """ + Enable the default auto-merge on a pull request. + """ + enablePullRequestAutoMerge( + """ + Parameters for EnablePullRequestAutoMerge + """ + input: EnablePullRequestAutoMergeInput! + ): EnablePullRequestAutoMergePayload + + """ + Follow an organization. + """ + followOrganization( + """ + Parameters for FollowOrganization + """ + input: FollowOrganizationInput! + ): FollowOrganizationPayload + + """ + Follow a user. + """ + followUser( + """ + Parameters for FollowUser + """ + input: FollowUserInput! + ): FollowUserPayload + + """ + Grant the migrator role to a user for all organizations under an enterprise account. + """ + grantEnterpriseOrganizationsMigratorRole( + """ + Parameters for GrantEnterpriseOrganizationsMigratorRole + """ + input: GrantEnterpriseOrganizationsMigratorRoleInput! + ): GrantEnterpriseOrganizationsMigratorRolePayload + + """ + Grant the migrator role to a user or a team. + """ + grantMigratorRole( + """ + Parameters for GrantMigratorRole + """ + input: GrantMigratorRoleInput! + ): GrantMigratorRolePayload + + """ + Invite someone to become an administrator of the enterprise. + """ + inviteEnterpriseAdmin( + """ + Parameters for InviteEnterpriseAdmin + """ + input: InviteEnterpriseAdminInput! + ): InviteEnterpriseAdminPayload + + """ + Creates a repository link for a project. + """ + linkRepositoryToProject( + """ + Parameters for LinkRepositoryToProject + """ + input: LinkRepositoryToProjectInput! + ): LinkRepositoryToProjectPayload + + """ + Lock a lockable object + """ + lockLockable( + """ + Parameters for LockLockable + """ + input: LockLockableInput! + ): LockLockablePayload + + """ + Mark a discussion comment as the chosen answer for discussions in an answerable category. + """ + markDiscussionCommentAsAnswer( + """ + Parameters for MarkDiscussionCommentAsAnswer + """ + input: MarkDiscussionCommentAsAnswerInput! + ): MarkDiscussionCommentAsAnswerPayload + + """ + Mark a pull request file as viewed + """ + markFileAsViewed( + """ + Parameters for MarkFileAsViewed + """ + input: MarkFileAsViewedInput! + ): MarkFileAsViewedPayload + + """ + Marks a pull request ready for review. + """ + markPullRequestReadyForReview( + """ + Parameters for MarkPullRequestReadyForReview + """ + input: MarkPullRequestReadyForReviewInput! + ): MarkPullRequestReadyForReviewPayload + + """ + Merge a head into a branch. + """ + mergeBranch( + """ + Parameters for MergeBranch + """ + input: MergeBranchInput! + ): MergeBranchPayload + + """ + Merge a pull request. + """ + mergePullRequest( + """ + Parameters for MergePullRequest + """ + input: MergePullRequestInput! + ): MergePullRequestPayload + + """ + Minimizes a comment on an Issue, Commit, Pull Request, or Gist + """ + minimizeComment( + """ + Parameters for MinimizeComment + """ + input: MinimizeCommentInput! + ): MinimizeCommentPayload + + """ + Moves a project card to another place. + """ + moveProjectCard( + """ + Parameters for MoveProjectCard + """ + input: MoveProjectCardInput! + ): MoveProjectCardPayload + + """ + Moves a project column to another place. + """ + moveProjectColumn( + """ + Parameters for MoveProjectColumn + """ + input: MoveProjectColumnInput! + ): MoveProjectColumnPayload + + """ + Pin an issue to a repository + """ + pinIssue( + """ + Parameters for PinIssue + """ + input: PinIssueInput! + ): PinIssuePayload + + """ + Regenerates the identity provider recovery codes for an enterprise + """ + regenerateEnterpriseIdentityProviderRecoveryCodes( + """ + Parameters for RegenerateEnterpriseIdentityProviderRecoveryCodes + """ + input: RegenerateEnterpriseIdentityProviderRecoveryCodesInput! + ): RegenerateEnterpriseIdentityProviderRecoveryCodesPayload + + """ + Regenerates a verifiable domain's verification token. + """ + regenerateVerifiableDomainToken( + """ + Parameters for RegenerateVerifiableDomainToken + """ + input: RegenerateVerifiableDomainTokenInput! + ): RegenerateVerifiableDomainTokenPayload + + """ + Reject all pending deployments under one or more environments + """ + rejectDeployments( + """ + Parameters for RejectDeployments + """ + input: RejectDeploymentsInput! + ): RejectDeploymentsPayload + + """ + Removes assignees from an assignable object. + """ + removeAssigneesFromAssignable( + """ + Parameters for RemoveAssigneesFromAssignable + """ + input: RemoveAssigneesFromAssignableInput! + ): RemoveAssigneesFromAssignablePayload + + """ + Removes an administrator from the enterprise. + """ + removeEnterpriseAdmin( + """ + Parameters for RemoveEnterpriseAdmin + """ + input: RemoveEnterpriseAdminInput! + ): RemoveEnterpriseAdminPayload + + """ + Removes the identity provider from an enterprise + """ + removeEnterpriseIdentityProvider( + """ + Parameters for RemoveEnterpriseIdentityProvider + """ + input: RemoveEnterpriseIdentityProviderInput! + ): RemoveEnterpriseIdentityProviderPayload + + """ + Removes an organization from the enterprise + """ + removeEnterpriseOrganization( + """ + Parameters for RemoveEnterpriseOrganization + """ + input: RemoveEnterpriseOrganizationInput! + ): RemoveEnterpriseOrganizationPayload + + """ + Removes a support entitlement from an enterprise member. + """ + removeEnterpriseSupportEntitlement( + """ + Parameters for RemoveEnterpriseSupportEntitlement + """ + input: RemoveEnterpriseSupportEntitlementInput! + ): RemoveEnterpriseSupportEntitlementPayload + + """ + Removes labels from a Labelable object. + """ + removeLabelsFromLabelable( + """ + Parameters for RemoveLabelsFromLabelable + """ + input: RemoveLabelsFromLabelableInput! + ): RemoveLabelsFromLabelablePayload + + """ + Removes outside collaborator from all repositories in an organization. + """ + removeOutsideCollaborator( + """ + Parameters for RemoveOutsideCollaborator + """ + input: RemoveOutsideCollaboratorInput! + ): RemoveOutsideCollaboratorPayload + + """ + Removes a reaction from a subject. + """ + removeReaction( + """ + Parameters for RemoveReaction + """ + input: RemoveReactionInput! + ): RemoveReactionPayload + + """ + Removes a star from a Starrable. + """ + removeStar( + """ + Parameters for RemoveStar + """ + input: RemoveStarInput! + ): RemoveStarPayload + + """ + Remove an upvote to a discussion or discussion comment. + """ + removeUpvote( + """ + Parameters for RemoveUpvote + """ + input: RemoveUpvoteInput! + ): RemoveUpvotePayload + + """ + Reopen a issue. + """ + reopenIssue( + """ + Parameters for ReopenIssue + """ + input: ReopenIssueInput! + ): ReopenIssuePayload + + """ + Reopen a pull request. + """ + reopenPullRequest( + """ + Parameters for ReopenPullRequest + """ + input: ReopenPullRequestInput! + ): ReopenPullRequestPayload + + """ + Set review requests on a pull request. + """ + requestReviews( + """ + Parameters for RequestReviews + """ + input: RequestReviewsInput! + ): RequestReviewsPayload + + """ + Rerequests an existing check suite. + """ + rerequestCheckSuite( + """ + Parameters for RerequestCheckSuite + """ + input: RerequestCheckSuiteInput! + ): RerequestCheckSuitePayload + + """ + Marks a review thread as resolved. + """ + resolveReviewThread( + """ + Parameters for ResolveReviewThread + """ + input: ResolveReviewThreadInput! + ): ResolveReviewThreadPayload + + """ + Revoke the migrator role to a user for all organizations under an enterprise account. + """ + revokeEnterpriseOrganizationsMigratorRole( + """ + Parameters for RevokeEnterpriseOrganizationsMigratorRole + """ + input: RevokeEnterpriseOrganizationsMigratorRoleInput! + ): RevokeEnterpriseOrganizationsMigratorRolePayload + + """ + Revoke the migrator role from a user or a team. + """ + revokeMigratorRole( + """ + Parameters for RevokeMigratorRole + """ + input: RevokeMigratorRoleInput! + ): RevokeMigratorRolePayload + + """ + Creates or updates the identity provider for an enterprise. + """ + setEnterpriseIdentityProvider( + """ + Parameters for SetEnterpriseIdentityProvider + """ + input: SetEnterpriseIdentityProviderInput! + ): SetEnterpriseIdentityProviderPayload + + """ + Set an organization level interaction limit for an organization's public repositories. + """ + setOrganizationInteractionLimit( + """ + Parameters for SetOrganizationInteractionLimit + """ + input: SetOrganizationInteractionLimitInput! + ): SetOrganizationInteractionLimitPayload + + """ + Sets an interaction limit setting for a repository. + """ + setRepositoryInteractionLimit( + """ + Parameters for SetRepositoryInteractionLimit + """ + input: SetRepositoryInteractionLimitInput! + ): SetRepositoryInteractionLimitPayload + + """ + Set a user level interaction limit for an user's public repositories. + """ + setUserInteractionLimit( + """ + Parameters for SetUserInteractionLimit + """ + input: SetUserInteractionLimitInput! + ): SetUserInteractionLimitPayload + + """ + Start a repository migration. + """ + startRepositoryMigration( + """ + Parameters for StartRepositoryMigration + """ + input: StartRepositoryMigrationInput! + ): StartRepositoryMigrationPayload + + """ + Submits a pending pull request review. + """ + submitPullRequestReview( + """ + Parameters for SubmitPullRequestReview + """ + input: SubmitPullRequestReviewInput! + ): SubmitPullRequestReviewPayload + + """ + Transfer an issue to a different repository + """ + transferIssue( + """ + Parameters for TransferIssue + """ + input: TransferIssueInput! + ): TransferIssuePayload + + """ + Unarchives a repository. + """ + unarchiveRepository( + """ + Parameters for UnarchiveRepository + """ + input: UnarchiveRepositoryInput! + ): UnarchiveRepositoryPayload + + """ + Unfollow an organization. + """ + unfollowOrganization( + """ + Parameters for UnfollowOrganization + """ + input: UnfollowOrganizationInput! + ): UnfollowOrganizationPayload + + """ + Unfollow a user. + """ + unfollowUser( + """ + Parameters for UnfollowUser + """ + input: UnfollowUserInput! + ): UnfollowUserPayload + + """ + Deletes a repository link from a project. + """ + unlinkRepositoryFromProject( + """ + Parameters for UnlinkRepositoryFromProject + """ + input: UnlinkRepositoryFromProjectInput! + ): UnlinkRepositoryFromProjectPayload + + """ + Unlock a lockable object + """ + unlockLockable( + """ + Parameters for UnlockLockable + """ + input: UnlockLockableInput! + ): UnlockLockablePayload + + """ + Unmark a discussion comment as the chosen answer for discussions in an answerable category. + """ + unmarkDiscussionCommentAsAnswer( + """ + Parameters for UnmarkDiscussionCommentAsAnswer + """ + input: UnmarkDiscussionCommentAsAnswerInput! + ): UnmarkDiscussionCommentAsAnswerPayload + + """ + Unmark a pull request file as viewed + """ + unmarkFileAsViewed( + """ + Parameters for UnmarkFileAsViewed + """ + input: UnmarkFileAsViewedInput! + ): UnmarkFileAsViewedPayload + + """ + Unmark an issue as a duplicate of another issue. + """ + unmarkIssueAsDuplicate( + """ + Parameters for UnmarkIssueAsDuplicate + """ + input: UnmarkIssueAsDuplicateInput! + ): UnmarkIssueAsDuplicatePayload + + """ + Unminimizes a comment on an Issue, Commit, Pull Request, or Gist + """ + unminimizeComment( + """ + Parameters for UnminimizeComment + """ + input: UnminimizeCommentInput! + ): UnminimizeCommentPayload + + """ + Unpin a pinned issue from a repository + """ + unpinIssue( + """ + Parameters for UnpinIssue + """ + input: UnpinIssueInput! + ): UnpinIssuePayload + + """ + Marks a review thread as unresolved. + """ + unresolveReviewThread( + """ + Parameters for UnresolveReviewThread + """ + input: UnresolveReviewThreadInput! + ): UnresolveReviewThreadPayload + + """ + Create a new branch protection rule + """ + updateBranchProtectionRule( + """ + Parameters for UpdateBranchProtectionRule + """ + input: UpdateBranchProtectionRuleInput! + ): UpdateBranchProtectionRulePayload + + """ + Update a check run + """ + updateCheckRun( + """ + Parameters for UpdateCheckRun + """ + input: UpdateCheckRunInput! + ): UpdateCheckRunPayload + + """ + Modifies the settings of an existing check suite + """ + updateCheckSuitePreferences( + """ + Parameters for UpdateCheckSuitePreferences + """ + input: UpdateCheckSuitePreferencesInput! + ): UpdateCheckSuitePreferencesPayload + + """ + Update a discussion + """ + updateDiscussion( + """ + Parameters for UpdateDiscussion + """ + input: UpdateDiscussionInput! + ): UpdateDiscussionPayload + + """ + Update the contents of a comment on a Discussion + """ + updateDiscussionComment( + """ + Parameters for UpdateDiscussionComment + """ + input: UpdateDiscussionCommentInput! + ): UpdateDiscussionCommentPayload + + """ + Updates the role of an enterprise administrator. + """ + updateEnterpriseAdministratorRole( + """ + Parameters for UpdateEnterpriseAdministratorRole + """ + input: UpdateEnterpriseAdministratorRoleInput! + ): UpdateEnterpriseAdministratorRolePayload + + """ + Sets whether private repository forks are enabled for an enterprise. + """ + updateEnterpriseAllowPrivateRepositoryForkingSetting( + """ + Parameters for UpdateEnterpriseAllowPrivateRepositoryForkingSetting + """ + input: UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput! + ): UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload + + """ + Sets the base repository permission for organizations in an enterprise. + """ + updateEnterpriseDefaultRepositoryPermissionSetting( + """ + Parameters for UpdateEnterpriseDefaultRepositoryPermissionSetting + """ + input: UpdateEnterpriseDefaultRepositoryPermissionSettingInput! + ): UpdateEnterpriseDefaultRepositoryPermissionSettingPayload + + """ + Sets whether organization members with admin permissions on a repository can change repository visibility. + """ + updateEnterpriseMembersCanChangeRepositoryVisibilitySetting( + """ + Parameters for UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting + """ + input: UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput! + ): UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload + + """ + Sets the members can create repositories setting for an enterprise. + """ + updateEnterpriseMembersCanCreateRepositoriesSetting( + """ + Parameters for UpdateEnterpriseMembersCanCreateRepositoriesSetting + """ + input: UpdateEnterpriseMembersCanCreateRepositoriesSettingInput! + ): UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload + + """ + Sets the members can delete issues setting for an enterprise. + """ + updateEnterpriseMembersCanDeleteIssuesSetting( + """ + Parameters for UpdateEnterpriseMembersCanDeleteIssuesSetting + """ + input: UpdateEnterpriseMembersCanDeleteIssuesSettingInput! + ): UpdateEnterpriseMembersCanDeleteIssuesSettingPayload + + """ + Sets the members can delete repositories setting for an enterprise. + """ + updateEnterpriseMembersCanDeleteRepositoriesSetting( + """ + Parameters for UpdateEnterpriseMembersCanDeleteRepositoriesSetting + """ + input: UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput! + ): UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload + + """ + Sets whether members can invite collaborators are enabled for an enterprise. + """ + updateEnterpriseMembersCanInviteCollaboratorsSetting( + """ + Parameters for UpdateEnterpriseMembersCanInviteCollaboratorsSetting + """ + input: UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput! + ): UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload + + """ + Sets whether or not an organization admin can make purchases. + """ + updateEnterpriseMembersCanMakePurchasesSetting( + """ + Parameters for UpdateEnterpriseMembersCanMakePurchasesSetting + """ + input: UpdateEnterpriseMembersCanMakePurchasesSettingInput! + ): UpdateEnterpriseMembersCanMakePurchasesSettingPayload + + """ + Sets the members can update protected branches setting for an enterprise. + """ + updateEnterpriseMembersCanUpdateProtectedBranchesSetting( + """ + Parameters for UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting + """ + input: UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput! + ): UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload + + """ + Sets the members can view dependency insights for an enterprise. + """ + updateEnterpriseMembersCanViewDependencyInsightsSetting( + """ + Parameters for UpdateEnterpriseMembersCanViewDependencyInsightsSetting + """ + input: UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput! + ): UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload + + """ + Sets whether organization projects are enabled for an enterprise. + """ + updateEnterpriseOrganizationProjectsSetting( + """ + Parameters for UpdateEnterpriseOrganizationProjectsSetting + """ + input: UpdateEnterpriseOrganizationProjectsSettingInput! + ): UpdateEnterpriseOrganizationProjectsSettingPayload + + """ + Updates the role of an enterprise owner with an organization. + """ + updateEnterpriseOwnerOrganizationRole( + """ + Parameters for UpdateEnterpriseOwnerOrganizationRole + """ + input: UpdateEnterpriseOwnerOrganizationRoleInput! + ): UpdateEnterpriseOwnerOrganizationRolePayload + + """ + Updates an enterprise's profile. + """ + updateEnterpriseProfile( + """ + Parameters for UpdateEnterpriseProfile + """ + input: UpdateEnterpriseProfileInput! + ): UpdateEnterpriseProfilePayload + + """ + Sets whether repository projects are enabled for a enterprise. + """ + updateEnterpriseRepositoryProjectsSetting( + """ + Parameters for UpdateEnterpriseRepositoryProjectsSetting + """ + input: UpdateEnterpriseRepositoryProjectsSettingInput! + ): UpdateEnterpriseRepositoryProjectsSettingPayload + + """ + Sets whether team discussions are enabled for an enterprise. + """ + updateEnterpriseTeamDiscussionsSetting( + """ + Parameters for UpdateEnterpriseTeamDiscussionsSetting + """ + input: UpdateEnterpriseTeamDiscussionsSettingInput! + ): UpdateEnterpriseTeamDiscussionsSettingPayload + + """ + Sets whether two factor authentication is required for all users in an enterprise. + """ + updateEnterpriseTwoFactorAuthenticationRequiredSetting( + """ + Parameters for UpdateEnterpriseTwoFactorAuthenticationRequiredSetting + """ + input: UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput! + ): UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload + + """ + Updates an environment. + """ + updateEnvironment( + """ + Parameters for UpdateEnvironment + """ + input: UpdateEnvironmentInput! + ): UpdateEnvironmentPayload + + """ + Sets whether an IP allow list is enabled on an owner. + """ + updateIpAllowListEnabledSetting( + """ + Parameters for UpdateIpAllowListEnabledSetting + """ + input: UpdateIpAllowListEnabledSettingInput! + ): UpdateIpAllowListEnabledSettingPayload + + """ + Updates an IP allow list entry. + """ + updateIpAllowListEntry( + """ + Parameters for UpdateIpAllowListEntry + """ + input: UpdateIpAllowListEntryInput! + ): UpdateIpAllowListEntryPayload + + """ + Sets whether IP allow list configuration for installed GitHub Apps is enabled on an owner. + """ + updateIpAllowListForInstalledAppsEnabledSetting( + """ + Parameters for UpdateIpAllowListForInstalledAppsEnabledSetting + """ + input: UpdateIpAllowListForInstalledAppsEnabledSettingInput! + ): UpdateIpAllowListForInstalledAppsEnabledSettingPayload + + """ + Updates an Issue. + """ + updateIssue( + """ + Parameters for UpdateIssue + """ + input: UpdateIssueInput! + ): UpdateIssuePayload + + """ + Updates an IssueComment object. + """ + updateIssueComment( + """ + Parameters for UpdateIssueComment + """ + input: UpdateIssueCommentInput! + ): UpdateIssueCommentPayload + + """ + Update the setting to restrict notifications to only verified or approved domains available to an owner. + """ + updateNotificationRestrictionSetting( + """ + Parameters for UpdateNotificationRestrictionSetting + """ + input: UpdateNotificationRestrictionSettingInput! + ): UpdateNotificationRestrictionSettingPayload + + """ + Sets whether private repository forks are enabled for an organization. + """ + updateOrganizationAllowPrivateRepositoryForkingSetting( + """ + Parameters for UpdateOrganizationAllowPrivateRepositoryForkingSetting + """ + input: UpdateOrganizationAllowPrivateRepositoryForkingSettingInput! + ): UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload + + """ + Updates an existing project. + """ + updateProject( + """ + Parameters for UpdateProject + """ + input: UpdateProjectInput! + ): UpdateProjectPayload + + """ + Updates an existing project card. + """ + updateProjectCard( + """ + Parameters for UpdateProjectCard + """ + input: UpdateProjectCardInput! + ): UpdateProjectCardPayload + + """ + Updates an existing project column. + """ + updateProjectColumn( + """ + Parameters for UpdateProjectColumn + """ + input: UpdateProjectColumnInput! + ): UpdateProjectColumnPayload + + """ + Updates a draft issue within a Project. + """ + updateProjectDraftIssue( + """ + Parameters for UpdateProjectDraftIssue + """ + input: UpdateProjectDraftIssueInput! + ): UpdateProjectDraftIssuePayload @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Updates an existing project (beta). + """ + updateProjectNext( + """ + Parameters for UpdateProjectNext + """ + input: UpdateProjectNextInput! + ): UpdateProjectNextPayload @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Updates a field of an item from a Project. + """ + updateProjectNextItemField( + """ + Parameters for UpdateProjectNextItemField + """ + input: UpdateProjectNextItemFieldInput! + ): UpdateProjectNextItemFieldPayload @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Updates an existing project (beta). + """ + updateProjectV2( + """ + Parameters for UpdateProjectV2 + """ + input: UpdateProjectV2Input! + ): UpdateProjectV2Payload + + """ + Updates a draft issue within a Project. + """ + updateProjectV2DraftIssue( + """ + Parameters for UpdateProjectV2DraftIssue + """ + input: UpdateProjectV2DraftIssueInput! + ): UpdateProjectV2DraftIssuePayload + + """ + This mutation updates the value of a field for an item in a Project. Currently + only single-select, text, number, date, and iteration fields are supported. + """ + updateProjectV2ItemFieldValue( + """ + Parameters for UpdateProjectV2ItemFieldValue + """ + input: UpdateProjectV2ItemFieldValueInput! + ): UpdateProjectV2ItemFieldValuePayload + + """ + This mutation updates the position of the item in the project, where the position represents the priority of an item. + """ + updateProjectV2ItemPosition( + """ + Parameters for UpdateProjectV2ItemPosition + """ + input: UpdateProjectV2ItemPositionInput! + ): UpdateProjectV2ItemPositionPayload + + """ + Update a pull request + """ + updatePullRequest( + """ + Parameters for UpdatePullRequest + """ + input: UpdatePullRequestInput! + ): UpdatePullRequestPayload + + """ + Merge or Rebase HEAD from upstream branch into pull request branch + """ + updatePullRequestBranch( + """ + Parameters for UpdatePullRequestBranch + """ + input: UpdatePullRequestBranchInput! + ): UpdatePullRequestBranchPayload + + """ + Updates the body of a pull request review. + """ + updatePullRequestReview( + """ + Parameters for UpdatePullRequestReview + """ + input: UpdatePullRequestReviewInput! + ): UpdatePullRequestReviewPayload + + """ + Updates a pull request review comment. + """ + updatePullRequestReviewComment( + """ + Parameters for UpdatePullRequestReviewComment + """ + input: UpdatePullRequestReviewCommentInput! + ): UpdatePullRequestReviewCommentPayload + + """ + Update a Git Ref. + """ + updateRef( + """ + Parameters for UpdateRef + """ + input: UpdateRefInput! + ): UpdateRefPayload + + """ + Update information about a repository. + """ + updateRepository( + """ + Parameters for UpdateRepository + """ + input: UpdateRepositoryInput! + ): UpdateRepositoryPayload + + """ + Change visibility of your sponsorship and opt in or out of email updates from the maintainer. + """ + updateSponsorshipPreferences( + """ + Parameters for UpdateSponsorshipPreferences + """ + input: UpdateSponsorshipPreferencesInput! + ): UpdateSponsorshipPreferencesPayload + + """ + Updates the state for subscribable subjects. + """ + updateSubscription( + """ + Parameters for UpdateSubscription + """ + input: UpdateSubscriptionInput! + ): UpdateSubscriptionPayload + + """ + Updates a team discussion. + """ + updateTeamDiscussion( + """ + Parameters for UpdateTeamDiscussion + """ + input: UpdateTeamDiscussionInput! + ): UpdateTeamDiscussionPayload + + """ + Updates a discussion comment. + """ + updateTeamDiscussionComment( + """ + Parameters for UpdateTeamDiscussionComment + """ + input: UpdateTeamDiscussionCommentInput! + ): UpdateTeamDiscussionCommentPayload + + """ + Update team repository. + """ + updateTeamsRepository( + """ + Parameters for UpdateTeamsRepository + """ + input: UpdateTeamsRepositoryInput! + ): UpdateTeamsRepositoryPayload + + """ + Replaces the repository's topics with the given topics. + """ + updateTopics( + """ + Parameters for UpdateTopics + """ + input: UpdateTopicsInput! + ): UpdateTopicsPayload + + """ + Verify that a verifiable domain has the expected DNS record. + """ + verifyVerifiableDomain( + """ + Parameters for VerifyVerifiableDomain + """ + input: VerifyVerifiableDomainInput! + ): VerifyVerifiableDomainPayload +} + +""" +An object with an ID. +""" +interface Node { + """ + ID of the object. + """ + id: ID! +} + +""" +The possible values for the notification restriction setting. +""" +enum NotificationRestrictionSettingValue { + """ + The setting is disabled for the owner. + """ + DISABLED + + """ + The setting is enabled for the owner. + """ + ENABLED +} + +""" +An OIDC identity provider configured to provision identities for an enterprise. +""" +type OIDCProvider implements Node { + """ + The enterprise this identity provider belongs to. + """ + enterprise: Enterprise + + """ + ExternalIdentities provisioned by this identity provider. + """ + externalIdentities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter to external identities with the users login + """ + login: String + + """ + Filter to external identities with valid org membership only + """ + membersOnly: Boolean + + """ + Filter to external identities with the users userName/NameID attribute + """ + userName: String + ): ExternalIdentityConnection! + id: ID! + + """ + The OIDC identity provider type + """ + providerType: OIDCProviderType! + + """ + The id of the tenant this provider is attached to + """ + tenantId: String! +} + +""" +The OIDC identity provider type +""" +enum OIDCProviderType { + """ + Azure Active Directory + """ + AAD +} + +""" +Metadata for an audit entry with action oauth_application.* +""" +interface OauthApplicationAuditEntryData { + """ + The name of the OAuth Application. + """ + oauthApplicationName: String + + """ + The HTTP path for the OAuth Application + """ + oauthApplicationResourcePath: URI + + """ + The HTTP URL for the OAuth Application + """ + oauthApplicationUrl: URI +} + +""" +Audit log entry for a oauth_application.create event. +""" +type OauthApplicationCreateAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The application URL of the OAuth Application. + """ + applicationUrl: URI + + """ + The callback URL of the OAuth Application. + """ + callbackUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The name of the OAuth Application. + """ + oauthApplicationName: String + + """ + The HTTP path for the OAuth Application + """ + oauthApplicationResourcePath: URI + + """ + The HTTP URL for the OAuth Application + """ + oauthApplicationUrl: URI + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The rate limit of the OAuth Application. + """ + rateLimit: Int + + """ + The state of the OAuth Application. + """ + state: OauthApplicationCreateAuditEntryState + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The state of an OAuth Application when it was created. +""" +enum OauthApplicationCreateAuditEntryState { + """ + The OAuth Application was active and allowed to have OAuth Accesses. + """ + ACTIVE + + """ + The OAuth Application was in the process of being deleted. + """ + PENDING_DELETION + + """ + The OAuth Application was suspended from generating OAuth Accesses due to abuse or security concerns. + """ + SUSPENDED +} + +""" +The corresponding operation type for the action +""" +enum OperationType { + """ + An existing resource was accessed + """ + ACCESS + + """ + A resource performed an authentication event + """ + AUTHENTICATION + + """ + A new resource was created + """ + CREATE + + """ + An existing resource was modified + """ + MODIFY + + """ + An existing resource was removed + """ + REMOVE + + """ + An existing resource was restored + """ + RESTORE + + """ + An existing resource was transferred between multiple resources + """ + TRANSFER +} + +""" +Possible directions in which to order a list of items when provided an `orderBy` argument. +""" +enum OrderDirection { + """ + Specifies an ascending order for a given `orderBy` argument. + """ + ASC + + """ + Specifies a descending order for a given `orderBy` argument. + """ + DESC +} + +""" +Audit log entry for a org.add_billing_manager +""" +type OrgAddBillingManagerAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The email address used to invite a billing manager for the organization. + """ + invitationEmail: String + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.add_member +""" +type OrgAddMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The permission level of the member added to the organization. + """ + permission: OrgAddMemberAuditEntryPermission + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The permissions available to members on an Organization. +""" +enum OrgAddMemberAuditEntryPermission { + """ + Can read, clone, push, and add collaborators to repositories. + """ + ADMIN + + """ + Can read and clone repositories. + """ + READ +} + +""" +Audit log entry for a org.block_user +""" +type OrgBlockUserAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The blocked user. + """ + blockedUser: User + + """ + The username of the blocked user. + """ + blockedUserName: String + + """ + The HTTP path for the blocked user. + """ + blockedUserResourcePath: URI + + """ + The HTTP URL for the blocked user. + """ + blockedUserUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.config.disable_collaborators_only event. +""" +type OrgConfigDisableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.config.enable_collaborators_only event. +""" +type OrgConfigEnableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.create event. +""" +type OrgCreateAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The billing plan for the Organization. + """ + billingPlan: OrgCreateAuditEntryBillingPlan + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The billing plans available for organizations. +""" +enum OrgCreateAuditEntryBillingPlan { + """ + Team Plan + """ + BUSINESS + + """ + Enterprise Cloud Plan + """ + BUSINESS_PLUS + + """ + Free Plan + """ + FREE + + """ + Tiered Per Seat Plan + """ + TIERED_PER_SEAT + + """ + Legacy Unlimited Plan + """ + UNLIMITED +} + +""" +Audit log entry for a org.disable_oauth_app_restrictions event. +""" +type OrgDisableOauthAppRestrictionsAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.disable_saml event. +""" +type OrgDisableSamlAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The SAML provider's digest algorithm URL. + """ + digestMethodUrl: URI + id: ID! + + """ + The SAML provider's issuer URL. + """ + issuerUrl: URI + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The SAML provider's signature algorithm URL. + """ + signatureMethodUrl: URI + + """ + The SAML provider's single sign-on URL. + """ + singleSignOnUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.disable_two_factor_requirement event. +""" +type OrgDisableTwoFactorRequirementAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.enable_oauth_app_restrictions event. +""" +type OrgEnableOauthAppRestrictionsAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.enable_saml event. +""" +type OrgEnableSamlAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The SAML provider's digest algorithm URL. + """ + digestMethodUrl: URI + id: ID! + + """ + The SAML provider's issuer URL. + """ + issuerUrl: URI + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The SAML provider's signature algorithm URL. + """ + signatureMethodUrl: URI + + """ + The SAML provider's single sign-on URL. + """ + singleSignOnUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.enable_two_factor_requirement event. +""" +type OrgEnableTwoFactorRequirementAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Ordering options for an organization's enterprise owner connections. +""" +input OrgEnterpriseOwnerOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order enterprise owners by. + """ + field: OrgEnterpriseOwnerOrderField! +} + +""" +Properties by which enterprise owners can be ordered. +""" +enum OrgEnterpriseOwnerOrderField { + """ + Order enterprise owners by login. + """ + LOGIN +} + +""" +Audit log entry for a org.invite_member event. +""" +type OrgInviteMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The email address of the organization invitation. + """ + email: String + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The organization invitation. + """ + organizationInvitation: OrganizationInvitation + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.invite_to_business event. +""" +type OrgInviteToBusinessAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.oauth_app_access_approved event. +""" +type OrgOauthAppAccessApprovedAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The name of the OAuth Application. + """ + oauthApplicationName: String + + """ + The HTTP path for the OAuth Application + """ + oauthApplicationResourcePath: URI + + """ + The HTTP URL for the OAuth Application + """ + oauthApplicationUrl: URI + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.oauth_app_access_denied event. +""" +type OrgOauthAppAccessDeniedAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The name of the OAuth Application. + """ + oauthApplicationName: String + + """ + The HTTP path for the OAuth Application + """ + oauthApplicationResourcePath: URI + + """ + The HTTP URL for the OAuth Application + """ + oauthApplicationUrl: URI + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.oauth_app_access_requested event. +""" +type OrgOauthAppAccessRequestedAuditEntry implements AuditEntry & Node & OauthApplicationAuditEntryData & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The name of the OAuth Application. + """ + oauthApplicationName: String + + """ + The HTTP path for the OAuth Application + """ + oauthApplicationResourcePath: URI + + """ + The HTTP URL for the OAuth Application + """ + oauthApplicationUrl: URI + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.remove_billing_manager event. +""" +type OrgRemoveBillingManagerAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The reason for the billing manager being removed. + """ + reason: OrgRemoveBillingManagerAuditEntryReason + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The reason a billing manager was removed from an Organization. +""" +enum OrgRemoveBillingManagerAuditEntryReason { + """ + SAML external identity missing + """ + SAML_EXTERNAL_IDENTITY_MISSING + + """ + SAML SSO enforcement requires an external identity + """ + SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY + + """ + The organization required 2FA of its billing managers and this user did not have 2FA enabled. + """ + TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE +} + +""" +Audit log entry for a org.remove_member event. +""" +type OrgRemoveMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The types of membership the member has with the organization. + """ + membershipTypes: [OrgRemoveMemberAuditEntryMembershipType!] + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The reason for the member being removed. + """ + reason: OrgRemoveMemberAuditEntryReason + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The type of membership a user has with an Organization. +""" +enum OrgRemoveMemberAuditEntryMembershipType { + """ + Organization administrators have full access and can change several settings, + including the names of repositories that belong to the Organization and Owners + team membership. In addition, organization admins can delete the organization + and all of its repositories. + """ + ADMIN + + """ + A billing manager is a user who manages the billing settings for the Organization, such as updating payment information. + """ + BILLING_MANAGER + + """ + A direct member is a user that is a member of the Organization. + """ + DIRECT_MEMBER + + """ + An outside collaborator is a person who isn't explicitly a member of the + Organization, but who has Read, Write, or Admin permissions to one or more + repositories in the organization. + """ + OUTSIDE_COLLABORATOR + + """ + A suspended member. + """ + SUSPENDED + + """ + An unaffiliated collaborator is a person who is not a member of the + Organization and does not have access to any repositories in the Organization. + """ + UNAFFILIATED +} + +""" +The reason a member was removed from an Organization. +""" +enum OrgRemoveMemberAuditEntryReason { + """ + SAML external identity missing + """ + SAML_EXTERNAL_IDENTITY_MISSING + + """ + SAML SSO enforcement requires an external identity + """ + SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY + + """ + User was removed from organization during account recovery + """ + TWO_FACTOR_ACCOUNT_RECOVERY + + """ + The organization required 2FA of its billing managers and this user did not have 2FA enabled. + """ + TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE + + """ + User account has been deleted + """ + USER_ACCOUNT_DELETED +} + +""" +Audit log entry for a org.remove_outside_collaborator event. +""" +type OrgRemoveOutsideCollaboratorAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The types of membership the outside collaborator has with the organization. + """ + membershipTypes: [OrgRemoveOutsideCollaboratorAuditEntryMembershipType!] + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The reason for the outside collaborator being removed from the Organization. + """ + reason: OrgRemoveOutsideCollaboratorAuditEntryReason + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The type of membership a user has with an Organization. +""" +enum OrgRemoveOutsideCollaboratorAuditEntryMembershipType { + """ + A billing manager is a user who manages the billing settings for the Organization, such as updating payment information. + """ + BILLING_MANAGER + + """ + An outside collaborator is a person who isn't explicitly a member of the + Organization, but who has Read, Write, or Admin permissions to one or more + repositories in the organization. + """ + OUTSIDE_COLLABORATOR + + """ + An unaffiliated collaborator is a person who is not a member of the + Organization and does not have access to any repositories in the organization. + """ + UNAFFILIATED +} + +""" +The reason an outside collaborator was removed from an Organization. +""" +enum OrgRemoveOutsideCollaboratorAuditEntryReason { + """ + SAML external identity missing + """ + SAML_EXTERNAL_IDENTITY_MISSING + + """ + The organization required 2FA of its billing managers and this user did not have 2FA enabled. + """ + TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE +} + +""" +Audit log entry for a org.restore_member event. +""" +type OrgRestoreMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The number of custom email routings for the restored member. + """ + restoredCustomEmailRoutingsCount: Int + + """ + The number of issue assignments for the restored member. + """ + restoredIssueAssignmentsCount: Int + + """ + Restored organization membership objects. + """ + restoredMemberships: [OrgRestoreMemberAuditEntryMembership!] + + """ + The number of restored memberships. + """ + restoredMembershipsCount: Int + + """ + The number of repositories of the restored member. + """ + restoredRepositoriesCount: Int + + """ + The number of starred repositories for the restored member. + """ + restoredRepositoryStarsCount: Int + + """ + The number of watched repositories for the restored member. + """ + restoredRepositoryWatchesCount: Int + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Types of memberships that can be restored for an Organization member. +""" +union OrgRestoreMemberAuditEntryMembership = OrgRestoreMemberMembershipOrganizationAuditEntryData | OrgRestoreMemberMembershipRepositoryAuditEntryData | OrgRestoreMemberMembershipTeamAuditEntryData + +""" +Metadata for an organization membership for org.restore_member actions +""" +type OrgRestoreMemberMembershipOrganizationAuditEntryData implements OrganizationAuditEntryData { + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI +} + +""" +Metadata for a repository membership for org.restore_member actions +""" +type OrgRestoreMemberMembershipRepositoryAuditEntryData implements RepositoryAuditEntryData { + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI +} + +""" +Metadata for a team membership for org.restore_member actions +""" +type OrgRestoreMemberMembershipTeamAuditEntryData implements TeamAuditEntryData { + """ + The team associated with the action + """ + team: Team + + """ + The name of the team + """ + teamName: String + + """ + The HTTP path for this team + """ + teamResourcePath: URI + + """ + The HTTP URL for this team + """ + teamUrl: URI +} + +""" +Audit log entry for a org.unblock_user +""" +type OrgUnblockUserAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The user being unblocked by the organization. + """ + blockedUser: User + + """ + The username of the blocked user. + """ + blockedUserName: String + + """ + The HTTP path for the blocked user. + """ + blockedUserResourcePath: URI + + """ + The HTTP URL for the blocked user. + """ + blockedUserUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a org.update_default_repository_permission +""" +type OrgUpdateDefaultRepositoryPermissionAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The new base repository permission level for the organization. + """ + permission: OrgUpdateDefaultRepositoryPermissionAuditEntryPermission + + """ + The former base repository permission level for the organization. + """ + permissionWas: OrgUpdateDefaultRepositoryPermissionAuditEntryPermission + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The default permission a repository can have in an Organization. +""" +enum OrgUpdateDefaultRepositoryPermissionAuditEntryPermission { + """ + Can read, clone, push, and add collaborators to repositories. + """ + ADMIN + + """ + No default permission value. + """ + NONE + + """ + Can read and clone repositories. + """ + READ + + """ + Can read, clone and push to repositories. + """ + WRITE +} + +""" +Audit log entry for a org.update_member event. +""" +type OrgUpdateMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The new member permission level for the organization. + """ + permission: OrgUpdateMemberAuditEntryPermission + + """ + The former member permission level for the organization. + """ + permissionWas: OrgUpdateMemberAuditEntryPermission + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The permissions available to members on an Organization. +""" +enum OrgUpdateMemberAuditEntryPermission { + """ + Can read, clone, push, and add collaborators to repositories. + """ + ADMIN + + """ + Can read and clone repositories. + """ + READ +} + +""" +Audit log entry for a org.update_member_repository_creation_permission event. +""" +type OrgUpdateMemberRepositoryCreationPermissionAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + Can members create repositories in the organization. + """ + canCreateRepositories: Boolean + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI + + """ + The permission for visibility level of repositories for this organization. + """ + visibility: OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility +} + +""" +The permissions available for repository creation on an Organization. +""" +enum OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility { + """ + All organization members are restricted from creating any repositories. + """ + ALL + + """ + All organization members are restricted from creating internal repositories. + """ + INTERNAL + + """ + All organization members are allowed to create any repositories. + """ + NONE + + """ + All organization members are restricted from creating private repositories. + """ + PRIVATE + + """ + All organization members are restricted from creating private or internal repositories. + """ + PRIVATE_INTERNAL + + """ + All organization members are restricted from creating public repositories. + """ + PUBLIC + + """ + All organization members are restricted from creating public or internal repositories. + """ + PUBLIC_INTERNAL + + """ + All organization members are restricted from creating public or private repositories. + """ + PUBLIC_PRIVATE +} + +""" +Audit log entry for a org.update_member_repository_invitation_permission event. +""" +type OrgUpdateMemberRepositoryInvitationPermissionAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + Can outside collaborators be invited to repositories in the organization. + """ + canInviteOutsideCollaboratorsToRepositories: Boolean + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +An account on GitHub, with one or more owners, that has repositories, members and teams. +""" +type Organization implements Actor & MemberStatusable & Node & PackageOwner & ProfileOwner & ProjectNextOwner & ProjectOwner & ProjectV2Owner & ProjectV2Recent & RepositoryDiscussionAuthor & RepositoryDiscussionCommentAuthor & RepositoryOwner & Sponsorable & UniformResourceLocatable { + """ + Determine if this repository owner has any items that can be pinned to their profile. + """ + anyPinnableItems( + """ + Filter to only a particular kind of pinnable item. + """ + type: PinnableItemType + ): Boolean! + + """ + Audit log entries of the organization + """ + auditLog( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for the returned audit log entries. + """ + orderBy: AuditLogOrder = {field: CREATED_AT, direction: DESC} + + """ + The query string to filter audit entries + """ + query: String + ): OrganizationAuditEntryConnection! + + """ + A URL pointing to the organization's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The organization's public profile description. + """ + description: String + + """ + The organization's public profile description rendered to HTML. + """ + descriptionHTML: String + + """ + A list of domains owned by the organization. + """ + domains( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Filter by if the domain is approved. + """ + isApproved: Boolean = null + + """ + Filter by if the domain is verified. + """ + isVerified: Boolean = null + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for verifiable domains returned. + """ + orderBy: VerifiableDomainOrder = {field: DOMAIN, direction: ASC} + ): VerifiableDomainConnection + + """ + The organization's public email. + """ + email: String + + """ + A list of owners of the organization's enterprise account. + """ + enterpriseOwners( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for enterprise owners returned from the connection. + """ + orderBy: OrgEnterpriseOwnerOrder = {field: LOGIN, direction: ASC} + + """ + The organization role to filter by. + """ + organizationRole: RoleInOrganization + + """ + The search string to look for. + """ + query: String + ): OrganizationEnterpriseOwnerConnection! + + """ + The estimated next GitHub Sponsors payout for this user/organization in cents (USD). + """ + estimatedNextSponsorsPayoutInCents: Int! + + """ + True if this user/organization has a GitHub Sponsors listing. + """ + hasSponsorsListing: Boolean! + id: ID! + + """ + The interaction ability settings for this organization. + """ + interactionAbility: RepositoryInteractionAbility + + """ + The setting value for whether the organization has an IP allow list enabled. + """ + ipAllowListEnabledSetting: IpAllowListEnabledSettingValue! + + """ + The IP addresses that are allowed to access resources owned by the organization. + """ + ipAllowListEntries( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for IP allow list entries returned. + """ + orderBy: IpAllowListEntryOrder = {field: ALLOW_LIST_VALUE, direction: ASC} + ): IpAllowListEntryConnection! + + """ + The setting value for whether the organization has IP allow list configuration for installed GitHub Apps enabled. + """ + ipAllowListForInstalledAppsEnabledSetting: IpAllowListForInstalledAppsEnabledSettingValue! + + """ + Check if the given account is sponsoring this user/organization. + """ + isSponsoredBy( + """ + The target account's login. + """ + accountLogin: String! + ): Boolean! + + """ + True if the viewer is sponsored by this user/organization. + """ + isSponsoringViewer: Boolean! + + """ + Whether the organization has verified its profile email and website. + """ + isVerified: Boolean! + + """ + Showcases a selection of repositories and gists that the profile owner has + either curated or that have been selected automatically based on popularity. + """ + itemShowcase: ProfileItemShowcase! + + """ + The organization's public profile location. + """ + location: String + + """ + The organization's login name. + """ + login: String! + + """ + Get the status messages members of this entity have set that are either public or visible only to the organization. + """ + memberStatuses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for user statuses returned from the connection. + """ + orderBy: UserStatusOrder = {field: UPDATED_AT, direction: DESC} + ): UserStatusConnection! + + """ + Members can fork private repositories in this organization + """ + membersCanForkPrivateRepositories: Boolean! + + """ + A list of users who are members of this organization. + """ + membersWithRole( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationMemberConnection! + + """ + The estimated monthly GitHub Sponsors income for this user/organization in cents (USD). + """ + monthlyEstimatedSponsorsIncomeInCents: Int! + + """ + The organization's public profile name. + """ + name: String + + """ + The HTTP path creating a new team + """ + newTeamResourcePath: URI! + + """ + The HTTP URL creating a new team + """ + newTeamUrl: URI! + + """ + Indicates if email notification delivery for this organization is restricted to verified or approved domains. + """ + notificationDeliveryRestrictionEnabledSetting: NotificationRestrictionSettingValue! + + """ + The billing email for the organization. + """ + organizationBillingEmail: String + + """ + A list of packages under the owner. + """ + packages( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Find packages by their names. + """ + names: [String] + + """ + Ordering of the returned packages. + """ + orderBy: PackageOrder = {field: CREATED_AT, direction: DESC} + + """ + Filter registry package by type. + """ + packageType: PackageType + + """ + Find packages in a repository by ID. + """ + repositoryId: ID + ): PackageConnection! + + """ + A list of users who have been invited to join this organization. + """ + pendingMembers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! + + """ + A list of repositories and gists this profile owner can pin to their profile. + """ + pinnableItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter the types of pinnable items that are returned. + """ + types: [PinnableItemType!] + ): PinnableItemConnection! + + """ + A list of repositories and gists this profile owner has pinned to their profile + """ + pinnedItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter the types of pinned items that are returned. + """ + types: [PinnableItemType!] + ): PinnableItemConnection! + + """ + Returns how many more items this profile owner can pin to their profile. + """ + pinnedItemsRemaining: Int! + + """ + Find project by number. + """ + project( + """ + The project number to find. + """ + number: Int! + ): Project + + """ + Find a project by project (beta) number. + """ + projectNext( + """ + The project (beta) number. + """ + number: Int! + ): ProjectNext @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Find a project by number. + """ + projectV2( + """ + The project number. + """ + number: Int! + ): ProjectV2 + + """ + A list of projects under the owner. + """ + projects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for projects returned from the connection + """ + orderBy: ProjectOrder + + """ + Query to search projects by, currently only searching by name. + """ + search: String + + """ + A list of states to filter the projects by. + """ + states: [ProjectState!] + ): ProjectConnection! + + """ + A list of projects (beta) under the owner. + """ + projectsNext( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A project (beta) to search for under the the owner. + """ + query: String + + """ + How to order the returned projects (beta). + """ + sortBy: ProjectNextOrderField = TITLE + ): ProjectNextConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The HTTP path listing organization's projects + """ + projectsResourcePath: URI! + + """ + The HTTP URL listing organization's projects + """ + projectsUrl: URI! + + """ + A list of projects under the owner. + """ + projectsV2( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + How to order the returned projects. + """ + orderBy: ProjectV2Order = {field: NUMBER, direction: DESC} + + """ + A project to search for under the the owner. + """ + query: String + ): ProjectV2Connection! + + """ + Recent projects that this user has modified in the context of the owner. + """ + recentProjects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2Connection! + + """ + A list of repositories that the user owns. + """ + repositories( + """ + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. + """ + affiliations: [RepositoryAffiliation] + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If non-null, filters repositories according to whether they are forks of another repository + """ + isFork: Boolean + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder + + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR] + + """ + If non-null, filters repositories according to privacy + """ + privacy: RepositoryPrivacy + ): RepositoryConnection! + + """ + Find Repository. + """ + repository( + """ + Follow repository renames. If disabled, a repository referenced by its old name will return an error. + """ + followRenames: Boolean = true + + """ + Name of Repository to find. + """ + name: String! + ): Repository + + """ + Discussion comments this user has authored. + """ + repositoryDiscussionComments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter discussion comments to only those that were marked as the answer + """ + onlyAnswers: Boolean = false + + """ + Filter discussion comments to only those in a specific repository. + """ + repositoryId: ID + ): DiscussionCommentConnection! + + """ + Discussions this user has started. + """ + repositoryDiscussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter discussions to only those that have been answered or not. Defaults to + including both answered and unanswered discussions. + """ + answered: Boolean = null + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for discussions returned from the connection. + """ + orderBy: DiscussionOrder = {field: CREATED_AT, direction: DESC} + + """ + Filter discussions to only those in a specific repository. + """ + repositoryId: ID + ): DiscussionConnection! + + """ + A list of all repository migrations for this organization. + """ + repositoryMigrations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repository migrations returned. + """ + orderBy: RepositoryMigrationOrder = {field: CREATED_AT, direction: ASC} + + """ + Filter repository migrations by repository name. + """ + repositoryName: String + + """ + Filter repository migrations by state. + """ + state: MigrationState + ): RepositoryMigrationConnection! + + """ + When true the organization requires all members, billing managers, and outside + collaborators to enable two-factor authentication. + """ + requiresTwoFactorAuthentication: Boolean + + """ + The HTTP path for this organization. + """ + resourcePath: URI! + + """ + The Organization's SAML identity providers + """ + samlIdentityProvider: OrganizationIdentityProvider + + """ + List of users and organizations this entity is sponsoring. + """ + sponsoring( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for the users and organizations returned from the connection. + """ + orderBy: SponsorOrder = {field: RELEVANCE, direction: DESC} + ): SponsorConnection! + + """ + List of sponsors for this user or organization. + """ + sponsors( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsors returned from the connection. + """ + orderBy: SponsorOrder = {field: RELEVANCE, direction: DESC} + + """ + If given, will filter for sponsors at the given tier. Will only return + sponsors whose tier the viewer is permitted to see. + """ + tierId: ID + ): SponsorConnection! + + """ + Events involving this sponsorable, such as new sponsorships. + """ + sponsorsActivities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for activity returned from the connection. + """ + orderBy: SponsorsActivityOrder = {field: TIMESTAMP, direction: DESC} + + """ + Filter activities returned to only those that occurred in a given time range. + """ + period: SponsorsActivityPeriod = MONTH + ): SponsorsActivityConnection! + + """ + The GitHub Sponsors listing for this user or organization. + """ + sponsorsListing: SponsorsListing + + """ + The sponsorship from the viewer to this user/organization; that is, the + sponsorship where you're the sponsor. Only returns a sponsorship if it is active. + """ + sponsorshipForViewerAsSponsor: Sponsorship + + """ + The sponsorship from this user/organization to the viewer; that is, the + sponsorship you're receiving. Only returns a sponsorship if it is active. + """ + sponsorshipForViewerAsSponsorable: Sponsorship + + """ + List of sponsorship updates sent from this sponsorable to sponsors. + """ + sponsorshipNewsletters( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorship updates returned from the connection. + """ + orderBy: SponsorshipNewsletterOrder = {field: CREATED_AT, direction: DESC} + ): SponsorshipNewsletterConnection! + + """ + This object's sponsorships as the maintainer. + """ + sponsorshipsAsMaintainer( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Whether or not to include private sponsorships in the result set + """ + includePrivate: Boolean = false + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorships returned from this connection. If left + blank, the sponsorships will be ordered based on relevancy to the viewer. + """ + orderBy: SponsorshipOrder + ): SponsorshipConnection! + + """ + This object's sponsorships as the sponsor. + """ + sponsorshipsAsSponsor( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorships returned from this connection. If left + blank, the sponsorships will be ordered based on relevancy to the viewer. + """ + orderBy: SponsorshipOrder + ): SponsorshipConnection! + + """ + Find an organization's team by its slug. + """ + team( + """ + The name or slug of the team to find. + """ + slug: String! + ): Team + + """ + A list of teams in this organization. + """ + teams( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + If true, filters teams that are mapped to an LDAP Group (Enterprise only) + """ + ldapMapped: Boolean + + """ + Ordering options for teams returned from the connection + """ + orderBy: TeamOrder + + """ + If non-null, filters teams according to privacy + """ + privacy: TeamPrivacy + + """ + If non-null, filters teams with query on team name and team slug + """ + query: String + + """ + If non-null, filters teams according to whether the viewer is an admin or member on team + """ + role: TeamRole + + """ + If true, restrict to only root teams + """ + rootTeamsOnly: Boolean = false + + """ + User logins to filter by + """ + userLogins: [String!] + ): TeamConnection! + + """ + The HTTP path listing organization's teams + """ + teamsResourcePath: URI! + + """ + The HTTP URL listing organization's teams + """ + teamsUrl: URI! + + """ + The organization's Twitter username. + """ + twitterUsername: String + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this organization. + """ + url: URI! + + """ + Organization is adminable by the viewer. + """ + viewerCanAdminister: Boolean! + + """ + Can the viewer pin repositories and gists to the profile? + """ + viewerCanChangePinnedItems: Boolean! + + """ + Can the current viewer create new projects on this owner. + """ + viewerCanCreateProjects: Boolean! + + """ + Viewer can create repositories on this organization + """ + viewerCanCreateRepositories: Boolean! + + """ + Viewer can create teams on this organization. + """ + viewerCanCreateTeams: Boolean! + + """ + Whether or not the viewer is able to sponsor this user/organization. + """ + viewerCanSponsor: Boolean! + + """ + Viewer is an active member of this organization. + """ + viewerIsAMember: Boolean! + + """ + Whether or not this Organization is followed by the viewer. + """ + viewerIsFollowing: Boolean! + + """ + True if the viewer is sponsoring this user/organization. + """ + viewerIsSponsoring: Boolean! + + """ + The organization's public profile URL. + """ + websiteUrl: URI +} + +""" +An audit entry in an organization audit log. +""" +union OrganizationAuditEntry = MembersCanDeleteReposClearAuditEntry | MembersCanDeleteReposDisableAuditEntry | MembersCanDeleteReposEnableAuditEntry | OauthApplicationCreateAuditEntry | OrgAddBillingManagerAuditEntry | OrgAddMemberAuditEntry | OrgBlockUserAuditEntry | OrgConfigDisableCollaboratorsOnlyAuditEntry | OrgConfigEnableCollaboratorsOnlyAuditEntry | OrgCreateAuditEntry | OrgDisableOauthAppRestrictionsAuditEntry | OrgDisableSamlAuditEntry | OrgDisableTwoFactorRequirementAuditEntry | OrgEnableOauthAppRestrictionsAuditEntry | OrgEnableSamlAuditEntry | OrgEnableTwoFactorRequirementAuditEntry | OrgInviteMemberAuditEntry | OrgInviteToBusinessAuditEntry | OrgOauthAppAccessApprovedAuditEntry | OrgOauthAppAccessDeniedAuditEntry | OrgOauthAppAccessRequestedAuditEntry | OrgRemoveBillingManagerAuditEntry | OrgRemoveMemberAuditEntry | OrgRemoveOutsideCollaboratorAuditEntry | OrgRestoreMemberAuditEntry | OrgUnblockUserAuditEntry | OrgUpdateDefaultRepositoryPermissionAuditEntry | OrgUpdateMemberAuditEntry | OrgUpdateMemberRepositoryCreationPermissionAuditEntry | OrgUpdateMemberRepositoryInvitationPermissionAuditEntry | PrivateRepositoryForkingDisableAuditEntry | PrivateRepositoryForkingEnableAuditEntry | RepoAccessAuditEntry | RepoAddMemberAuditEntry | RepoAddTopicAuditEntry | RepoArchivedAuditEntry | RepoChangeMergeSettingAuditEntry | RepoConfigDisableAnonymousGitAccessAuditEntry | RepoConfigDisableCollaboratorsOnlyAuditEntry | RepoConfigDisableContributorsOnlyAuditEntry | RepoConfigDisableSockpuppetDisallowedAuditEntry | RepoConfigEnableAnonymousGitAccessAuditEntry | RepoConfigEnableCollaboratorsOnlyAuditEntry | RepoConfigEnableContributorsOnlyAuditEntry | RepoConfigEnableSockpuppetDisallowedAuditEntry | RepoConfigLockAnonymousGitAccessAuditEntry | RepoConfigUnlockAnonymousGitAccessAuditEntry | RepoCreateAuditEntry | RepoDestroyAuditEntry | RepoRemoveMemberAuditEntry | RepoRemoveTopicAuditEntry | RepositoryVisibilityChangeDisableAuditEntry | RepositoryVisibilityChangeEnableAuditEntry | TeamAddMemberAuditEntry | TeamAddRepositoryAuditEntry | TeamChangeParentTeamAuditEntry | TeamRemoveMemberAuditEntry | TeamRemoveRepositoryAuditEntry + +""" +The connection type for OrganizationAuditEntry. +""" +type OrganizationAuditEntryConnection { + """ + A list of edges. + """ + edges: [OrganizationAuditEntryEdge] + + """ + A list of nodes. + """ + nodes: [OrganizationAuditEntry] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Metadata for an audit entry with action org.* +""" +interface OrganizationAuditEntryData { + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI +} + +""" +An edge in a connection. +""" +type OrganizationAuditEntryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationAuditEntry +} + +""" +A list of organizations managed by an enterprise. +""" +type OrganizationConnection { + """ + A list of edges. + """ + edges: [OrganizationEdge] + + """ + A list of nodes. + """ + nodes: [Organization] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type OrganizationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Organization +} + +""" +The connection type for User. +""" +type OrganizationEnterpriseOwnerConnection { + """ + A list of edges. + """ + edges: [OrganizationEnterpriseOwnerEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An enterprise owner in the context of an organization that is part of the enterprise. +""" +type OrganizationEnterpriseOwnerEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: User + + """ + The role of the owner with respect to the organization. + """ + organizationRole: RoleInOrganization! +} + +""" +An Identity Provider configured to provision SAML and SCIM identities for Organizations +""" +type OrganizationIdentityProvider implements Node { + """ + The digest algorithm used to sign SAML requests for the Identity Provider. + """ + digestMethod: URI + + """ + External Identities provisioned by this Identity Provider + """ + externalIdentities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter to external identities with the users login + """ + login: String + + """ + Filter to external identities with valid org membership only + """ + membersOnly: Boolean + + """ + Filter to external identities with the users userName/NameID attribute + """ + userName: String + ): ExternalIdentityConnection! + id: ID! + + """ + The x509 certificate used by the Identity Provider to sign assertions and responses. + """ + idpCertificate: X509Certificate + + """ + The Issuer Entity ID for the SAML Identity Provider + """ + issuer: String + + """ + Organization this Identity Provider belongs to + """ + organization: Organization + + """ + The signature algorithm used to sign SAML requests for the Identity Provider. + """ + signatureMethod: URI + + """ + The URL endpoint for the Identity Provider's SAML SSO. + """ + ssoUrl: URI +} + +""" +An Invitation for a user to an organization. +""" +type OrganizationInvitation implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The email address of the user invited to the organization. + """ + email: String + id: ID! + + """ + The type of invitation that was sent (e.g. email, user). + """ + invitationType: OrganizationInvitationType! + + """ + The user who was invited to the organization. + """ + invitee: User + + """ + The user who created the invitation. + """ + inviter: User! + + """ + The organization the invite is for + """ + organization: Organization! + + """ + The user's pending role in the organization (e.g. member, owner). + """ + role: OrganizationInvitationRole! +} + +""" +The connection type for OrganizationInvitation. +""" +type OrganizationInvitationConnection { + """ + A list of edges. + """ + edges: [OrganizationInvitationEdge] + + """ + A list of nodes. + """ + nodes: [OrganizationInvitation] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type OrganizationInvitationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationInvitation +} + +""" +The possible organization invitation roles. +""" +enum OrganizationInvitationRole { + """ + The user is invited to be an admin of the organization. + """ + ADMIN + + """ + The user is invited to be a billing manager of the organization. + """ + BILLING_MANAGER + + """ + The user is invited to be a direct member of the organization. + """ + DIRECT_MEMBER + + """ + The user's previous role will be reinstated. + """ + REINSTATE +} + +""" +The possible organization invitation types. +""" +enum OrganizationInvitationType { + """ + The invitation was to an email address. + """ + EMAIL + + """ + The invitation was to an existing user. + """ + USER +} + +""" +The connection type for User. +""" +type OrganizationMemberConnection { + """ + A list of edges. + """ + edges: [OrganizationMemberEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a user within an organization. +""" +type OrganizationMemberEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + Whether the organization member has two factor enabled or not. Returns null if information is not available to viewer. + """ + hasTwoFactorEnabled: Boolean + + """ + The item at the end of the edge. + """ + node: User + + """ + The role this user has in the organization. + """ + role: OrganizationMemberRole +} + +""" +The possible roles within an organization for its members. +""" +enum OrganizationMemberRole { + """ + The user is an administrator of the organization. + """ + ADMIN + + """ + The user is a member of the organization. + """ + MEMBER +} + +""" +The possible values for the members can create repositories setting on an organization. +""" +enum OrganizationMembersCanCreateRepositoriesSettingValue { + """ + Members will be able to create public and private repositories. + """ + ALL + + """ + Members will not be able to create public or private repositories. + """ + DISABLED + + """ + Members will be able to create only internal repositories. + """ + INTERNAL + + """ + Members will be able to create only private repositories. + """ + PRIVATE +} + +""" +Used for argument of CreateProjectV2 mutation. +""" +union OrganizationOrUser = Organization | User + +""" +Ordering options for organization connections. +""" +input OrganizationOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order organizations by. + """ + field: OrganizationOrderField! +} + +""" +Properties by which organization connections can be ordered. +""" +enum OrganizationOrderField { + """ + Order organizations by creation time + """ + CREATED_AT + + """ + Order organizations by login + """ + LOGIN +} + +""" +An organization teams hovercard context +""" +type OrganizationTeamsHovercardContext implements HovercardContext { + """ + A string describing this context + """ + message: String! + + """ + An octicon to accompany this context + """ + octicon: String! + + """ + Teams in this organization the user is a member of that are relevant + """ + relevantTeams( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): TeamConnection! + + """ + The path for the full team list for this user + """ + teamsResourcePath: URI! + + """ + The URL for the full team list for this user + """ + teamsUrl: URI! + + """ + The total number of teams the user is on in the organization + """ + totalTeamCount: Int! +} + +""" +An organization list hovercard context +""" +type OrganizationsHovercardContext implements HovercardContext { + """ + A string describing this context + """ + message: String! + + """ + An octicon to accompany this context + """ + octicon: String! + + """ + Organizations this user is a member of that are relevant + """ + relevantOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationConnection! + + """ + The total number of organizations this user is in + """ + totalOrganizationCount: Int! +} + +""" +Information for an uploaded package. +""" +type Package implements Node { + id: ID! + + """ + Find the latest version for the package. + """ + latestVersion: PackageVersion + + """ + Identifies the name of the package. + """ + name: String! + + """ + Identifies the type of the package. + """ + packageType: PackageType! + + """ + The repository this package belongs to. + """ + repository: Repository + + """ + Statistics about package activity. + """ + statistics: PackageStatistics + + """ + Find package version by version string. + """ + version( + """ + The package version. + """ + version: String! + ): PackageVersion + + """ + list of versions for this package + """ + versions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering of the returned packages. + """ + orderBy: PackageVersionOrder = {field: CREATED_AT, direction: DESC} + ): PackageVersionConnection! +} + +""" +The connection type for Package. +""" +type PackageConnection { + """ + A list of edges. + """ + edges: [PackageEdge] + + """ + A list of nodes. + """ + nodes: [Package] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PackageEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Package +} + +""" +A file in a package version. +""" +type PackageFile implements Node { + id: ID! + + """ + MD5 hash of the file. + """ + md5: String + + """ + Name of the file. + """ + name: String! + + """ + The package version this file belongs to. + """ + packageVersion: PackageVersion + + """ + SHA1 hash of the file. + """ + sha1: String + + """ + SHA256 hash of the file. + """ + sha256: String + + """ + Size of the file in bytes. + """ + size: Int + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + URL to download the asset. + """ + url: URI +} + +""" +The connection type for PackageFile. +""" +type PackageFileConnection { + """ + A list of edges. + """ + edges: [PackageFileEdge] + + """ + A list of nodes. + """ + nodes: [PackageFile] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PackageFileEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PackageFile +} + +""" +Ways in which lists of package files can be ordered upon return. +""" +input PackageFileOrder { + """ + The direction in which to order package files by the specified field. + """ + direction: OrderDirection + + """ + The field in which to order package files by. + """ + field: PackageFileOrderField +} + +""" +Properties by which package file connections can be ordered. +""" +enum PackageFileOrderField { + """ + Order package files by creation time + """ + CREATED_AT +} + +""" +Ways in which lists of packages can be ordered upon return. +""" +input PackageOrder { + """ + The direction in which to order packages by the specified field. + """ + direction: OrderDirection + + """ + The field in which to order packages by. + """ + field: PackageOrderField +} + +""" +Properties by which package connections can be ordered. +""" +enum PackageOrderField { + """ + Order packages by creation time + """ + CREATED_AT +} + +""" +Represents an owner of a package. +""" +interface PackageOwner { + id: ID! + + """ + A list of packages under the owner. + """ + packages( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Find packages by their names. + """ + names: [String] + + """ + Ordering of the returned packages. + """ + orderBy: PackageOrder = {field: CREATED_AT, direction: DESC} + + """ + Filter registry package by type. + """ + packageType: PackageType + + """ + Find packages in a repository by ID. + """ + repositoryId: ID + ): PackageConnection! +} + +""" +Represents a object that contains package activity statistics such as downloads. +""" +type PackageStatistics { + """ + Number of times the package was downloaded since it was created. + """ + downloadsTotalCount: Int! +} + +""" +A version tag contains the mapping between a tag name and a version. +""" +type PackageTag implements Node { + id: ID! + + """ + Identifies the tag name of the version. + """ + name: String! + + """ + Version that the tag is associated with. + """ + version: PackageVersion +} + +""" +The possible types of a package. +""" +enum PackageType { + """ + A debian package. + """ + DEBIAN + + """ + A docker image. + """ + DOCKER @deprecated(reason: "DOCKER will be removed from this enum as this type will be migrated to only be used by the Packages REST API. Removal on 2021-06-21 UTC.") + + """ + A maven package. + """ + MAVEN + + """ + An npm package. + """ + NPM + + """ + A nuget package. + """ + NUGET + + """ + A python package. + """ + PYPI + + """ + A rubygems package. + """ + RUBYGEMS +} + +""" +Information about a specific package version. +""" +type PackageVersion implements Node { + """ + List of files associated with this package version + """ + files( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering of the returned package files. + """ + orderBy: PackageFileOrder = {field: CREATED_AT, direction: ASC} + ): PackageFileConnection! + id: ID! + + """ + The package associated with this version. + """ + package: Package + + """ + The platform this version was built for. + """ + platform: String + + """ + Whether or not this version is a pre-release. + """ + preRelease: Boolean! + + """ + The README of this package version. + """ + readme: String + + """ + The release associated with this package version. + """ + release: Release + + """ + Statistics about package activity. + """ + statistics: PackageVersionStatistics + + """ + The package version summary. + """ + summary: String + + """ + The version string. + """ + version: String! +} + +""" +The connection type for PackageVersion. +""" +type PackageVersionConnection { + """ + A list of edges. + """ + edges: [PackageVersionEdge] + + """ + A list of nodes. + """ + nodes: [PackageVersion] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PackageVersionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PackageVersion +} + +""" +Ways in which lists of package versions can be ordered upon return. +""" +input PackageVersionOrder { + """ + The direction in which to order package versions by the specified field. + """ + direction: OrderDirection + + """ + The field in which to order package versions by. + """ + field: PackageVersionOrderField +} + +""" +Properties by which package version connections can be ordered. +""" +enum PackageVersionOrderField { + """ + Order package versions by creation time + """ + CREATED_AT +} + +""" +Represents a object that contains package version activity statistics such as downloads. +""" +type PackageVersionStatistics { + """ + Number of times the package was downloaded since it was created. + """ + downloadsTotalCount: Int! +} + +""" +Information about pagination in a connection. +""" +type PageInfo { + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String + + """ + When paginating forwards, are there more items? + """ + hasNextPage: Boolean! + + """ + When paginating backwards, are there more items? + """ + hasPreviousPage: Boolean! + + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String +} + +""" +The possible types of patch statuses. +""" +enum PatchStatus { + """ + The file was added. Git status 'A'. + """ + ADDED + + """ + The file's type was changed. Git status 'T'. + """ + CHANGED + + """ + The file was copied. Git status 'C'. + """ + COPIED + + """ + The file was deleted. Git status 'D'. + """ + DELETED + + """ + The file's contents were changed. Git status 'M'. + """ + MODIFIED + + """ + The file was renamed. Git status 'R'. + """ + RENAMED +} + +""" +Types that can grant permissions on a repository to a user +""" +union PermissionGranter = Organization | Repository | Team + +""" +A level of permission and source for a user's access to a repository. +""" +type PermissionSource { + """ + The organization the repository belongs to. + """ + organization: Organization! + + """ + The level of access this source has granted to the user. + """ + permission: DefaultRepositoryPermissionField! + + """ + The source of this permission. + """ + source: PermissionGranter! +} + +""" +Autogenerated input type of PinIssue +""" +input PinIssueInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the issue to be pinned + """ + issueId: ID! +} + +""" +Autogenerated return type of PinIssue +""" +type PinIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue that was pinned + """ + issue: Issue +} + +""" +Types that can be pinned to a profile page. +""" +union PinnableItem = Gist | Repository + +""" +The connection type for PinnableItem. +""" +type PinnableItemConnection { + """ + A list of edges. + """ + edges: [PinnableItemEdge] + + """ + A list of nodes. + """ + nodes: [PinnableItem] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PinnableItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PinnableItem +} + +""" +Represents items that can be pinned to a profile page or dashboard. +""" +enum PinnableItemType { + """ + A gist. + """ + GIST + + """ + An issue. + """ + ISSUE + + """ + An organization. + """ + ORGANIZATION + + """ + A project. + """ + PROJECT + + """ + A pull request. + """ + PULL_REQUEST + + """ + A repository. + """ + REPOSITORY + + """ + A team. + """ + TEAM + + """ + A user. + """ + USER +} + +""" +A Pinned Discussion is a discussion pinned to a repository's index page. +""" +type PinnedDiscussion implements Node & RepositoryNode { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The discussion that was pinned. + """ + discussion: Discussion! + + """ + Color stops of the chosen gradient + """ + gradientStopColors: [String!]! + id: ID! + + """ + Background texture pattern + """ + pattern: PinnedDiscussionPattern! + + """ + The actor that pinned this discussion. + """ + pinnedBy: Actor! + + """ + Preconfigured background gradient option + """ + preconfiguredGradient: PinnedDiscussionGradient + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for PinnedDiscussion. +""" +type PinnedDiscussionConnection { + """ + A list of edges. + """ + edges: [PinnedDiscussionEdge] + + """ + A list of nodes. + """ + nodes: [PinnedDiscussion] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PinnedDiscussionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PinnedDiscussion +} + +""" +Preconfigured gradients that may be used to style discussions pinned within a repository. +""" +enum PinnedDiscussionGradient { + """ + A gradient of blue to mint + """ + BLUE_MINT + + """ + A gradient of blue to purple + """ + BLUE_PURPLE + + """ + A gradient of pink to blue + """ + PINK_BLUE + + """ + A gradient of purple to coral + """ + PURPLE_CORAL + + """ + A gradient of red to orange + """ + RED_ORANGE +} + +""" +Preconfigured background patterns that may be used to style discussions pinned within a repository. +""" +enum PinnedDiscussionPattern { + """ + An upward-facing chevron pattern + """ + CHEVRON_UP + + """ + A hollow dot pattern + """ + DOT + + """ + A solid dot pattern + """ + DOT_FILL + + """ + A heart pattern + """ + HEART_FILL + + """ + A plus sign pattern + """ + PLUS + + """ + A lightning bolt pattern + """ + ZAP +} + +""" +Represents a 'pinned' event on a given issue or pull request. +""" +type PinnedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the issue associated with the event. + """ + issue: Issue! +} + +""" +A Pinned Issue is a issue pinned to a repository's index page. +""" +type PinnedIssue implements Node { + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The issue that was pinned. + """ + issue: Issue! + + """ + The actor that pinned this issue. + """ + pinnedBy: Actor! + + """ + The repository that this issue was pinned to. + """ + repository: Repository! +} + +""" +The connection type for PinnedIssue. +""" +type PinnedIssueConnection { + """ + A list of edges. + """ + edges: [PinnedIssueEdge] + + """ + A list of nodes. + """ + nodes: [PinnedIssue] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PinnedIssueEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PinnedIssue +} + +""" +An ISO-8601 encoded UTC date string with millisecond precision. +""" +scalar PreciseDateTime + +""" +Audit log entry for a private_repository_forking.disable event. +""" +type PrivateRepositoryForkingDisableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a private_repository_forking.enable event. +""" +type PrivateRepositoryForkingEnableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +A curatable list of repositories relating to a repository owner, which defaults +to showing the most popular repositories they own. +""" +type ProfileItemShowcase { + """ + Whether or not the owner has pinned any repositories or gists. + """ + hasPinnedItems: Boolean! + + """ + The repositories and gists in the showcase. If the profile owner has any + pinned items, those will be returned. Otherwise, the profile owner's popular + repositories will be returned. + """ + items( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PinnableItemConnection! +} + +""" +Represents any entity on GitHub that has a profile page. +""" +interface ProfileOwner { + """ + Determine if this repository owner has any items that can be pinned to their profile. + """ + anyPinnableItems( + """ + Filter to only a particular kind of pinnable item. + """ + type: PinnableItemType + ): Boolean! + + """ + The public profile email. + """ + email: String + id: ID! + + """ + Showcases a selection of repositories and gists that the profile owner has + either curated or that have been selected automatically based on popularity. + """ + itemShowcase: ProfileItemShowcase! + + """ + The public profile location. + """ + location: String + + """ + The username used to login. + """ + login: String! + + """ + The public profile name. + """ + name: String + + """ + A list of repositories and gists this profile owner can pin to their profile. + """ + pinnableItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter the types of pinnable items that are returned. + """ + types: [PinnableItemType!] + ): PinnableItemConnection! + + """ + A list of repositories and gists this profile owner has pinned to their profile + """ + pinnedItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter the types of pinned items that are returned. + """ + types: [PinnableItemType!] + ): PinnableItemConnection! + + """ + Returns how many more items this profile owner can pin to their profile. + """ + pinnedItemsRemaining: Int! + + """ + Can the viewer pin repositories and gists to the profile? + """ + viewerCanChangePinnedItems: Boolean! + + """ + The public profile website URL. + """ + websiteUrl: URI +} + +""" +Projects manage issues, pull requests and notes within a project owner. +""" +type Project implements Closable & Node & Updatable { + """ + The project's description body. + """ + body: String + + """ + The projects description body rendered to HTML. + """ + bodyHTML: HTML! + + """ + `true` if the object is closed (definition of closed may depend on type) + """ + closed: Boolean! + + """ + Identifies the date and time when the object was closed. + """ + closedAt: DateTime + + """ + List of columns in the project + """ + columns( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectColumnConnection! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who originally created the project. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The project's name. + """ + name: String! + + """ + The project's number. + """ + number: Int! + + """ + The project's owner. Currently limited to repositories, organizations, and users. + """ + owner: ProjectOwner! + + """ + List of pending cards in this project + """ + pendingCards( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + A list of archived states to filter the cards by + """ + archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectCardConnection! + + """ + Project progress details. + """ + progress: ProjectProgress! + + """ + The HTTP path for this project + """ + resourcePath: URI! + + """ + Whether the project is open or closed. + """ + state: ProjectState! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this project + """ + url: URI! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! +} + +""" +A card in a project. +""" +type ProjectCard implements Node { + """ + The project column this card is associated under. A card may only belong to one + project column at a time. The column field will be null if the card is created + in a pending state and has yet to be associated with a column. Once cards are + associated with a column, they will not become pending in the future. + """ + column: ProjectColumn + + """ + The card content item + """ + content: ProjectCardItem + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created this card + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + Whether the card is archived + """ + isArchived: Boolean! + + """ + The card note + """ + note: String + + """ + The project that contains this card. + """ + project: Project! + + """ + The HTTP path for this card + """ + resourcePath: URI! + + """ + The state of ProjectCard + """ + state: ProjectCardState + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this card + """ + url: URI! +} + +""" +The possible archived states of a project card. +""" +enum ProjectCardArchivedState { + """ + A project card that is archived + """ + ARCHIVED + + """ + A project card that is not archived + """ + NOT_ARCHIVED +} + +""" +The connection type for ProjectCard. +""" +type ProjectCardConnection { + """ + A list of edges. + """ + edges: [ProjectCardEdge] + + """ + A list of nodes. + """ + nodes: [ProjectCard] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectCardEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectCard +} + +""" +Types that can be inside Project Cards. +""" +union ProjectCardItem = Issue | PullRequest + +""" +Various content states of a ProjectCard +""" +enum ProjectCardState { + """ + The card has content only. + """ + CONTENT_ONLY + + """ + The card has a note only. + """ + NOTE_ONLY + + """ + The card is redacted. + """ + REDACTED +} + +""" +A column inside a project. +""" +type ProjectColumn implements Node { + """ + List of cards in the column + """ + cards( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + A list of archived states to filter the cards by + """ + archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectCardConnection! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The project column's name. + """ + name: String! + + """ + The project that contains this column. + """ + project: Project! + + """ + The semantic purpose of the column + """ + purpose: ProjectColumnPurpose + + """ + The HTTP path for this project column + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this project column + """ + url: URI! +} + +""" +The connection type for ProjectColumn. +""" +type ProjectColumnConnection { + """ + A list of edges. + """ + edges: [ProjectColumnEdge] + + """ + A list of nodes. + """ + nodes: [ProjectColumn] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectColumnEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectColumn +} + +""" +The semantic purpose of the column - todo, in progress, or done. +""" +enum ProjectColumnPurpose { + """ + The column contains cards which are complete + """ + DONE + + """ + The column contains cards which are currently being worked on + """ + IN_PROGRESS + + """ + The column contains cards still to be worked on + """ + TODO +} + +""" +A list of projects associated with the owner. +""" +type ProjectConnection { + """ + A list of edges. + """ + edges: [ProjectEdge] + + """ + A list of nodes. + """ + nodes: [Project] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Project +} + +""" +The type of a project item. +""" +enum ProjectItemType { + """ + Draft Issue + """ + DRAFT_ISSUE + + """ + Issue + """ + ISSUE + + """ + Pull Request + """ + PULL_REQUEST + + """ + Redacted Item + """ + REDACTED +} + +""" +New projects that manage issues, pull requests and drafts using tables and boards. +""" +type ProjectNext implements Closable & Node & Updatable { + """ + Returns true if the project is closed. + """ + closed: Boolean! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was closed. + """ + closedAt: DateTime + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The actor who originally created the project. + """ + creator: Actor @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the primary key from the database. + """ + databaseId: Int @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's description. + """ + description: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + List of fields in the project + """ + fields( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectNextFieldConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + id: ID! + + """ + List of items in the project + """ + items( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectNextItemConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's number. + """ + number: Int! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's owner. Currently limited to organizations and users. + """ + owner: ProjectNextOwner! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Returns true if the project is public. + """ + public: Boolean! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The repositories the project is linked to. + """ + repositories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RepositoryConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The HTTP path for this project + """ + resourcePath: URI! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's short description. + """ + shortDescription: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's name. + """ + title: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The HTTP URL for this project + """ + url: URI! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + List of views in the project + """ + views( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectViewConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +The connection type for ProjectNext. +""" +type ProjectNextConnection { + """ + A list of edges. + """ + edges: [ProjectNextEdge] + + """ + A list of nodes. + """ + nodes: [ProjectNext] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectNextEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectNext +} + +""" +A field inside a project. +""" +type ProjectNextField implements Node & ProjectNextFieldCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The field's type. + """ + dataType: ProjectNextFieldType! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the primary key from the database. + """ + databaseId: Int @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + id: ID! + + """ + The project field's name. + """ + name: String! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project that contains this field. + """ + project: ProjectNext! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The field's settings. + """ + settings: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Common fields across different field types +""" +interface ProjectNextFieldCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The field's type. + """ + dataType: ProjectNextFieldType! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the primary key from the database. + """ + databaseId: Int @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + id: ID! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project field's name. + """ + name: String! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project that contains this field. + """ + project: ProjectNext! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The field's settings. + """ + settings: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +The connection type for ProjectNextField. +""" +type ProjectNextFieldConnection { + """ + A list of edges. + """ + edges: [ProjectNextFieldEdge] + + """ + A list of nodes. + """ + nodes: [ProjectNextField] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectNextFieldEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectNextField +} + +""" +The type of a project next field. +""" +enum ProjectNextFieldType { + """ + Assignees + """ + ASSIGNEES @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Date + """ + DATE @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Iteration + """ + ITERATION @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Labels + """ + LABELS @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Linked Pull Requests + """ + LINKED_PULL_REQUESTS @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Milestone + """ + MILESTONE @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Number + """ + NUMBER @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Repository + """ + REPOSITORY @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Reviewers + """ + REVIEWERS @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Single Select + """ + SINGLE_SELECT @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Text + """ + TEXT @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Title + """ + TITLE @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Tracks + """ + TRACKS @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +An item within a new Project. +""" +type ProjectNextItem implements Node { + """ + The content of the referenced draft issue, issue, or pull request + """ + content: ProjectNextItemContent @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The actor who created the item. + """ + creator: Actor @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the primary key from the database. + """ + databaseId: Int @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + List of field values + """ + fieldValues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectNextItemFieldValueConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + id: ID! + + """ + Whether the item is archived. + """ + isArchived: Boolean! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project that contains this item. + """ + project: ProjectNext! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The title of the item + """ + title: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The type of the item. + """ + type: ProjectItemType! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +The connection type for ProjectNextItem. +""" +type ProjectNextItemConnection { + """ + A list of edges. + """ + edges: [ProjectNextItemEdge] + + """ + A list of nodes. + """ + nodes: [ProjectNextItem] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Types that can be inside Project Items. +""" +union ProjectNextItemContent = DraftIssue | Issue | PullRequest + +""" +An edge in a connection. +""" +type ProjectNextItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectNextItem +} + +""" +An value of a field in an item of a new Project. +""" +type ProjectNextItemFieldValue implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The actor who created the item. + """ + creator: Actor @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the primary key from the database. + """ + databaseId: Int @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + id: ID! + + """ + The project field that contains this value. + """ + projectField: ProjectNextField! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project item that contains this value. + """ + projectItem: ProjectNextItem! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The value of a field + """ + value: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +The connection type for ProjectNextItemFieldValue. +""" +type ProjectNextItemFieldValueConnection { + """ + A list of edges. + """ + edges: [ProjectNextItemFieldValueEdge] + + """ + A list of nodes. + """ + nodes: [ProjectNextItemFieldValue] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectNextItemFieldValueEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectNextItemFieldValue +} + +""" +Properties by which the return project can be ordered. +""" +enum ProjectNextOrderField { + """ + The project's date and time of creation + """ + CREATED_AT @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's number + """ + NUMBER @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's title + """ + TITLE @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project's date and time of update + """ + UPDATED_AT @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Represents an owner of a project (beta). +""" +interface ProjectNextOwner { + id: ID! + + """ + Find a project by project (beta) number. + """ + projectNext( + """ + The project (beta) number. + """ + number: Int! + ): ProjectNext @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + A list of projects (beta) under the owner. + """ + projectsNext( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A project (beta) to search for under the the owner. + """ + query: String + + """ + How to order the returned projects (beta). + """ + sortBy: ProjectNextOrderField = TITLE + ): ProjectNextConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Ways in which lists of projects can be ordered upon return. +""" +input ProjectOrder { + """ + The direction in which to order projects by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order projects by. + """ + field: ProjectOrderField! +} + +""" +Properties by which project connections can be ordered. +""" +enum ProjectOrderField { + """ + Order projects by creation time + """ + CREATED_AT + + """ + Order projects by name + """ + NAME + + """ + Order projects by update time + """ + UPDATED_AT +} + +""" +Represents an owner of a Project. +""" +interface ProjectOwner { + id: ID! + + """ + Find project by number. + """ + project( + """ + The project number to find. + """ + number: Int! + ): Project + + """ + A list of projects under the owner. + """ + projects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for projects returned from the connection + """ + orderBy: ProjectOrder + + """ + Query to search projects by, currently only searching by name. + """ + search: String + + """ + A list of states to filter the projects by. + """ + states: [ProjectState!] + ): ProjectConnection! + + """ + The HTTP path listing owners projects + """ + projectsResourcePath: URI! + + """ + The HTTP URL listing owners projects + """ + projectsUrl: URI! + + """ + Can the current viewer create new projects on this owner. + """ + viewerCanCreateProjects: Boolean! +} + +""" +Project progress stats. +""" +type ProjectProgress { + """ + The number of done cards. + """ + doneCount: Int! + + """ + The percentage of done cards. + """ + donePercentage: Float! + + """ + Whether progress tracking is enabled and cards with purpose exist for this project + """ + enabled: Boolean! + + """ + The number of in-progress cards. + """ + inProgressCount: Int! + + """ + The percentage of in-progress cards. + """ + inProgressPercentage: Float! + + """ + The number of to do cards. + """ + todoCount: Int! + + """ + The percentage of to do cards. + """ + todoPercentage: Float! +} + +""" +State of the project; either 'open' or 'closed' +""" +enum ProjectState { + """ + The project is closed. + """ + CLOSED + + """ + The project is open. + """ + OPEN +} + +""" +GitHub-provided templates for Projects +""" +enum ProjectTemplate { + """ + Create a board with v2 triggers to automatically move cards across To do, In progress and Done columns. + """ + AUTOMATED_KANBAN_V2 + + """ + Create a board with triggers to automatically move cards across columns with review automation. + """ + AUTOMATED_REVIEWS_KANBAN + + """ + Create a board with columns for To do, In progress and Done. + """ + BASIC_KANBAN + + """ + Create a board to triage and prioritize bugs with To do, priority, and Done columns. + """ + BUG_TRIAGE +} + +""" +New projects that manage issues, pull requests and drafts using tables and boards. +""" +type ProjectV2 implements Closable & Node & Updatable { + """ + Returns true if the project is closed. + """ + closed: Boolean! + + """ + Identifies the date and time when the object was closed. + """ + closedAt: DateTime + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who originally created the project. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + A field of the project + """ + field( + """ + The name of the field + """ + name: String! + ): ProjectV2FieldConfiguration + + """ + List of fields and their constraints in the project + """ + fields( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2FieldConfigurationConnection! + id: ID! + + """ + List of items in the project + """ + items( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ItemConnection! + + """ + The project's number. + """ + number: Int! + + """ + The project's owner. Currently limited to organizations and users. + """ + owner: ProjectV2Owner! + + """ + Returns true if the project is public. + """ + public: Boolean! + + """ + The project's readme. + """ + readme: String + + """ + The repositories the project is linked to. + """ + repositories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RepositoryConnection! + + """ + The HTTP path for this project + """ + resourcePath: URI! + + """ + The project's short description. + """ + shortDescription: String + + """ + The project's name. + """ + title: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this project + """ + url: URI! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + List of views in the project + """ + views( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ViewConnection! +} + +""" +The connection type for ProjectV2. +""" +type ProjectV2Connection { + """ + A list of edges. + """ + edges: [ProjectV2Edge] + + """ + A list of nodes. + """ + nodes: [ProjectV2] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectV2Edge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectV2 +} + +""" +A field inside a project. +""" +type ProjectV2Field implements Node & ProjectV2FieldCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The field's type. + """ + dataType: ProjectV2FieldType! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The project field's name. + """ + name: String! + + """ + The project that contains this field. + """ + project: ProjectV2! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +Common fields across different project field types +""" +interface ProjectV2FieldCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The field's type. + """ + dataType: ProjectV2FieldType! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The project field's name. + """ + name: String! + + """ + The project that contains this field. + """ + project: ProjectV2! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +Configurations for project fields. +""" +union ProjectV2FieldConfiguration = ProjectV2Field | ProjectV2IterationField | ProjectV2SingleSelectField + +""" +The connection type for ProjectV2FieldConfiguration. +""" +type ProjectV2FieldConfigurationConnection { + """ + A list of edges. + """ + edges: [ProjectV2FieldConfigurationEdge] + + """ + A list of nodes. + """ + nodes: [ProjectV2FieldConfiguration] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectV2FieldConfigurationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectV2FieldConfiguration +} + +""" +The connection type for ProjectV2Field. +""" +type ProjectV2FieldConnection { + """ + A list of edges. + """ + edges: [ProjectV2FieldEdge] + + """ + A list of nodes. + """ + nodes: [ProjectV2Field] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectV2FieldEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectV2Field +} + +""" +The type of a project field. +""" +enum ProjectV2FieldType { + """ + Assignees + """ + ASSIGNEES + + """ + Date + """ + DATE + + """ + Iteration + """ + ITERATION + + """ + Labels + """ + LABELS + + """ + Linked Pull Requests + """ + LINKED_PULL_REQUESTS + + """ + Milestone + """ + MILESTONE + + """ + Number + """ + NUMBER + + """ + Repository + """ + REPOSITORY + + """ + Reviewers + """ + REVIEWERS + + """ + Single Select + """ + SINGLE_SELECT + + """ + Text + """ + TEXT + + """ + Title + """ + TITLE + + """ + Tracks + """ + TRACKS +} + +""" +The values that can be used to update a field of an item inside a Project. Only 1 value can be updated at a time. +""" +input ProjectV2FieldValue { + """ + The ISO 8601 date to set on the field. + """ + date: Date + + """ + The id of the iteration to set on the field. + """ + iterationId: String + + """ + The number to set on the field. + """ + number: Float + + """ + The id of the single select option to set on the field. + """ + singleSelectOptionId: String + + """ + The text to set on the field. + """ + text: String +} + +""" +An item within a Project. +""" +type ProjectV2Item implements Node { + """ + The content of the referenced draft issue, issue, or pull request + """ + content: ProjectV2ItemContent + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created the item. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + List of field values + """ + fieldValues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ItemFieldValueConnection! + id: ID! + + """ + Whether the item is archived. + """ + isArchived: Boolean! + + """ + The project that contains this item. + """ + project: ProjectV2! + + """ + The type of the item. + """ + type: ProjectV2ItemType! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for ProjectV2Item. +""" +type ProjectV2ItemConnection { + """ + A list of edges. + """ + edges: [ProjectV2ItemEdge] + + """ + A list of nodes. + """ + nodes: [ProjectV2Item] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Types that can be inside Project Items. +""" +union ProjectV2ItemContent = DraftIssue | Issue | PullRequest + +""" +An edge in a connection. +""" +type ProjectV2ItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectV2Item +} + +""" +The value of a date field in a Project item. +""" +type ProjectV2ItemFieldDateValue implements Node & ProjectV2ItemFieldValueCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created the item. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + Date value for the field + """ + date: Date + + """ + The project field that contains this value. + """ + field: ProjectV2FieldConfiguration! + id: ID! + + """ + The project item that contains this value. + """ + item: ProjectV2Item! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The value of an iteration field in a Project item. +""" +type ProjectV2ItemFieldIterationValue implements Node & ProjectV2ItemFieldValueCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created the item. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The duration of the iteration in days. + """ + duration: Int! + + """ + The project field that contains this value. + """ + field: ProjectV2FieldConfiguration! + id: ID! + + """ + The project item that contains this value. + """ + item: ProjectV2Item! + + """ + The ID of the iteration. + """ + iterationId: String! + + """ + The start date of the iteration. + """ + startDate: Date! + + """ + The title of the iteration. + """ + title: String! + + """ + The title of the iteration, with HTML. + """ + titleHTML: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The value of the labels field in a Project item. +""" +type ProjectV2ItemFieldLabelValue { + """ + The field that contains this value. + """ + field: ProjectV2FieldConfiguration! + + """ + Labels value of a field + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): LabelConnection +} + +""" +The value of a milestone field in a Project item. +""" +type ProjectV2ItemFieldMilestoneValue { + """ + The field that contains this value. + """ + field: ProjectV2FieldConfiguration! + + """ + Milestone value of a field + """ + milestone: Milestone +} + +""" +The value of a number field in a Project item. +""" +type ProjectV2ItemFieldNumberValue implements Node & ProjectV2ItemFieldValueCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created the item. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The project field that contains this value. + """ + field: ProjectV2FieldConfiguration! + id: ID! + + """ + The project item that contains this value. + """ + item: ProjectV2Item! + + """ + Number as a float(8) + """ + number: Float + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The value of a pull request field in a Project item. +""" +type ProjectV2ItemFieldPullRequestValue { + """ + The field that contains this value. + """ + field: ProjectV2FieldConfiguration! + + """ + The pull requests for this field + """ + pullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PullRequestConnection +} + +""" +The value of a repository field in a Project item. +""" +type ProjectV2ItemFieldRepositoryValue { + """ + The field that contains this value. + """ + field: ProjectV2FieldConfiguration! + + """ + The repository for this field. + """ + repository: Repository +} + +""" +The value of a reviewers field in a Project item. +""" +type ProjectV2ItemFieldReviewerValue { + """ + The field that contains this value. + """ + field: ProjectV2FieldConfiguration! + + """ + The reviewers for this field. + """ + reviewers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RequestedReviewerConnection +} + +""" +The value of a single select field in a Project item. +""" +type ProjectV2ItemFieldSingleSelectValue implements Node & ProjectV2ItemFieldValueCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created the item. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The project field that contains this value. + """ + field: ProjectV2FieldConfiguration! + id: ID! + + """ + The project item that contains this value. + """ + item: ProjectV2Item! + + """ + The name of the selected single select option. + """ + name: String + + """ + The html name of the selected single select option. + """ + nameHTML: String + + """ + The id of the selected single select option. + """ + optionId: String + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The value of a text field in a Project item. +""" +type ProjectV2ItemFieldTextValue implements Node & ProjectV2ItemFieldValueCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created the item. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The project field that contains this value. + """ + field: ProjectV2FieldConfiguration! + id: ID! + + """ + The project item that contains this value. + """ + item: ProjectV2Item! + + """ + Text value of a field + """ + text: String + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The value of a user field in a Project item. +""" +type ProjectV2ItemFieldUserValue { + """ + The field that contains this value. + """ + field: ProjectV2FieldConfiguration! + + """ + The users for this field + """ + users( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection +} + +""" +Project field values +""" +union ProjectV2ItemFieldValue = ProjectV2ItemFieldDateValue | ProjectV2ItemFieldIterationValue | ProjectV2ItemFieldLabelValue | ProjectV2ItemFieldMilestoneValue | ProjectV2ItemFieldNumberValue | ProjectV2ItemFieldPullRequestValue | ProjectV2ItemFieldRepositoryValue | ProjectV2ItemFieldReviewerValue | ProjectV2ItemFieldSingleSelectValue | ProjectV2ItemFieldTextValue | ProjectV2ItemFieldUserValue + +""" +Common fields across different project field value types +""" +interface ProjectV2ItemFieldValueCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created the item. + """ + creator: Actor + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The project field that contains this value. + """ + field: ProjectV2FieldConfiguration! + id: ID! + + """ + The project item that contains this value. + """ + item: ProjectV2Item! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for ProjectV2ItemFieldValue. +""" +type ProjectV2ItemFieldValueConnection { + """ + A list of edges. + """ + edges: [ProjectV2ItemFieldValueEdge] + + """ + A list of nodes. + """ + nodes: [ProjectV2ItemFieldValue] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectV2ItemFieldValueEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectV2ItemFieldValue +} + +""" +The type of a project item. +""" +enum ProjectV2ItemType { + """ + Draft Issue + """ + DRAFT_ISSUE + + """ + Issue + """ + ISSUE + + """ + Pull Request + """ + PULL_REQUEST + + """ + Redacted Item + """ + REDACTED +} + +""" +An iteration field inside a project. +""" +type ProjectV2IterationField implements Node & ProjectV2FieldCommon { + """ + Iteration configuration settings + """ + configuration: ProjectV2IterationFieldConfiguration! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The field's type. + """ + dataType: ProjectV2FieldType! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The project field's name. + """ + name: String! + + """ + The project that contains this field. + """ + project: ProjectV2! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +Iteration field configuration for a project. +""" +type ProjectV2IterationFieldConfiguration { + """ + The iteration's completed iterations + """ + completedIterations: [ProjectV2IterationFieldIteration!]! + + """ + The iteration's duration in days + """ + duration: Int! + + """ + The iteration's iterations + """ + iterations: [ProjectV2IterationFieldIteration!]! + + """ + The iteration's start day of the week + """ + startDay: Int! +} + +""" +Iteration field iteration settings for a project. +""" +type ProjectV2IterationFieldIteration { + """ + The iteration's duration in days + """ + duration: Int! + + """ + The iteration's ID. + """ + id: String! + + """ + The iteration's start date + """ + startDate: Date! + + """ + The iteration's title. + """ + title: String! + + """ + The iteration's html title. + """ + titleHTML: String! +} + +""" +Ways in which lists of projects can be ordered upon return. +""" +input ProjectV2Order { + """ + The direction in which to order projects by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order projects by. + """ + field: ProjectV2OrderField! +} + +""" +Properties by which projects can be ordered. +""" +enum ProjectV2OrderField { + """ + The project's date and time of creation + """ + CREATED_AT + + """ + The project's number + """ + NUMBER + + """ + The project's title + """ + TITLE + + """ + The project's date and time of update + """ + UPDATED_AT +} + +""" +Represents an owner of a project (beta). +""" +interface ProjectV2Owner { + id: ID! + + """ + Find a project by number. + """ + projectV2( + """ + The project number. + """ + number: Int! + ): ProjectV2 + + """ + A list of projects under the owner. + """ + projectsV2( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + How to order the returned projects. + """ + orderBy: ProjectV2Order = {field: NUMBER, direction: DESC} + + """ + A project to search for under the the owner. + """ + query: String + ): ProjectV2Connection! +} + +""" +Recent projects for the owner. +""" +interface ProjectV2Recent { + """ + Recent projects that this user has modified in the context of the owner. + """ + recentProjects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2Connection! +} + +""" +A single select field inside a project. +""" +type ProjectV2SingleSelectField implements Node & ProjectV2FieldCommon { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The field's type. + """ + dataType: ProjectV2FieldType! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The project field's name. + """ + name: String! + + """ + Options for the single select field + """ + options: [ProjectV2SingleSelectFieldOption!]! + + """ + The project that contains this field. + """ + project: ProjectV2! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +Single select field option for a configuration for a project. +""" +type ProjectV2SingleSelectFieldOption { + """ + The option's ID. + """ + id: String! + + """ + The option's name. + """ + name: String! + + """ + The option's html name. + """ + nameHTML: String! +} + +""" +Represents a sort by field and direction. +""" +type ProjectV2SortBy { + """ + The direction of the sorting. Possible values are ASC and DESC. + """ + direction: OrderDirection! + + """ + The field by which items are sorted. + """ + field: ProjectV2Field! +} + +""" +The connection type for ProjectV2SortBy. +""" +type ProjectV2SortByConnection { + """ + A list of edges. + """ + edges: [ProjectV2SortByEdge] + + """ + A list of nodes. + """ + nodes: [ProjectV2SortBy] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectV2SortByEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectV2SortBy +} + +""" +A view within a ProjectV2. +""" +type ProjectV2View implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The project view's filter. + """ + filter: String + + """ + The view's group-by field. + """ + groupBy( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2FieldConnection + id: ID! + + """ + The view's filtered items. + """ + items( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ItemConnection! + + """ + The project view's layout. + """ + layout: ProjectV2ViewLayout! + + """ + The project view's name. + """ + name: String! + + """ + The project view's number. + """ + number: Int! + + """ + The project that contains this view. + """ + project: ProjectV2! + + """ + The view's sort-by config. + """ + sortBy( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2SortByConnection + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The view's vertical-group-by field. + """ + verticalGroupBy( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2FieldConnection + + """ + The view's visible fields. + """ + visibleFields( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2FieldConnection +} + +""" +The connection type for ProjectV2View. +""" +type ProjectV2ViewConnection { + """ + A list of edges. + """ + edges: [ProjectV2ViewEdge] + + """ + A list of nodes. + """ + nodes: [ProjectV2View] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectV2ViewEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectV2View +} + +""" +The layout of a project v2 view. +""" +enum ProjectV2ViewLayout { + """ + Board layout + """ + BOARD_LAYOUT + + """ + Table layout + """ + TABLE_LAYOUT +} + +""" +A view within a Project. +""" +type ProjectView implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the primary key from the database. + """ + databaseId: Int @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project view's filter. + """ + filter: String @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The view's group-by field. + """ + groupBy: [Int!] @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + id: ID! + + """ + The view's filtered items. + """ + items( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectNextItemConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project view's layout. + """ + layout: ProjectViewLayout! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project view's name. + """ + name: String! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project view's number. + """ + number: Int! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The project that contains this view. + """ + project: ProjectNext! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The view's sort-by config. + """ + sortBy: [SortBy!] @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The view's vertical-group-by field. + """ + verticalGroupBy: [Int!] @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The view's visible fields. + """ + visibleFields: [Int!] @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +The connection type for ProjectView. +""" +type ProjectViewConnection { + """ + A list of edges. + """ + edges: [ProjectViewEdge] + + """ + A list of nodes. + """ + nodes: [ProjectView] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ProjectViewEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ProjectView +} + +""" +The layout of a project view. +""" +enum ProjectViewLayout { + """ + Board layout + """ + BOARD_LAYOUT + + """ + Table layout + """ + TABLE_LAYOUT +} + +""" +A user's public key. +""" +type PublicKey implements Node { + """ + The last time this authorization was used to perform an action. Values will be null for keys not owned by the user. + """ + accessedAt: DateTime + + """ + Identifies the date and time when the key was created. Keys created before + March 5th, 2014 have inaccurate values. Values will be null for keys not owned by the user. + """ + createdAt: DateTime + + """ + The fingerprint for this PublicKey. + """ + fingerprint: String! + id: ID! + + """ + Whether this PublicKey is read-only or not. Values will be null for keys not owned by the user. + """ + isReadOnly: Boolean + + """ + The public key string. + """ + key: String! + + """ + Identifies the date and time when the key was updated. Keys created before + March 5th, 2014 may have inaccurate values. Values will be null for keys not + owned by the user. + """ + updatedAt: DateTime +} + +""" +The connection type for PublicKey. +""" +type PublicKeyConnection { + """ + A list of edges. + """ + edges: [PublicKeyEdge] + + """ + A list of nodes. + """ + nodes: [PublicKey] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PublicKeyEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PublicKey +} + +""" +A repository pull request. +""" +type PullRequest implements Assignable & Closable & Comment & Labelable & Lockable & Node & ProjectNextOwner & ProjectV2Owner & Reactable & RepositoryNode & Subscribable & UniformResourceLocatable & Updatable & UpdatableComment { + """ + Reason that the conversation was locked. + """ + activeLockReason: LockReason + + """ + The number of additions in this pull request. + """ + additions: Int! + + """ + A list of Users assigned to this object. + """ + assignees( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! + + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + Returns the auto-merge request object if one exists for this pull request. + """ + autoMergeRequest: AutoMergeRequest + + """ + Identifies the base Ref associated with the pull request. + """ + baseRef: Ref + + """ + Identifies the name of the base Ref associated with the pull request, even if the ref has been deleted. + """ + baseRefName: String! + + """ + Identifies the oid of the base ref associated with the pull request, even if the ref has been deleted. + """ + baseRefOid: GitObjectID! + + """ + The repository associated with this pull request's base Ref. + """ + baseRepository: Repository + + """ + The body as Markdown. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + The number of changed files in this pull request. + """ + changedFiles: Int! + + """ + The HTTP path for the checks of this pull request. + """ + checksResourcePath: URI! + + """ + The HTTP URL for the checks of this pull request. + """ + checksUrl: URI! + + """ + `true` if the pull request is closed + """ + closed: Boolean! + + """ + Identifies the date and time when the object was closed. + """ + closedAt: DateTime + + """ + List of issues that were may be closed by this pull request + """ + closingIssuesReferences( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issues returned from the connection + """ + orderBy: IssueOrder + + """ + Return only manually linked Issues + """ + userLinkedOnly: Boolean = false + ): IssueConnection + + """ + A list of comments associated with the pull request. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issue comments returned from the connection. + """ + orderBy: IssueCommentOrder + ): IssueCommentConnection! + + """ + A list of commits present in this pull request's head branch not present in the base branch. + """ + commits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PullRequestCommitConnection! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The number of deletions in this pull request. + """ + deletions: Int! + + """ + The actor who edited this pull request's body. + """ + editor: Actor + + """ + Lists the files changed within this pull request. + """ + files( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PullRequestChangedFileConnection + + """ + Identifies the head Ref associated with the pull request. + """ + headRef: Ref + + """ + Identifies the name of the head Ref associated with the pull request, even if the ref has been deleted. + """ + headRefName: String! + + """ + Identifies the oid of the head ref associated with the pull request, even if the ref has been deleted. + """ + headRefOid: GitObjectID! + + """ + The repository associated with this pull request's head Ref. + """ + headRepository: Repository + + """ + The owner of the repository associated with this pull request's head Ref. + """ + headRepositoryOwner: RepositoryOwner + + """ + The hovercard information for this issue + """ + hovercard( + """ + Whether or not to include notification contexts + """ + includeNotificationContexts: Boolean = true + ): Hovercard! + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + The head and base repositories are different. + """ + isCrossRepository: Boolean! + + """ + Identifies if the pull request is a draft. + """ + isDraft: Boolean! + + """ + Is this pull request read by the viewer + """ + isReadByViewer: Boolean + + """ + A list of labels associated with the object. + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for labels returned from the connection. + """ + orderBy: LabelOrder = {field: CREATED_AT, direction: ASC} + ): LabelConnection + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + A list of latest reviews per user associated with the pull request. + """ + latestOpinionatedReviews( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Only return reviews from user who have write access to the repository + """ + writersOnly: Boolean = false + ): PullRequestReviewConnection + + """ + A list of latest reviews per user associated with the pull request that are not also pending review. + """ + latestReviews( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PullRequestReviewConnection + + """ + `true` if the pull request is locked + """ + locked: Boolean! + + """ + Indicates whether maintainers can modify the pull request. + """ + maintainerCanModify: Boolean! + + """ + The commit that was created when this pull request was merged. + """ + mergeCommit: Commit + + """ + Whether or not the pull request can be merged based on the existence of merge conflicts. + """ + mergeable: MergeableState! + + """ + Whether or not the pull request was merged. + """ + merged: Boolean! + + """ + The date and time that the pull request was merged. + """ + mergedAt: DateTime + + """ + The actor who merged the pull request. + """ + mergedBy: Actor + + """ + Identifies the milestone associated with the pull request. + """ + milestone: Milestone + + """ + Identifies the pull request number. + """ + number: Int! + + """ + A list of Users that are participating in the Pull Request conversation. + """ + participants( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! + + """ + The permalink to the pull request. + """ + permalink: URI! + + """ + The commit that GitHub automatically generated to test if this pull request + could be merged. This field will not return a value if the pull request is + merged, or if the test merge commit is still being generated. See the + `mergeable` field for more details on the mergeability of the pull request. + """ + potentialMergeCommit: Commit + + """ + List of project cards associated with this pull request. + """ + projectCards( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + A list of archived states to filter the cards by + """ + archivedStates: [ProjectCardArchivedState] = [ARCHIVED, NOT_ARCHIVED] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectCardConnection! + + """ + List of project items associated with this pull request. + """ + projectItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Include archived items. + """ + includeArchived: Boolean = true + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ItemConnection! + + """ + Find a project by project (beta) number. + """ + projectNext( + """ + The project (beta) number. + """ + number: Int! + ): ProjectNext @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + List of project (beta) items associated with this pull request. + """ + projectNextItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Include archived items. + """ + includeArchived: Boolean = true + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectNextItemConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Find a project by number. + """ + projectV2( + """ + The project number. + """ + number: Int! + ): ProjectV2 + + """ + A list of projects (beta) under the owner. + """ + projectsNext( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A project (beta) to search for under the the owner. + """ + query: String + + """ + How to order the returned projects (beta). + """ + sortBy: ProjectNextOrderField = TITLE + ): ProjectNextConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + A list of projects under the owner. + """ + projectsV2( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + How to order the returned projects. + """ + orderBy: ProjectV2Order = {field: NUMBER, direction: DESC} + + """ + A project to search for under the the owner. + """ + query: String + ): ProjectV2Connection! + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + The HTTP path for this pull request. + """ + resourcePath: URI! + + """ + The HTTP path for reverting this pull request. + """ + revertResourcePath: URI! + + """ + The HTTP URL for reverting this pull request. + """ + revertUrl: URI! + + """ + The current status of this pull request with respect to code review. + """ + reviewDecision: PullRequestReviewDecision + + """ + A list of review requests associated with the pull request. + """ + reviewRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ReviewRequestConnection + + """ + The list of all review threads for this pull request. + """ + reviewThreads( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PullRequestReviewThreadConnection! + + """ + A list of reviews associated with the pull request. + """ + reviews( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter by author of the review. + """ + author: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A list of states to filter the reviews. + """ + states: [PullRequestReviewState!] + ): PullRequestReviewConnection + + """ + Identifies the state of the pull request. + """ + state: PullRequestState! + + """ + A list of reviewer suggestions based on commit history and past review comments. + """ + suggestedReviewers: [SuggestedReviewer]! + + """ + A list of events, comments, commits, etc. associated with the pull request. + """ + timeline( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows filtering timeline events by a `since` timestamp. + """ + since: DateTime + ): PullRequestTimelineConnection! @deprecated(reason: "`timeline` will be removed Use PullRequest.timelineItems instead. Removal on 2020-10-01 UTC.") + + """ + A list of events, comments, commits, etc. associated with the pull request. + """ + timelineItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Filter timeline items by type. + """ + itemTypes: [PullRequestTimelineItemsItemType!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter timeline items by a `since` timestamp. + """ + since: DateTime + + """ + Skips the first _n_ elements in the list. + """ + skip: Int + ): PullRequestTimelineItemsConnection! + + """ + Identifies the pull request title. + """ + title: String! + + """ + Identifies the pull request title rendered to HTML. + """ + titleHTML: HTML! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this pull request. + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Whether or not the viewer can apply suggestion. + """ + viewerCanApplySuggestion: Boolean! + + """ + Check if the viewer can restore the deleted head ref. + """ + viewerCanDeleteHeadRef: Boolean! + + """ + Whether or not the viewer can disable auto-merge + """ + viewerCanDisableAutoMerge: Boolean! + + """ + Can the viewer edit files within this pull request. + """ + viewerCanEditFiles: Boolean! + + """ + Whether or not the viewer can enable auto-merge + """ + viewerCanEnableAutoMerge: Boolean! + + """ + Indicates whether the viewer can bypass branch protections and merge the pull request immediately + """ + viewerCanMergeAsAdmin: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! + + """ + The latest review given from the viewer. + """ + viewerLatestReview: PullRequestReview + + """ + The person who has requested the viewer for review on this pull request. + """ + viewerLatestReviewRequest: ReviewRequest + + """ + The merge body text for the viewer and method. + """ + viewerMergeBodyText( + """ + The merge method for the message. + """ + mergeType: PullRequestMergeMethod + ): String! + + """ + The merge headline text for the viewer and method. + """ + viewerMergeHeadlineText( + """ + The merge method for the message. + """ + mergeType: PullRequestMergeMethod + ): String! + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState +} + +""" +A file changed in a pull request. +""" +type PullRequestChangedFile { + """ + The number of additions to the file. + """ + additions: Int! + + """ + How the file was changed in this PullRequest + """ + changeType: PatchStatus! + + """ + The number of deletions to the file. + """ + deletions: Int! + + """ + The path of the file. + """ + path: String! + + """ + The state of the file for the viewer. + """ + viewerViewedState: FileViewedState! +} + +""" +The connection type for PullRequestChangedFile. +""" +type PullRequestChangedFileConnection { + """ + A list of edges. + """ + edges: [PullRequestChangedFileEdge] + + """ + A list of nodes. + """ + nodes: [PullRequestChangedFile] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PullRequestChangedFileEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequestChangedFile +} + +""" +Represents a Git commit part of a pull request. +""" +type PullRequestCommit implements Node & UniformResourceLocatable { + """ + The Git commit object + """ + commit: Commit! + id: ID! + + """ + The pull request this commit belongs to + """ + pullRequest: PullRequest! + + """ + The HTTP path for this pull request commit + """ + resourcePath: URI! + + """ + The HTTP URL for this pull request commit + """ + url: URI! +} + +""" +Represents a commit comment thread part of a pull request. +""" +type PullRequestCommitCommentThread implements Node & RepositoryNode { + """ + The comments that exist in this thread. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CommitCommentConnection! + + """ + The commit the comments were made on. + """ + commit: Commit! + id: ID! + + """ + The file the comments were made on. + """ + path: String + + """ + The position in the diff for the commit that the comment was made on. + """ + position: Int + + """ + The pull request this commit comment thread belongs to + """ + pullRequest: PullRequest! + + """ + The repository associated with this node. + """ + repository: Repository! +} + +""" +The connection type for PullRequestCommit. +""" +type PullRequestCommitConnection { + """ + A list of edges. + """ + edges: [PullRequestCommitEdge] + + """ + A list of nodes. + """ + nodes: [PullRequestCommit] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PullRequestCommitEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequestCommit +} + +""" +The connection type for PullRequest. +""" +type PullRequestConnection { + """ + A list of edges. + """ + edges: [PullRequestEdge] + + """ + A list of nodes. + """ + nodes: [PullRequest] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +This aggregates pull requests opened by a user within one repository. +""" +type PullRequestContributionsByRepository { + """ + The pull request contributions. + """ + contributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for contributions returned from the connection. + """ + orderBy: ContributionOrder = {direction: DESC} + ): CreatedPullRequestContributionConnection! + + """ + The repository in which the pull requests were opened. + """ + repository: Repository! +} + +""" +An edge in a connection. +""" +type PullRequestEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequest +} + +""" +Represents available types of methods to use when merging a pull request. +""" +enum PullRequestMergeMethod { + """ + Add all commits from the head branch to the base branch with a merge commit. + """ + MERGE + + """ + Add all commits from the head branch onto the base branch individually. + """ + REBASE + + """ + Combine all commits from the head branch into a single commit in the base branch. + """ + SQUASH +} + +""" +Ways in which lists of issues can be ordered upon return. +""" +input PullRequestOrder { + """ + The direction in which to order pull requests by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order pull requests by. + """ + field: PullRequestOrderField! +} + +""" +Properties by which pull_requests connections can be ordered. +""" +enum PullRequestOrderField { + """ + Order pull_requests by creation time + """ + CREATED_AT + + """ + Order pull_requests by update time + """ + UPDATED_AT +} + +""" +A review object for a given pull request. +""" +type PullRequestReview implements Comment & Deletable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + Indicates whether the author of this review has push access to the repository. + """ + authorCanPushToRepository: Boolean! + + """ + Identifies the pull request review body. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body of this review rendered as plain text. + """ + bodyText: String! + + """ + A list of review comments for the current pull request review. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PullRequestReviewCommentConnection! + + """ + Identifies the commit associated with this pull request review. + """ + commit: Commit + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + A list of teams that this review was made on behalf of. + """ + onBehalfOf( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): TeamConnection! + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + Identifies the pull request associated with this pull request review. + """ + pullRequest: PullRequest! + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + The HTTP path permalink for this PullRequestReview. + """ + resourcePath: URI! + + """ + Identifies the current state of the pull request review. + """ + state: PullRequestReviewState! + + """ + Identifies when the Pull Request Review was submitted + """ + submittedAt: DateTime + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL permalink for this PullRequestReview. + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! +} + +""" +A review comment associated with a given repository pull request. +""" +type PullRequestReviewComment implements Comment & Deletable & Minimizable & Node & Reactable & RepositoryNode & Updatable & UpdatableComment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the subject of the comment. + """ + authorAssociation: CommentAuthorAssociation! + + """ + The comment body of this review comment. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The comment body of this review comment rendered as plain text. + """ + bodyText: String! + + """ + Identifies the commit associated with the comment. + """ + commit: Commit + + """ + Identifies when the comment was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The diff hunk to which the comment applies. + """ + diffHunk: String! + + """ + Identifies when the comment was created in a draft state. + """ + draftedAt: DateTime! + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + Returns whether or not a comment has been minimized. + """ + isMinimized: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Returns why the comment was minimized. + """ + minimizedReason: String + + """ + Identifies the original commit associated with the comment. + """ + originalCommit: Commit + + """ + The original line index in the diff to which the comment applies. + """ + originalPosition: Int! + + """ + Identifies when the comment body is outdated + """ + outdated: Boolean! + + """ + The path to which the comment applies. + """ + path: String! + + """ + The line index in the diff to which the comment applies. + """ + position: Int + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + The pull request associated with this review comment. + """ + pullRequest: PullRequest! + + """ + The pull request review associated with this review comment. + """ + pullRequestReview: PullRequestReview + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The comment this is a reply to. + """ + replyTo: PullRequestReviewComment + + """ + The repository associated with this node. + """ + repository: Repository! + + """ + The HTTP path permalink for this review comment. + """ + resourcePath: URI! + + """ + Identifies the state of the comment. + """ + state: PullRequestReviewCommentState! + + """ + Identifies when the comment was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL permalink for this review comment. + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Check if the current viewer can minimize this object. + """ + viewerCanMinimize: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! +} + +""" +The connection type for PullRequestReviewComment. +""" +type PullRequestReviewCommentConnection { + """ + A list of edges. + """ + edges: [PullRequestReviewCommentEdge] + + """ + A list of nodes. + """ + nodes: [PullRequestReviewComment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PullRequestReviewCommentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequestReviewComment +} + +""" +The possible states of a pull request review comment. +""" +enum PullRequestReviewCommentState { + """ + A comment that is part of a pending review + """ + PENDING + + """ + A comment that is part of a submitted review + """ + SUBMITTED +} + +""" +The connection type for PullRequestReview. +""" +type PullRequestReviewConnection { + """ + A list of edges. + """ + edges: [PullRequestReviewEdge] + + """ + A list of nodes. + """ + nodes: [PullRequestReview] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +This aggregates pull request reviews made by a user within one repository. +""" +type PullRequestReviewContributionsByRepository { + """ + The pull request review contributions. + """ + contributions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for contributions returned from the connection. + """ + orderBy: ContributionOrder = {direction: DESC} + ): CreatedPullRequestReviewContributionConnection! + + """ + The repository in which the pull request reviews were made. + """ + repository: Repository! +} + +""" +The review status of a pull request. +""" +enum PullRequestReviewDecision { + """ + The pull request has received an approving review. + """ + APPROVED + + """ + Changes have been requested on the pull request. + """ + CHANGES_REQUESTED + + """ + A review is required before the pull request can be merged. + """ + REVIEW_REQUIRED +} + +""" +An edge in a connection. +""" +type PullRequestReviewEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequestReview +} + +""" +The possible events to perform on a pull request review. +""" +enum PullRequestReviewEvent { + """ + Submit feedback and approve merging these changes. + """ + APPROVE + + """ + Submit general feedback without explicit approval. + """ + COMMENT + + """ + Dismiss review so it now longer effects merging. + """ + DISMISS + + """ + Submit feedback that must be addressed before merging. + """ + REQUEST_CHANGES +} + +""" +The possible states of a pull request review. +""" +enum PullRequestReviewState { + """ + A review allowing the pull request to merge. + """ + APPROVED + + """ + A review blocking the pull request from merging. + """ + CHANGES_REQUESTED + + """ + An informational review. + """ + COMMENTED + + """ + A review that has been dismissed. + """ + DISMISSED + + """ + A review that has not yet been submitted. + """ + PENDING +} + +""" +A threaded list of comments for a given pull request. +""" +type PullRequestReviewThread implements Node { + """ + A list of pull request comments associated with the thread. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Skips the first _n_ elements in the list. + """ + skip: Int + ): PullRequestReviewCommentConnection! + + """ + The side of the diff on which this thread was placed. + """ + diffSide: DiffSide! + id: ID! + + """ + Whether or not the thread has been collapsed (resolved) + """ + isCollapsed: Boolean! + + """ + Indicates whether this thread was outdated by newer changes. + """ + isOutdated: Boolean! + + """ + Whether this thread has been resolved + """ + isResolved: Boolean! + + """ + The line in the file to which this thread refers + """ + line: Int + + """ + The original line in the file to which this thread refers. + """ + originalLine: Int + + """ + The original start line in the file to which this thread refers (multi-line only). + """ + originalStartLine: Int + + """ + Identifies the file path of this thread. + """ + path: String! + + """ + Identifies the pull request associated with this thread. + """ + pullRequest: PullRequest! + + """ + Identifies the repository associated with this thread. + """ + repository: Repository! + + """ + The user who resolved this thread + """ + resolvedBy: User + + """ + The side of the diff that the first line of the thread starts on (multi-line only) + """ + startDiffSide: DiffSide + + """ + The start line in the file to which this thread refers (multi-line only) + """ + startLine: Int + + """ + Indicates whether the current viewer can reply to this thread. + """ + viewerCanReply: Boolean! + + """ + Whether or not the viewer can resolve this thread + """ + viewerCanResolve: Boolean! + + """ + Whether or not the viewer can unresolve this thread + """ + viewerCanUnresolve: Boolean! +} + +""" +Review comment threads for a pull request review. +""" +type PullRequestReviewThreadConnection { + """ + A list of edges. + """ + edges: [PullRequestReviewThreadEdge] + + """ + A list of nodes. + """ + nodes: [PullRequestReviewThread] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PullRequestReviewThreadEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequestReviewThread +} + +""" +Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits. +""" +type PullRequestRevisionMarker { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The last commit the viewer has seen. + """ + lastSeenCommit: Commit! + + """ + The pull request to which the marker belongs. + """ + pullRequest: PullRequest! +} + +""" +The possible states of a pull request. +""" +enum PullRequestState { + """ + A pull request that has been closed without being merged. + """ + CLOSED + + """ + A pull request that has been closed by being merged. + """ + MERGED + + """ + A pull request that is still open. + """ + OPEN +} + +""" +A repository pull request template. +""" +type PullRequestTemplate { + """ + The body of the template + """ + body: String + + """ + The filename of the template + """ + filename: String + + """ + The repository the template belongs to + """ + repository: Repository! +} + +""" +The connection type for PullRequestTimelineItem. +""" +type PullRequestTimelineConnection { + """ + A list of edges. + """ + edges: [PullRequestTimelineItemEdge] + + """ + A list of nodes. + """ + nodes: [PullRequestTimelineItem] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An item in a pull request timeline +""" +union PullRequestTimelineItem = AssignedEvent | BaseRefDeletedEvent | BaseRefForcePushedEvent | ClosedEvent | Commit | CommitCommentThread | CrossReferencedEvent | DemilestonedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | HeadRefDeletedEvent | HeadRefForcePushedEvent | HeadRefRestoredEvent | IssueComment | LabeledEvent | LockedEvent | MergedEvent | MilestonedEvent | PullRequestReview | PullRequestReviewComment | PullRequestReviewThread | ReferencedEvent | RenamedTitleEvent | ReopenedEvent | ReviewDismissedEvent | ReviewRequestRemovedEvent | ReviewRequestedEvent | SubscribedEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnsubscribedEvent | UserBlockedEvent + +""" +An edge in a connection. +""" +type PullRequestTimelineItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequestTimelineItem +} + +""" +An item in a pull request timeline +""" +union PullRequestTimelineItems = AddedToProjectEvent | AssignedEvent | AutoMergeDisabledEvent | AutoMergeEnabledEvent | AutoRebaseEnabledEvent | AutoSquashEnabledEvent | AutomaticBaseChangeFailedEvent | AutomaticBaseChangeSucceededEvent | BaseRefChangedEvent | BaseRefDeletedEvent | BaseRefForcePushedEvent | ClosedEvent | CommentDeletedEvent | ConnectedEvent | ConvertToDraftEvent | ConvertedNoteToIssueEvent | ConvertedToDiscussionEvent | CrossReferencedEvent | DemilestonedEvent | DeployedEvent | DeploymentEnvironmentChangedEvent | DisconnectedEvent | HeadRefDeletedEvent | HeadRefForcePushedEvent | HeadRefRestoredEvent | IssueComment | LabeledEvent | LockedEvent | MarkedAsDuplicateEvent | MentionedEvent | MergedEvent | MilestonedEvent | MovedColumnsInProjectEvent | PinnedEvent | PullRequestCommit | PullRequestCommitCommentThread | PullRequestReview | PullRequestReviewThread | PullRequestRevisionMarker | ReadyForReviewEvent | ReferencedEvent | RemovedFromProjectEvent | RenamedTitleEvent | ReopenedEvent | ReviewDismissedEvent | ReviewRequestRemovedEvent | ReviewRequestedEvent | SubscribedEvent | TransferredEvent | UnassignedEvent | UnlabeledEvent | UnlockedEvent | UnmarkedAsDuplicateEvent | UnpinnedEvent | UnsubscribedEvent | UserBlockedEvent + +""" +The connection type for PullRequestTimelineItems. +""" +type PullRequestTimelineItemsConnection { + """ + A list of edges. + """ + edges: [PullRequestTimelineItemsEdge] + + """ + Identifies the count of items after applying `before` and `after` filters. + """ + filteredCount: Int! + + """ + A list of nodes. + """ + nodes: [PullRequestTimelineItems] + + """ + Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing. + """ + pageCount: Int! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! + + """ + Identifies the date and time when the timeline was last updated. + """ + updatedAt: DateTime! +} + +""" +An edge in a connection. +""" +type PullRequestTimelineItemsEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PullRequestTimelineItems +} + +""" +The possible item types found in a timeline. +""" +enum PullRequestTimelineItemsItemType { + """ + Represents an 'added_to_merge_queue' event on a given pull request. + """ + ADDED_TO_MERGE_QUEUE_EVENT + + """ + Represents a 'added_to_project' event on a given issue or pull request. + """ + ADDED_TO_PROJECT_EVENT + + """ + Represents an 'assigned' event on any assignable object. + """ + ASSIGNED_EVENT + + """ + Represents a 'automatic_base_change_failed' event on a given pull request. + """ + AUTOMATIC_BASE_CHANGE_FAILED_EVENT + + """ + Represents a 'automatic_base_change_succeeded' event on a given pull request. + """ + AUTOMATIC_BASE_CHANGE_SUCCEEDED_EVENT + + """ + Represents a 'auto_merge_disabled' event on a given pull request. + """ + AUTO_MERGE_DISABLED_EVENT + + """ + Represents a 'auto_merge_enabled' event on a given pull request. + """ + AUTO_MERGE_ENABLED_EVENT + + """ + Represents a 'auto_rebase_enabled' event on a given pull request. + """ + AUTO_REBASE_ENABLED_EVENT + + """ + Represents a 'auto_squash_enabled' event on a given pull request. + """ + AUTO_SQUASH_ENABLED_EVENT + + """ + Represents a 'base_ref_changed' event on a given issue or pull request. + """ + BASE_REF_CHANGED_EVENT + + """ + Represents a 'base_ref_deleted' event on a given pull request. + """ + BASE_REF_DELETED_EVENT + + """ + Represents a 'base_ref_force_pushed' event on a given pull request. + """ + BASE_REF_FORCE_PUSHED_EVENT + + """ + Represents a 'closed' event on any `Closable`. + """ + CLOSED_EVENT + + """ + Represents a 'comment_deleted' event on a given issue or pull request. + """ + COMMENT_DELETED_EVENT + + """ + Represents a 'connected' event on a given issue or pull request. + """ + CONNECTED_EVENT + + """ + Represents a 'converted_note_to_issue' event on a given issue or pull request. + """ + CONVERTED_NOTE_TO_ISSUE_EVENT + + """ + Represents a 'converted_to_discussion' event on a given issue. + """ + CONVERTED_TO_DISCUSSION_EVENT + + """ + Represents a 'convert_to_draft' event on a given pull request. + """ + CONVERT_TO_DRAFT_EVENT + + """ + Represents a mention made by one issue or pull request to another. + """ + CROSS_REFERENCED_EVENT + + """ + Represents a 'demilestoned' event on a given issue or pull request. + """ + DEMILESTONED_EVENT + + """ + Represents a 'deployed' event on a given pull request. + """ + DEPLOYED_EVENT + + """ + Represents a 'deployment_environment_changed' event on a given pull request. + """ + DEPLOYMENT_ENVIRONMENT_CHANGED_EVENT + + """ + Represents a 'disconnected' event on a given issue or pull request. + """ + DISCONNECTED_EVENT + + """ + Represents a 'head_ref_deleted' event on a given pull request. + """ + HEAD_REF_DELETED_EVENT + + """ + Represents a 'head_ref_force_pushed' event on a given pull request. + """ + HEAD_REF_FORCE_PUSHED_EVENT + + """ + Represents a 'head_ref_restored' event on a given pull request. + """ + HEAD_REF_RESTORED_EVENT + + """ + Represents a comment on an Issue. + """ + ISSUE_COMMENT + + """ + Represents a 'labeled' event on a given issue or pull request. + """ + LABELED_EVENT + + """ + Represents a 'locked' event on a given issue or pull request. + """ + LOCKED_EVENT + + """ + Represents a 'marked_as_duplicate' event on a given issue or pull request. + """ + MARKED_AS_DUPLICATE_EVENT + + """ + Represents a 'mentioned' event on a given issue or pull request. + """ + MENTIONED_EVENT + + """ + Represents a 'merged' event on a given pull request. + """ + MERGED_EVENT + + """ + Represents a 'milestoned' event on a given issue or pull request. + """ + MILESTONED_EVENT + + """ + Represents a 'moved_columns_in_project' event on a given issue or pull request. + """ + MOVED_COLUMNS_IN_PROJECT_EVENT + + """ + Represents a 'pinned' event on a given issue or pull request. + """ + PINNED_EVENT + + """ + Represents a Git commit part of a pull request. + """ + PULL_REQUEST_COMMIT + + """ + Represents a commit comment thread part of a pull request. + """ + PULL_REQUEST_COMMIT_COMMENT_THREAD + + """ + A review object for a given pull request. + """ + PULL_REQUEST_REVIEW + + """ + A threaded list of comments for a given pull request. + """ + PULL_REQUEST_REVIEW_THREAD + + """ + Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits. + """ + PULL_REQUEST_REVISION_MARKER + + """ + Represents a 'ready_for_review' event on a given pull request. + """ + READY_FOR_REVIEW_EVENT + + """ + Represents a 'referenced' event on a given `ReferencedSubject`. + """ + REFERENCED_EVENT + + """ + Represents a 'removed_from_merge_queue' event on a given pull request. + """ + REMOVED_FROM_MERGE_QUEUE_EVENT + + """ + Represents a 'removed_from_project' event on a given issue or pull request. + """ + REMOVED_FROM_PROJECT_EVENT + + """ + Represents a 'renamed' event on a given issue or pull request + """ + RENAMED_TITLE_EVENT + + """ + Represents a 'reopened' event on any `Closable`. + """ + REOPENED_EVENT + + """ + Represents a 'review_dismissed' event on a given issue or pull request. + """ + REVIEW_DISMISSED_EVENT + + """ + Represents an 'review_requested' event on a given pull request. + """ + REVIEW_REQUESTED_EVENT + + """ + Represents an 'review_request_removed' event on a given pull request. + """ + REVIEW_REQUEST_REMOVED_EVENT + + """ + Represents a 'subscribed' event on a given `Subscribable`. + """ + SUBSCRIBED_EVENT + + """ + Represents a 'transferred' event on a given issue or pull request. + """ + TRANSFERRED_EVENT + + """ + Represents an 'unassigned' event on any assignable object. + """ + UNASSIGNED_EVENT + + """ + Represents an 'unlabeled' event on a given issue or pull request. + """ + UNLABELED_EVENT + + """ + Represents an 'unlocked' event on a given issue or pull request. + """ + UNLOCKED_EVENT + + """ + Represents an 'unmarked_as_duplicate' event on a given issue or pull request. + """ + UNMARKED_AS_DUPLICATE_EVENT + + """ + Represents an 'unpinned' event on a given issue or pull request. + """ + UNPINNED_EVENT + + """ + Represents an 'unsubscribed' event on a given `Subscribable`. + """ + UNSUBSCRIBED_EVENT + + """ + Represents a 'user_blocked' event on a given user. + """ + USER_BLOCKED_EVENT +} + +""" +The possible target states when updating a pull request. +""" +enum PullRequestUpdateState { + """ + A pull request that has been closed without being merged. + """ + CLOSED + + """ + A pull request that is still open. + """ + OPEN +} + +""" +A Git push. +""" +type Push implements Node { + id: ID! + + """ + The SHA after the push + """ + nextSha: GitObjectID + + """ + The permalink for this push. + """ + permalink: URI! + + """ + The SHA before the push + """ + previousSha: GitObjectID + + """ + The actor who pushed + """ + pusher: Actor! + + """ + The repository that was pushed to + """ + repository: Repository! +} + +""" +A team, user, or app who has the ability to push to a protected branch. +""" +type PushAllowance implements Node { + """ + The actor that can push. + """ + actor: PushAllowanceActor + + """ + Identifies the branch protection rule associated with the allowed user, team, or app. + """ + branchProtectionRule: BranchProtectionRule + id: ID! +} + +""" +Types that can be an actor. +""" +union PushAllowanceActor = App | Team | User + +""" +The connection type for PushAllowance. +""" +type PushAllowanceConnection { + """ + A list of edges. + """ + edges: [PushAllowanceEdge] + + """ + A list of nodes. + """ + nodes: [PushAllowance] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type PushAllowanceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PushAllowance +} + +""" +The query root of GitHub's GraphQL interface. +""" +type Query { + """ + Look up a code of conduct by its key + """ + codeOfConduct( + """ + The code of conduct's key + """ + key: String! + ): CodeOfConduct + + """ + Look up a code of conduct by its key + """ + codesOfConduct: [CodeOfConduct] + + """ + Look up an enterprise by URL slug. + """ + enterprise( + """ + The enterprise invitation token. + """ + invitationToken: String + + """ + The enterprise URL slug. + """ + slug: String! + ): Enterprise + + """ + Look up a pending enterprise administrator invitation by invitee, enterprise and role. + """ + enterpriseAdministratorInvitation( + """ + The slug of the enterprise the user was invited to join. + """ + enterpriseSlug: String! + + """ + The role for the business member invitation. + """ + role: EnterpriseAdministratorRole! + + """ + The login of the user invited to join the business. + """ + userLogin: String! + ): EnterpriseAdministratorInvitation + + """ + Look up a pending enterprise administrator invitation by invitation token. + """ + enterpriseAdministratorInvitationByToken( + """ + The invitation token sent with the invitation email. + """ + invitationToken: String! + ): EnterpriseAdministratorInvitation + + """ + Look up an open source license by its key + """ + license( + """ + The license's downcased SPDX ID + """ + key: String! + ): License + + """ + Return a list of known open source licenses + """ + licenses: [License]! + + """ + Get alphabetically sorted list of Marketplace categories + """ + marketplaceCategories( + """ + Exclude categories with no listings. + """ + excludeEmpty: Boolean + + """ + Returns top level categories only, excluding any subcategories. + """ + excludeSubcategories: Boolean + + """ + Return only the specified categories. + """ + includeCategories: [String!] + ): [MarketplaceCategory!]! + + """ + Look up a Marketplace category by its slug. + """ + marketplaceCategory( + """ + The URL slug of the category. + """ + slug: String! + + """ + Also check topic aliases for the category slug + """ + useTopicAliases: Boolean + ): MarketplaceCategory + + """ + Look up a single Marketplace listing + """ + marketplaceListing( + """ + Select the listing that matches this slug. It's the short name of the listing used in its URL. + """ + slug: String! + ): MarketplaceListing + + """ + Look up Marketplace listings + """ + marketplaceListings( + """ + Select listings that can be administered by the specified user. + """ + adminId: ID + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Select listings visible to the viewer even if they are not approved. If omitted or + false, only approved listings will be returned. + """ + allStates: Boolean + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Select only listings with the given category. + """ + categorySlug: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Select listings for products owned by the specified organization. + """ + organizationId: ID + + """ + Select only listings where the primary category matches the given category slug. + """ + primaryCategoryOnly: Boolean = false + + """ + Select the listings with these slugs, if they are visible to the viewer. + """ + slugs: [String] + + """ + Also check topic aliases for the category slug + """ + useTopicAliases: Boolean + + """ + Select listings to which user has admin access. If omitted, listings visible to the + viewer are returned. + """ + viewerCanAdmin: Boolean + + """ + Select only listings that offer a free trial. + """ + withFreeTrialsOnly: Boolean = false + ): MarketplaceListingConnection! + + """ + Return information about the GitHub instance + """ + meta: GitHubMetadata! + + """ + Fetches an object given its ID. + """ + node( + """ + ID of the object. + """ + id: ID! + ): Node + + """ + Lookup nodes by a list of IDs. + """ + nodes( + """ + The list of node IDs. + """ + ids: [ID!]! + ): [Node]! + + """ + Lookup a organization by login. + """ + organization( + """ + The organization's login. + """ + login: String! + ): Organization + + """ + The client's rate limit information. + """ + rateLimit( + """ + If true, calculate the cost for the query without evaluating it + """ + dryRun: Boolean = false + ): RateLimit + + """ + Hack to workaround https://github.com/facebook/relay/issues/112 re-exposing the root query object + """ + relay: Query! + + """ + Lookup a given repository by the owner and repository name. + """ + repository( + """ + Follow repository renames. If disabled, a repository referenced by its old name will return an error. + """ + followRenames: Boolean = true + + """ + The name of the repository + """ + name: String! + + """ + The login field of a user or organization + """ + owner: String! + ): Repository + + """ + Lookup a repository owner (ie. either a User or an Organization) by login. + """ + repositoryOwner( + """ + The username to lookup the owner by. + """ + login: String! + ): RepositoryOwner + + """ + Lookup resource by a URL. + """ + resource( + """ + The URL. + """ + url: URI! + ): UniformResourceLocatable + + """ + Perform a search across resources. + """ + search( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + The search string to look for. + """ + query: String! + + """ + The types of search items to search within. + """ + type: SearchType! + ): SearchResultItemConnection! + + """ + GitHub Security Advisories + """ + securityAdvisories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + A list of classifications to filter advisories by. + """ + classifications: [SecurityAdvisoryClassification!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Filter advisories by identifier, e.g. GHSA or CVE. + """ + identifier: SecurityAdvisoryIdentifierFilter + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for the returned topics. + """ + orderBy: SecurityAdvisoryOrder = {field: UPDATED_AT, direction: DESC} + + """ + Filter advisories to those published since a time in the past. + """ + publishedSince: DateTime + + """ + Filter advisories to those updated since a time in the past. + """ + updatedSince: DateTime + ): SecurityAdvisoryConnection! + + """ + Fetch a Security Advisory by its GHSA ID + """ + securityAdvisory( + """ + GitHub Security Advisory ID. + """ + ghsaId: String! + ): SecurityAdvisory + + """ + Software Vulnerabilities documented by GitHub Security Advisories + """ + securityVulnerabilities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + A list of advisory classifications to filter vulnerabilities by. + """ + classifications: [SecurityAdvisoryClassification!] + + """ + An ecosystem to filter vulnerabilities by. + """ + ecosystem: SecurityAdvisoryEcosystem + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for the returned topics. + """ + orderBy: SecurityVulnerabilityOrder = {field: UPDATED_AT, direction: DESC} + + """ + A package name to filter vulnerabilities by. + """ + package: String + + """ + A list of severities to filter vulnerabilities by. + """ + severities: [SecurityAdvisorySeverity!] + ): SecurityVulnerabilityConnection! + + """ + Users and organizations who can be sponsored via GitHub Sponsors. + """ + sponsorables( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Optional filter for which dependencies should be checked for sponsorable + owners. Only sponsorable owners of dependencies in this ecosystem will be + included. Used when onlyDependencies = true. + + **Upcoming Change on 2022-07-01 UTC** + **Description:** `dependencyEcosystem` will be removed. Use the ecosystem argument instead. + **Reason:** The type is switching from SecurityAdvisoryEcosystem to DependencyGraphEcosystem. + """ + dependencyEcosystem: SecurityAdvisoryEcosystem + + """ + Optional filter for which dependencies should be checked for sponsorable + owners. Only sponsorable owners of dependencies in this ecosystem will be + included. Used when onlyDependencies = true. + """ + ecosystem: DependencyGraphEcosystem + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Whether only sponsorables who own the viewer's dependencies will be + returned. Must be authenticated to use. Can check an organization instead + for their dependencies owned by sponsorables by passing + orgLoginForDependencies. + """ + onlyDependencies: Boolean = false + + """ + Ordering options for users and organizations returned from the connection. + """ + orderBy: SponsorableOrder = {field: LOGIN, direction: ASC} + + """ + Optional organization username for whose dependencies should be checked. + Used when onlyDependencies = true. Omit to check your own dependencies. If + you are not an administrator of the organization, only dependencies from its + public repositories will be considered. + """ + orgLoginForDependencies: String + ): SponsorableItemConnection! + + """ + Look up a topic by name. + """ + topic( + """ + The topic's name. + """ + name: String! + ): Topic + + """ + Lookup a user by login. + """ + user( + """ + The user's login. + """ + login: String! + ): User + + """ + The currently authenticated user. + """ + viewer: User! +} + +""" +Represents the client's rate limit. +""" +type RateLimit { + """ + The point cost for the current query counting against the rate limit. + """ + cost: Int! + + """ + The maximum number of points the client is permitted to consume in a 60 minute window. + """ + limit: Int! + + """ + The maximum number of nodes this query may return + """ + nodeCount: Int! + + """ + The number of points remaining in the current rate limit window. + """ + remaining: Int! + + """ + The time at which the current rate limit window resets in UTC epoch seconds. + """ + resetAt: DateTime! + + """ + The number of points used in the current rate limit window. + """ + used: Int! +} + +""" +Represents a subject that can be reacted on. +""" +interface Reactable { + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! +} + +""" +The connection type for User. +""" +type ReactingUserConnection { + """ + A list of edges. + """ + edges: [ReactingUserEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a user that's made a reaction. +""" +type ReactingUserEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + node: User! + + """ + The moment when the user made the reaction. + """ + reactedAt: DateTime! +} + +""" +An emoji reaction to a particular piece of content. +""" +type Reaction implements Node { + """ + Identifies the emoji reaction. + """ + content: ReactionContent! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The reactable piece of content + """ + reactable: Reactable! + + """ + Identifies the user who created this reaction. + """ + user: User +} + +""" +A list of reactions that have been left on the subject. +""" +type ReactionConnection { + """ + A list of edges. + """ + edges: [ReactionEdge] + + """ + A list of nodes. + """ + nodes: [Reaction] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! + + """ + Whether or not the authenticated user has left a reaction on the subject. + """ + viewerHasReacted: Boolean! +} + +""" +Emojis that can be attached to Issues, Pull Requests and Comments. +""" +enum ReactionContent { + """ + Represents the `:confused:` emoji. + """ + CONFUSED + + """ + Represents the `:eyes:` emoji. + """ + EYES + + """ + Represents the `:heart:` emoji. + """ + HEART + + """ + Represents the `:hooray:` emoji. + """ + HOORAY + + """ + Represents the `:laugh:` emoji. + """ + LAUGH + + """ + Represents the `:rocket:` emoji. + """ + ROCKET + + """ + Represents the `:-1:` emoji. + """ + THUMBS_DOWN + + """ + Represents the `:+1:` emoji. + """ + THUMBS_UP +} + +""" +An edge in a connection. +""" +type ReactionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Reaction +} + +""" +A group of emoji reactions to a particular piece of content. +""" +type ReactionGroup { + """ + Identifies the emoji reaction. + """ + content: ReactionContent! + + """ + Identifies when the reaction was created. + """ + createdAt: DateTime + + """ + Reactors to the reaction subject with the emotion represented by this reaction group. + """ + reactors( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ReactorConnection! + + """ + The subject that was reacted to. + """ + subject: Reactable! + + """ + Users who have reacted to the reaction subject with the emotion represented by this reaction group + """ + users( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ReactingUserConnection! @deprecated(reason: "Reactors can now be mannequins, bots, and organizations. Use the `reactors` field instead. Removal on 2021-10-01 UTC.") + + """ + Whether or not the authenticated user has left a reaction on the subject. + """ + viewerHasReacted: Boolean! +} + +""" +Ways in which lists of reactions can be ordered upon return. +""" +input ReactionOrder { + """ + The direction in which to order reactions by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order reactions by. + """ + field: ReactionOrderField! +} + +""" +A list of fields that reactions can be ordered by. +""" +enum ReactionOrderField { + """ + Allows ordering a list of reactions by when they were created. + """ + CREATED_AT +} + +""" +Types that can be assigned to reactions. +""" +union Reactor = Bot | Mannequin | Organization | User + +""" +The connection type for Reactor. +""" +type ReactorConnection { + """ + A list of edges. + """ + edges: [ReactorEdge] + + """ + A list of nodes. + """ + nodes: [Reactor] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents an author of a reaction. +""" +type ReactorEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The author of the reaction. + """ + node: Reactor! + + """ + The moment when the user made the reaction. + """ + reactedAt: DateTime! +} + +""" +Represents a 'ready_for_review' event on a given pull request. +""" +type ReadyForReviewEvent implements Node & UniformResourceLocatable { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + The HTTP path for this ready for review event. + """ + resourcePath: URI! + + """ + The HTTP URL for this ready for review event. + """ + url: URI! +} + +""" +Represents a Git reference. +""" +type Ref implements Node { + """ + A list of pull requests with this ref as the head ref. + """ + associatedPullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + The base ref name to filter the pull requests by. + """ + baseRefName: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + The head ref name to filter the pull requests by. + """ + headRefName: String + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pull requests returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the pull requests by. + """ + states: [PullRequestState!] + ): PullRequestConnection! + + """ + Branch protection rules for this ref + """ + branchProtectionRule: BranchProtectionRule + id: ID! + + """ + The ref name. + """ + name: String! + + """ + The ref's prefix, such as `refs/heads/` or `refs/tags/`. + """ + prefix: String! + + """ + Branch protection rules that are viewable by non-admins + """ + refUpdateRule: RefUpdateRule + + """ + The repository the ref belongs to. + """ + repository: Repository! + + """ + The object the ref points to. Returns null when object does not exist. + """ + target: GitObject +} + +""" +The connection type for Ref. +""" +type RefConnection { + """ + A list of edges. + """ + edges: [RefEdge] + + """ + A list of nodes. + """ + nodes: [Ref] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type RefEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Ref +} + +""" +Ways in which lists of git refs can be ordered upon return. +""" +input RefOrder { + """ + The direction in which to order refs by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order refs by. + """ + field: RefOrderField! +} + +""" +Properties by which ref connections can be ordered. +""" +enum RefOrderField { + """ + Order refs by their alphanumeric name + """ + ALPHABETICAL + + """ + Order refs by underlying commit date if the ref prefix is refs/tags/ + """ + TAG_COMMIT_DATE +} + +""" +A ref update rules for a viewer. +""" +type RefUpdateRule { + """ + Can this branch be deleted. + """ + allowsDeletions: Boolean! + + """ + Are force pushes allowed on this branch. + """ + allowsForcePushes: Boolean! + + """ + Can matching branches be created. + """ + blocksCreations: Boolean! + + """ + Identifies the protection rule pattern. + """ + pattern: String! + + """ + Number of approving reviews required to update matching branches. + """ + requiredApprovingReviewCount: Int + + """ + List of required status check contexts that must pass for commits to be accepted to matching branches. + """ + requiredStatusCheckContexts: [String] + + """ + Are reviews from code owners required to update matching branches. + """ + requiresCodeOwnerReviews: Boolean! + + """ + Are conversations required to be resolved before merging. + """ + requiresConversationResolution: Boolean! + + """ + Are merge commits prohibited from being pushed to this branch. + """ + requiresLinearHistory: Boolean! + + """ + Are commits required to be signed. + """ + requiresSignatures: Boolean! + + """ + Is the viewer allowed to dismiss reviews. + """ + viewerAllowedToDismissReviews: Boolean! + + """ + Can the viewer push to the branch + """ + viewerCanPush: Boolean! +} + +""" +Represents a 'referenced' event on a given `ReferencedSubject`. +""" +type ReferencedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the commit associated with the 'referenced' event. + """ + commit: Commit + + """ + Identifies the repository associated with the 'referenced' event. + """ + commitRepository: Repository! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Reference originated in a different repository. + """ + isCrossRepository: Boolean! + + """ + Checks if the commit message itself references the subject. Can be false in the case of a commit comment reference. + """ + isDirectReference: Boolean! + + """ + Object referenced by event. + """ + subject: ReferencedSubject! +} + +""" +Any referencable object +""" +union ReferencedSubject = Issue | PullRequest + +""" +Autogenerated input type of RegenerateEnterpriseIdentityProviderRecoveryCodes +""" +input RegenerateEnterpriseIdentityProviderRecoveryCodesInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set an identity provider. + """ + enterpriseId: ID! +} + +""" +Autogenerated return type of RegenerateEnterpriseIdentityProviderRecoveryCodes +""" +type RegenerateEnterpriseIdentityProviderRecoveryCodesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The identity provider for the enterprise. + """ + identityProvider: EnterpriseIdentityProvider +} + +""" +Autogenerated input type of RegenerateVerifiableDomainToken +""" +input RegenerateVerifiableDomainTokenInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the verifiable domain to regenerate the verification token of. + """ + id: ID! +} + +""" +Autogenerated return type of RegenerateVerifiableDomainToken +""" +type RegenerateVerifiableDomainTokenPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The verification token that was generated. + """ + verificationToken: String +} + +""" +Autogenerated input type of RejectDeployments +""" +input RejectDeploymentsInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Optional comment for rejecting deployments + """ + comment: String = "" + + """ + The ids of environments to reject deployments + """ + environmentIds: [ID!]! + + """ + The node ID of the workflow run containing the pending deployments. + """ + workflowRunId: ID! +} + +""" +Autogenerated return type of RejectDeployments +""" +type RejectDeploymentsPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The affected deployments. + """ + deployments: [Deployment!] +} + +""" +A release contains the content for a release. +""" +type Release implements Node & Reactable & UniformResourceLocatable { + """ + The author of the release + """ + author: User + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The description of the release. + """ + description: String + + """ + The description of this release rendered to HTML. + """ + descriptionHTML: HTML + id: ID! + + """ + Whether or not the release is a draft + """ + isDraft: Boolean! + + """ + Whether or not the release is the latest releast + """ + isLatest: Boolean! + + """ + Whether or not the release is a prerelease + """ + isPrerelease: Boolean! + + """ + A list of users mentioned in the release description + """ + mentions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection + + """ + The title of the release. + """ + name: String + + """ + Identifies the date and time when the release was created. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + List of releases assets which are dependent on this release. + """ + releaseAssets( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A list of names to filter the assets by. + """ + name: String + ): ReleaseAssetConnection! + + """ + The repository that the release belongs to. + """ + repository: Repository! + + """ + The HTTP path for this issue + """ + resourcePath: URI! + + """ + A description of the release, rendered to HTML without any links in it. + """ + shortDescriptionHTML( + """ + How many characters to return. + """ + limit: Int = 200 + ): HTML + + """ + The Git tag the release points to + """ + tag: Ref + + """ + The tag commit for this release. + """ + tagCommit: Commit + + """ + The name of the release's Git tag + """ + tagName: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this issue + """ + url: URI! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! +} + +""" +A release asset contains the content for a release asset. +""" +type ReleaseAsset implements Node { + """ + The asset's content-type + """ + contentType: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The number of times this asset was downloaded + """ + downloadCount: Int! + + """ + Identifies the URL where you can download the release asset via the browser. + """ + downloadUrl: URI! + id: ID! + + """ + Identifies the title of the release asset. + """ + name: String! + + """ + Release that the asset is associated with + """ + release: Release + + """ + The size (in bytes) of the asset + """ + size: Int! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The user that performed the upload + """ + uploadedBy: User! + + """ + Identifies the URL of the release asset. + """ + url: URI! +} + +""" +The connection type for ReleaseAsset. +""" +type ReleaseAssetConnection { + """ + A list of edges. + """ + edges: [ReleaseAssetEdge] + + """ + A list of nodes. + """ + nodes: [ReleaseAsset] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ReleaseAssetEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ReleaseAsset +} + +""" +The connection type for Release. +""" +type ReleaseConnection { + """ + A list of edges. + """ + edges: [ReleaseEdge] + + """ + A list of nodes. + """ + nodes: [Release] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ReleaseEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Release +} + +""" +Ways in which lists of releases can be ordered upon return. +""" +input ReleaseOrder { + """ + The direction in which to order releases by the specified field. + """ + direction: OrderDirection! + + """ + The field in which to order releases by. + """ + field: ReleaseOrderField! +} + +""" +Properties by which release connections can be ordered. +""" +enum ReleaseOrderField { + """ + Order releases by creation time + """ + CREATED_AT + + """ + Order releases alphabetically by name + """ + NAME +} + +""" +Autogenerated input type of RemoveAssigneesFromAssignable +""" +input RemoveAssigneesFromAssignableInput { + """ + The id of the assignable object to remove assignees from. + """ + assignableId: ID! + + """ + The id of users to remove as assignees. + """ + assigneeIds: [ID!]! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated return type of RemoveAssigneesFromAssignable +""" +type RemoveAssigneesFromAssignablePayload { + """ + The item that was unassigned. + """ + assignable: Assignable + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of RemoveEnterpriseAdmin +""" +input RemoveEnterpriseAdminInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Enterprise ID from which to remove the administrator. + """ + enterpriseId: ID! + + """ + The login of the user to remove as an administrator. + """ + login: String! +} + +""" +Autogenerated return type of RemoveEnterpriseAdmin +""" +type RemoveEnterpriseAdminPayload { + """ + The user who was removed as an administrator. + """ + admin: User + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated enterprise. + """ + enterprise: Enterprise + + """ + A message confirming the result of removing an administrator. + """ + message: String + + """ + The viewer performing the mutation. + """ + viewer: User +} + +""" +Autogenerated input type of RemoveEnterpriseIdentityProvider +""" +input RemoveEnterpriseIdentityProviderInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise from which to remove the identity provider. + """ + enterpriseId: ID! +} + +""" +Autogenerated return type of RemoveEnterpriseIdentityProvider +""" +type RemoveEnterpriseIdentityProviderPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The identity provider that was removed from the enterprise. + """ + identityProvider: EnterpriseIdentityProvider +} + +""" +Autogenerated input type of RemoveEnterpriseOrganization +""" +input RemoveEnterpriseOrganizationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise from which the organization should be removed. + """ + enterpriseId: ID! + + """ + The ID of the organization to remove from the enterprise. + """ + organizationId: ID! +} + +""" +Autogenerated return type of RemoveEnterpriseOrganization +""" +type RemoveEnterpriseOrganizationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated enterprise. + """ + enterprise: Enterprise + + """ + The organization that was removed from the enterprise. + """ + organization: Organization + + """ + The viewer performing the mutation. + """ + viewer: User +} + +""" +Autogenerated input type of RemoveEnterpriseSupportEntitlement +""" +input RemoveEnterpriseSupportEntitlementInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Enterprise which the admin belongs to. + """ + enterpriseId: ID! + + """ + The login of a member who will lose the support entitlement. + """ + login: String! +} + +""" +Autogenerated return type of RemoveEnterpriseSupportEntitlement +""" +type RemoveEnterpriseSupportEntitlementPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A message confirming the result of removing the support entitlement. + """ + message: String +} + +""" +Autogenerated input type of RemoveLabelsFromLabelable +""" +input RemoveLabelsFromLabelableInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ids of labels to remove. + """ + labelIds: [ID!]! + + """ + The id of the Labelable to remove labels from. + """ + labelableId: ID! +} + +""" +Autogenerated return type of RemoveLabelsFromLabelable +""" +type RemoveLabelsFromLabelablePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Labelable the labels were removed from. + """ + labelable: Labelable +} + +""" +Autogenerated input type of RemoveOutsideCollaborator +""" +input RemoveOutsideCollaboratorInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the organization to remove the outside collaborator from. + """ + organizationId: ID! + + """ + The ID of the outside collaborator to remove. + """ + userId: ID! +} + +""" +Autogenerated return type of RemoveOutsideCollaborator +""" +type RemoveOutsideCollaboratorPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The user that was removed as an outside collaborator. + """ + removedUser: User +} + +""" +Autogenerated input type of RemoveReaction +""" +input RemoveReactionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of the emoji reaction to remove. + """ + content: ReactionContent! + + """ + The Node ID of the subject to modify. + """ + subjectId: ID! +} + +""" +Autogenerated return type of RemoveReaction +""" +type RemoveReactionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The reaction object. + """ + reaction: Reaction + + """ + The reactable subject. + """ + subject: Reactable +} + +""" +Autogenerated input type of RemoveStar +""" +input RemoveStarInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Starrable ID to unstar. + """ + starrableId: ID! +} + +""" +Autogenerated return type of RemoveStar +""" +type RemoveStarPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The starrable. + """ + starrable: Starrable +} + +""" +Autogenerated input type of RemoveUpvote +""" +input RemoveUpvoteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion or comment to remove upvote. + """ + subjectId: ID! +} + +""" +Autogenerated return type of RemoveUpvote +""" +type RemoveUpvotePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The votable subject. + """ + subject: Votable +} + +""" +Represents a 'removed_from_project' event on a given issue or pull request. +""" +type RemovedFromProjectEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! +} + +""" +Represents a 'renamed' event on a given issue or pull request +""" +type RenamedTitleEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the current title of the issue or pull request. + """ + currentTitle: String! + id: ID! + + """ + Identifies the previous title of the issue or pull request. + """ + previousTitle: String! + + """ + Subject that was renamed. + """ + subject: RenamedTitleSubject! +} + +""" +An object which has a renamable title +""" +union RenamedTitleSubject = Issue | PullRequest + +""" +Autogenerated input type of ReopenIssue +""" +input ReopenIssueInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the issue to be opened. + """ + issueId: ID! +} + +""" +Autogenerated return type of ReopenIssue +""" +type ReopenIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue that was opened. + """ + issue: Issue +} + +""" +Autogenerated input type of ReopenPullRequest +""" +input ReopenPullRequestInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the pull request to be reopened. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of ReopenPullRequest +""" +type ReopenPullRequestPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request that was reopened. + """ + pullRequest: PullRequest +} + +""" +Represents a 'reopened' event on any `Closable`. +""" +type ReopenedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Object that was reopened. + """ + closable: Closable! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + The reason the issue state was changed to open. + """ + stateReason: IssueStateReason +} + +""" +Audit log entry for a repo.access event. +""" +type RepoAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI + + """ + The visibility of the repository + """ + visibility: RepoAccessAuditEntryVisibility +} + +""" +The privacy of a repository +""" +enum RepoAccessAuditEntryVisibility { + """ + The repository is visible only to users in the same business. + """ + INTERNAL + + """ + The repository is visible only to those with explicit access. + """ + PRIVATE + + """ + The repository is visible to everyone. + """ + PUBLIC +} + +""" +Audit log entry for a repo.add_member event. +""" +type RepoAddMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI + + """ + The visibility of the repository + """ + visibility: RepoAddMemberAuditEntryVisibility +} + +""" +The privacy of a repository +""" +enum RepoAddMemberAuditEntryVisibility { + """ + The repository is visible only to users in the same business. + """ + INTERNAL + + """ + The repository is visible only to those with explicit access. + """ + PRIVATE + + """ + The repository is visible to everyone. + """ + PUBLIC +} + +""" +Audit log entry for a repo.add_topic event. +""" +type RepoAddTopicAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TopicAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The name of the topic added to the repository + """ + topic: Topic + + """ + The name of the topic added to the repository + """ + topicName: String + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.archived event. +""" +type RepoArchivedAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI + + """ + The visibility of the repository + """ + visibility: RepoArchivedAuditEntryVisibility +} + +""" +The privacy of a repository +""" +enum RepoArchivedAuditEntryVisibility { + """ + The repository is visible only to users in the same business. + """ + INTERNAL + + """ + The repository is visible only to those with explicit access. + """ + PRIVATE + + """ + The repository is visible to everyone. + """ + PUBLIC +} + +""" +Audit log entry for a repo.change_merge_setting event. +""" +type RepoChangeMergeSettingAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + Whether the change was to enable (true) or disable (false) the merge type + """ + isEnabled: Boolean + + """ + The merge method affected by the change + """ + mergeType: RepoChangeMergeSettingAuditEntryMergeType + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The merge options available for pull requests to this repository. +""" +enum RepoChangeMergeSettingAuditEntryMergeType { + """ + The pull request is added to the base branch in a merge commit. + """ + MERGE + + """ + Commits from the pull request are added onto the base branch individually without a merge commit. + """ + REBASE + + """ + The pull request's commits are squashed into a single commit before they are merged to the base branch. + """ + SQUASH +} + +""" +Audit log entry for a repo.config.disable_anonymous_git_access event. +""" +type RepoConfigDisableAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.disable_collaborators_only event. +""" +type RepoConfigDisableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.disable_contributors_only event. +""" +type RepoConfigDisableContributorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.disable_sockpuppet_disallowed event. +""" +type RepoConfigDisableSockpuppetDisallowedAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.enable_anonymous_git_access event. +""" +type RepoConfigEnableAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.enable_collaborators_only event. +""" +type RepoConfigEnableCollaboratorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.enable_contributors_only event. +""" +type RepoConfigEnableContributorsOnlyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.enable_sockpuppet_disallowed event. +""" +type RepoConfigEnableSockpuppetDisallowedAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.lock_anonymous_git_access event. +""" +type RepoConfigLockAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.config.unlock_anonymous_git_access event. +""" +type RepoConfigUnlockAnonymousGitAccessAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repo.create event. +""" +type RepoCreateAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The name of the parent repository for this forked repository. + """ + forkParentName: String + + """ + The name of the root repository for this network. + """ + forkSourceName: String + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI + + """ + The visibility of the repository + """ + visibility: RepoCreateAuditEntryVisibility +} + +""" +The privacy of a repository +""" +enum RepoCreateAuditEntryVisibility { + """ + The repository is visible only to users in the same business. + """ + INTERNAL + + """ + The repository is visible only to those with explicit access. + """ + PRIVATE + + """ + The repository is visible to everyone. + """ + PUBLIC +} + +""" +Audit log entry for a repo.destroy event. +""" +type RepoDestroyAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI + + """ + The visibility of the repository + """ + visibility: RepoDestroyAuditEntryVisibility +} + +""" +The privacy of a repository +""" +enum RepoDestroyAuditEntryVisibility { + """ + The repository is visible only to users in the same business. + """ + INTERNAL + + """ + The repository is visible only to those with explicit access. + """ + PRIVATE + + """ + The repository is visible to everyone. + """ + PUBLIC +} + +""" +Audit log entry for a repo.remove_member event. +""" +type RepoRemoveMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI + + """ + The visibility of the repository + """ + visibility: RepoRemoveMemberAuditEntryVisibility +} + +""" +The privacy of a repository +""" +enum RepoRemoveMemberAuditEntryVisibility { + """ + The repository is visible only to users in the same business. + """ + INTERNAL + + """ + The repository is visible only to those with explicit access. + """ + PRIVATE + + """ + The repository is visible to everyone. + """ + PUBLIC +} + +""" +Audit log entry for a repo.remove_topic event. +""" +type RepoRemoveTopicAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TopicAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The name of the topic added to the repository + """ + topic: Topic + + """ + The name of the topic added to the repository + """ + topicName: String + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The reasons a piece of content can be reported or minimized. +""" +enum ReportedContentClassifiers { + """ + An abusive or harassing piece of content + """ + ABUSE + + """ + A duplicated piece of content + """ + DUPLICATE + + """ + An irrelevant piece of content + """ + OFF_TOPIC + + """ + An outdated piece of content + """ + OUTDATED + + """ + The content has been resolved + """ + RESOLVED + + """ + A spammy piece of content + """ + SPAM +} + +""" +A repository contains the content for a project. +""" +type Repository implements Node & PackageOwner & ProjectOwner & ProjectV2Recent & RepositoryInfo & Starrable & Subscribable & UniformResourceLocatable { + """ + Whether or not a pull request head branch that is behind its base branch can + always be updated even if it is not required to be up to date before merging. + """ + allowUpdateBranch: Boolean! + + """ + A list of users that can be assigned to issues in this repository. + """ + assignableUsers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filters users with query on user name and login + """ + query: String + ): UserConnection! + + """ + Whether or not Auto-merge can be enabled on pull requests in this repository. + """ + autoMergeAllowed: Boolean! + + """ + A list of branch protection rules for this repository. + """ + branchProtectionRules( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): BranchProtectionRuleConnection! + + """ + Returns the code of conduct for this repository + """ + codeOfConduct: CodeOfConduct + + """ + Information extracted from the repository's `CODEOWNERS` file. + """ + codeowners( + """ + The ref name used to return the associated `CODEOWNERS` file. + """ + refName: String + ): RepositoryCodeowners + + """ + A list of collaborators associated with the repository. + """ + collaborators( + """ + Collaborators affiliation level with a repository. + """ + affiliation: CollaboratorAffiliation + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filters users with query on user name and login + """ + query: String + ): RepositoryCollaboratorConnection + + """ + A list of commit comments associated with the repository. + """ + commitComments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CommitCommentConnection! + + """ + Returns a list of contact links associated to the repository + """ + contactLinks: [RepositoryContactLink!] + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The Ref associated with the repository's default branch. + """ + defaultBranchRef: Ref + + """ + Whether or not branches are automatically deleted when merged in this repository. + """ + deleteBranchOnMerge: Boolean! + + """ + A list of deploy keys that are on this repository. + """ + deployKeys( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DeployKeyConnection! + + """ + Deployments associated with the repository + """ + deployments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Environments to list deployments for + """ + environments: [String!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for deployments returned from the connection. + """ + orderBy: DeploymentOrder = {field: CREATED_AT, direction: ASC} + ): DeploymentConnection! + + """ + The description of the repository. + """ + description: String + + """ + The description of the repository rendered to HTML. + """ + descriptionHTML: HTML! + + """ + Returns a single discussion from the current repository by number. + """ + discussion( + """ + The number for the discussion to be returned. + """ + number: Int! + ): Discussion + + """ + A list of discussion categories that are available in the repository. + """ + discussionCategories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filter by categories that are assignable by the viewer. + """ + filterByAssignable: Boolean = false + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DiscussionCategoryConnection! + + """ + A list of discussions that have been opened in the repository. + """ + discussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Only include discussions that belong to the category with this ID. + """ + categoryId: ID = null + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for discussions returned from the connection. + """ + orderBy: DiscussionOrder = {field: UPDATED_AT, direction: DESC} + ): DiscussionConnection! + + """ + The number of kilobytes this repository occupies on disk. + """ + diskUsage: Int + + """ + Returns a single active environment from the current repository by name. + """ + environment( + """ + The name of the environment to be returned. + """ + name: String! + ): Environment + + """ + A list of environments that are in this repository. + """ + environments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): EnvironmentConnection! + + """ + Returns how many forks there are of this repository in the whole network. + """ + forkCount: Int! + + """ + Whether this repository allows forks. + """ + forkingAllowed: Boolean! + + """ + A list of direct forked repositories. + """ + forks( + """ + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. + """ + affiliations: [RepositoryAffiliation] + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder + + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR] + + """ + If non-null, filters repositories according to privacy + """ + privacy: RepositoryPrivacy + ): RepositoryConnection! + + """ + The funding links for this repository + """ + fundingLinks: [FundingLink!]! + + """ + Indicates if the repository has issues feature enabled. + """ + hasIssuesEnabled: Boolean! + + """ + Indicates if the repository has the Projects feature enabled. + """ + hasProjectsEnabled: Boolean! + + """ + Indicates if the repository has wiki feature enabled. + """ + hasWikiEnabled: Boolean! + + """ + The repository's URL. + """ + homepageUrl: URI + id: ID! + + """ + The interaction ability settings for this repository. + """ + interactionAbility: RepositoryInteractionAbility + + """ + Indicates if the repository is unmaintained. + """ + isArchived: Boolean! + + """ + Returns true if blank issue creation is allowed + """ + isBlankIssuesEnabled: Boolean! + + """ + Returns whether or not this repository disabled. + """ + isDisabled: Boolean! + + """ + Returns whether or not this repository is empty. + """ + isEmpty: Boolean! + + """ + Identifies if the repository is a fork. + """ + isFork: Boolean! + + """ + Indicates if a repository is either owned by an organization, or is a private fork of an organization repository. + """ + isInOrganization: Boolean! + + """ + Indicates if the repository has been locked or not. + """ + isLocked: Boolean! + + """ + Identifies if the repository is a mirror. + """ + isMirror: Boolean! + + """ + Identifies if the repository is private or internal. + """ + isPrivate: Boolean! + + """ + Returns true if this repository has a security policy + """ + isSecurityPolicyEnabled: Boolean + + """ + Identifies if the repository is a template that can be used to generate new repositories. + """ + isTemplate: Boolean! + + """ + Is this repository a user configuration repository? + """ + isUserConfigurationRepository: Boolean! + + """ + Returns a single issue from the current repository by number. + """ + issue( + """ + The number for the issue to be returned. + """ + number: Int! + ): Issue + + """ + Returns a single issue-like object from the current repository by number. + """ + issueOrPullRequest( + """ + The number for the issue to be returned. + """ + number: Int! + ): IssueOrPullRequest + + """ + Returns a list of issue templates associated to the repository + """ + issueTemplates: [IssueTemplate!] + + """ + A list of issues that have been opened in the repository. + """ + issues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for issues returned from the connection. + """ + filterBy: IssueFilters + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issues returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the issues by. + """ + states: [IssueState!] + ): IssueConnection! + + """ + Returns a single label by name + """ + label( + """ + Label name + """ + name: String! + ): Label + + """ + A list of labels associated with the repository. + """ + labels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for labels returned from the connection. + """ + orderBy: LabelOrder = {field: CREATED_AT, direction: ASC} + + """ + If provided, searches labels by name and description. + """ + query: String + ): LabelConnection + + """ + A list containing a breakdown of the language composition of the repository. + """ + languages( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: LanguageOrder + ): LanguageConnection + + """ + Get the latest release for the repository if one exists. + """ + latestRelease: Release + + """ + The license associated with the repository + """ + licenseInfo: License + + """ + The reason the repository has been locked. + """ + lockReason: RepositoryLockReason + + """ + A list of Users that can be mentioned in the context of the repository. + """ + mentionableUsers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filters users with query on user name and login + """ + query: String + ): UserConnection! + + """ + Whether or not PRs are merged with a merge commit on this repository. + """ + mergeCommitAllowed: Boolean! + + """ + Returns a single milestone from the current repository by number. + """ + milestone( + """ + The number for the milestone to be returned. + """ + number: Int! + ): Milestone + + """ + A list of milestones associated with the repository. + """ + milestones( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for milestones. + """ + orderBy: MilestoneOrder + + """ + Filters milestones with a query on the title + """ + query: String + + """ + Filter by the state of the milestones. + """ + states: [MilestoneState!] + ): MilestoneConnection + + """ + The repository's original mirror URL. + """ + mirrorUrl: URI + + """ + The name of the repository. + """ + name: String! + + """ + The repository's name with owner. + """ + nameWithOwner: String! + + """ + A Git object in the repository + """ + object( + """ + A Git revision expression suitable for rev-parse + """ + expression: String + + """ + The Git object ID + """ + oid: GitObjectID + ): GitObject + + """ + The image used to represent this repository in Open Graph data. + """ + openGraphImageUrl: URI! + + """ + The User owner of the repository. + """ + owner: RepositoryOwner! + + """ + A list of packages under the owner. + """ + packages( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Find packages by their names. + """ + names: [String] + + """ + Ordering of the returned packages. + """ + orderBy: PackageOrder = {field: CREATED_AT, direction: DESC} + + """ + Filter registry package by type. + """ + packageType: PackageType + + """ + Find packages in a repository by ID. + """ + repositoryId: ID + ): PackageConnection! + + """ + The repository parent, if this is a fork. + """ + parent: Repository + + """ + A list of discussions that have been pinned in this repository. + """ + pinnedDiscussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PinnedDiscussionConnection! + + """ + A list of pinned issues for this repository. + """ + pinnedIssues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PinnedIssueConnection + + """ + The primary language of the repository's code. + """ + primaryLanguage: Language + + """ + Find project by number. + """ + project( + """ + The project number to find. + """ + number: Int! + ): Project + + """ + Finds and returns the Project (beta) according to the provided Project (beta) number. + """ + projectNext( + """ + The ProjectNext number. + """ + number: Int! + ): ProjectNext @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Finds and returns the Project according to the provided Project number. + """ + projectV2( + """ + The Project number. + """ + number: Int! + ): ProjectV2 + + """ + A list of projects under the owner. + """ + projects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for projects returned from the connection + """ + orderBy: ProjectOrder + + """ + Query to search projects by, currently only searching by name. + """ + search: String + + """ + A list of states to filter the projects by. + """ + states: [ProjectState!] + ): ProjectConnection! + + """ + List of projects (beta) linked to this repository. + """ + projectsNext( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A project (beta) to search for linked to the repo. + """ + query: String + + """ + How to order the returned project (beta) objects. + """ + sortBy: ProjectNextOrderField = TITLE + ): ProjectNextConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The HTTP path listing the repository's projects + """ + projectsResourcePath: URI! + + """ + The HTTP URL listing the repository's projects + """ + projectsUrl: URI! + + """ + List of projects linked to this repository. + """ + projectsV2( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + How to order the returned projects. + """ + orderBy: ProjectV2Order = {field: NUMBER, direction: DESC} + + """ + A project to search for linked to the repo. + """ + query: String + ): ProjectV2Connection! + + """ + Returns a single pull request from the current repository by number. + """ + pullRequest( + """ + The number for the pull request to be returned. + """ + number: Int! + ): PullRequest + + """ + Returns a list of pull request templates associated to the repository + """ + pullRequestTemplates: [PullRequestTemplate!] + + """ + A list of pull requests that have been opened in the repository. + """ + pullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + The base ref name to filter the pull requests by. + """ + baseRefName: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + The head ref name to filter the pull requests by. + """ + headRefName: String + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pull requests returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the pull requests by. + """ + states: [PullRequestState!] + ): PullRequestConnection! + + """ + Identifies when the repository was last pushed to. + """ + pushedAt: DateTime + + """ + Whether or not rebase-merging is enabled on this repository. + """ + rebaseMergeAllowed: Boolean! + + """ + Recent projects that this user has modified in the context of the owner. + """ + recentProjects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2Connection! + + """ + Fetch a given ref from the repository + """ + ref( + """ + The ref to retrieve. Fully qualified matches are checked in order + (`refs/heads/master`) before falling back onto checks for short name matches (`master`). + """ + qualifiedName: String! + ): Ref + + """ + Fetch a list of refs from the repository + """ + refs( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + DEPRECATED: use orderBy. The ordering direction. + """ + direction: OrderDirection + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for refs returned from the connection. + """ + orderBy: RefOrder + + """ + Filters refs with query on name + """ + query: String + + """ + A ref name prefix like `refs/heads/`, `refs/tags/`, etc. + """ + refPrefix: String! + ): RefConnection + + """ + Lookup a single release given various criteria. + """ + release( + """ + The name of the Tag the Release was created from + """ + tagName: String! + ): Release + + """ + List of releases which are dependent on this repository. + """ + releases( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: ReleaseOrder + ): ReleaseConnection! + + """ + A list of applied repository-topic associations for this repository. + """ + repositoryTopics( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RepositoryTopicConnection! + + """ + The HTTP path for this repository + """ + resourcePath: URI! + + """ + The security policy URL. + """ + securityPolicyUrl: URI + + """ + A description of the repository, rendered to HTML without any links in it. + """ + shortDescriptionHTML( + """ + How many characters to return. + """ + limit: Int = 200 + ): HTML! + + """ + Whether or not squash-merging is enabled on this repository. + """ + squashMergeAllowed: Boolean! + + """ + Whether a squash merge commit can use the pull request title as default. + """ + squashPrTitleUsedAsDefault: Boolean! + + """ + The SSH URL to clone this repository + """ + sshUrl: GitSSHRemote! + + """ + Returns a count of how many stargazers there are on this object + """ + stargazerCount: Int! + + """ + A list of users who have starred this starrable. + """ + stargazers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: StarOrder + ): StargazerConnection! + + """ + Returns a list of all submodules in this repository parsed from the + .gitmodules file as of the default branch's HEAD commit. + """ + submodules( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): SubmoduleConnection! + + """ + Temporary authentication token for cloning this repository. + """ + tempCloneToken: String + + """ + The repository from which this repository was generated, if any. + """ + templateRepository: Repository + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this repository + """ + url: URI! + + """ + Whether this repository has a custom image to use with Open Graph as opposed to being represented by the owner's avatar. + """ + usesCustomOpenGraphImage: Boolean! + + """ + Indicates whether the viewer has admin permissions on this repository. + """ + viewerCanAdminister: Boolean! + + """ + Can the current viewer create new projects on this owner. + """ + viewerCanCreateProjects: Boolean! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Indicates whether the viewer can update the topics of this repository. + """ + viewerCanUpdateTopics: Boolean! + + """ + The last commit email for the viewer. + """ + viewerDefaultCommitEmail: String + + """ + The last used merge method by the viewer or the default for the repository. + """ + viewerDefaultMergeMethod: PullRequestMergeMethod! + + """ + Returns a boolean indicating whether the viewing user has starred this starrable. + """ + viewerHasStarred: Boolean! + + """ + The users permission level on the repository. Will return null if authenticated as an GitHub App. + """ + viewerPermission: RepositoryPermission + + """ + A list of emails this viewer can commit with. + """ + viewerPossibleCommitEmails: [String!] + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState + + """ + Indicates the repository's visibility level. + """ + visibility: RepositoryVisibility! + + """ + A list of vulnerability alerts that are on this repository. + """ + vulnerabilityAlerts( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter by the state of the alert + """ + states: [RepositoryVulnerabilityAlertState!] + ): RepositoryVulnerabilityAlertConnection + + """ + A list of users watching the repository. + """ + watchers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserConnection! +} + +""" +The affiliation of a user to a repository +""" +enum RepositoryAffiliation { + """ + Repositories that the user has been added to as a collaborator. + """ + COLLABORATOR + + """ + Repositories that the user has access to through being a member of an + organization. This includes every repository on every team that the user is on. + """ + ORGANIZATION_MEMBER + + """ + Repositories that are owned by the authenticated user. + """ + OWNER +} + +""" +Metadata for an audit entry with action repo.* +""" +interface RepositoryAuditEntryData { + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI +} + +""" +Information extracted from a repository's `CODEOWNERS` file. +""" +type RepositoryCodeowners { + """ + Any problems that were encountered while parsing the `CODEOWNERS` file. + """ + errors: [RepositoryCodeownersError!]! +} + +""" +An error in a `CODEOWNERS` file. +""" +type RepositoryCodeownersError { + """ + The column number where the error occurs. + """ + column: Int! + + """ + A short string describing the type of error. + """ + kind: String! + + """ + The line number where the error occurs. + """ + line: Int! + + """ + A complete description of the error, combining information from other fields. + """ + message: String! + + """ + The path to the file when the error occurs. + """ + path: String! + + """ + The content of the line where the error occurs. + """ + source: String! + + """ + A suggestion of how to fix the error. + """ + suggestion: String +} + +""" +The connection type for User. +""" +type RepositoryCollaboratorConnection { + """ + A list of edges. + """ + edges: [RepositoryCollaboratorEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a user who is a collaborator of a repository. +""" +type RepositoryCollaboratorEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + node: User! + + """ + The permission the user has on the repository. + """ + permission: RepositoryPermission! + + """ + A list of sources for the user's access to the repository. + """ + permissionSources: [PermissionSource!] +} + +""" +A list of repositories owned by the subject. +""" +type RepositoryConnection { + """ + A list of edges. + """ + edges: [RepositoryEdge] + + """ + A list of nodes. + """ + nodes: [Repository] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! + + """ + The total size in kilobytes of all repositories in the connection. + """ + totalDiskUsage: Int! +} + +""" +A repository contact link. +""" +type RepositoryContactLink { + """ + The contact link purpose. + """ + about: String! + + """ + The contact link name. + """ + name: String! + + """ + The contact link URL. + """ + url: URI! +} + +""" +The reason a repository is listed as 'contributed'. +""" +enum RepositoryContributionType { + """ + Created a commit + """ + COMMIT + + """ + Created an issue + """ + ISSUE + + """ + Created a pull request + """ + PULL_REQUEST + + """ + Reviewed a pull request + """ + PULL_REQUEST_REVIEW + + """ + Created the repository + """ + REPOSITORY +} + +""" +Represents an author of discussions in repositories. +""" +interface RepositoryDiscussionAuthor { + """ + Discussions this user has started. + """ + repositoryDiscussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter discussions to only those that have been answered or not. Defaults to + including both answered and unanswered discussions. + """ + answered: Boolean = null + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for discussions returned from the connection. + """ + orderBy: DiscussionOrder = {field: CREATED_AT, direction: DESC} + + """ + Filter discussions to only those in a specific repository. + """ + repositoryId: ID + ): DiscussionConnection! +} + +""" +Represents an author of discussion comments in repositories. +""" +interface RepositoryDiscussionCommentAuthor { + """ + Discussion comments this user has authored. + """ + repositoryDiscussionComments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter discussion comments to only those that were marked as the answer + """ + onlyAnswers: Boolean = false + + """ + Filter discussion comments to only those in a specific repository. + """ + repositoryId: ID + ): DiscussionCommentConnection! +} + +""" +An edge in a connection. +""" +type RepositoryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Repository +} + +""" +A subset of repository info. +""" +interface RepositoryInfo { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The description of the repository. + """ + description: String + + """ + The description of the repository rendered to HTML. + """ + descriptionHTML: HTML! + + """ + Returns how many forks there are of this repository in the whole network. + """ + forkCount: Int! + + """ + Indicates if the repository has issues feature enabled. + """ + hasIssuesEnabled: Boolean! + + """ + Indicates if the repository has the Projects feature enabled. + """ + hasProjectsEnabled: Boolean! + + """ + Indicates if the repository has wiki feature enabled. + """ + hasWikiEnabled: Boolean! + + """ + The repository's URL. + """ + homepageUrl: URI + + """ + Indicates if the repository is unmaintained. + """ + isArchived: Boolean! + + """ + Identifies if the repository is a fork. + """ + isFork: Boolean! + + """ + Indicates if a repository is either owned by an organization, or is a private fork of an organization repository. + """ + isInOrganization: Boolean! + + """ + Indicates if the repository has been locked or not. + """ + isLocked: Boolean! + + """ + Identifies if the repository is a mirror. + """ + isMirror: Boolean! + + """ + Identifies if the repository is private or internal. + """ + isPrivate: Boolean! + + """ + Identifies if the repository is a template that can be used to generate new repositories. + """ + isTemplate: Boolean! + + """ + The license associated with the repository + """ + licenseInfo: License + + """ + The reason the repository has been locked. + """ + lockReason: RepositoryLockReason + + """ + The repository's original mirror URL. + """ + mirrorUrl: URI + + """ + The name of the repository. + """ + name: String! + + """ + The repository's name with owner. + """ + nameWithOwner: String! + + """ + The image used to represent this repository in Open Graph data. + """ + openGraphImageUrl: URI! + + """ + The User owner of the repository. + """ + owner: RepositoryOwner! + + """ + Identifies when the repository was last pushed to. + """ + pushedAt: DateTime + + """ + The HTTP path for this repository + """ + resourcePath: URI! + + """ + A description of the repository, rendered to HTML without any links in it. + """ + shortDescriptionHTML( + """ + How many characters to return. + """ + limit: Int = 200 + ): HTML! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this repository + """ + url: URI! + + """ + Whether this repository has a custom image to use with Open Graph as opposed to being represented by the owner's avatar. + """ + usesCustomOpenGraphImage: Boolean! + + """ + Indicates the repository's visibility level. + """ + visibility: RepositoryVisibility! +} + +""" +Repository interaction limit that applies to this object. +""" +type RepositoryInteractionAbility { + """ + The time the currently active limit expires. + """ + expiresAt: DateTime + + """ + The current limit that is enabled on this object. + """ + limit: RepositoryInteractionLimit! + + """ + The origin of the currently active interaction limit. + """ + origin: RepositoryInteractionLimitOrigin! +} + +""" +A repository interaction limit. +""" +enum RepositoryInteractionLimit { + """ + Users that are not collaborators will not be able to interact with the repository. + """ + COLLABORATORS_ONLY + + """ + Users that have not previously committed to a repository’s default branch will be unable to interact with the repository. + """ + CONTRIBUTORS_ONLY + + """ + Users that have recently created their account will be unable to interact with the repository. + """ + EXISTING_USERS + + """ + No interaction limits are enabled. + """ + NO_LIMIT +} + +""" +The length for a repository interaction limit to be enabled for. +""" +enum RepositoryInteractionLimitExpiry { + """ + The interaction limit will expire after 1 day. + """ + ONE_DAY + + """ + The interaction limit will expire after 1 month. + """ + ONE_MONTH + + """ + The interaction limit will expire after 1 week. + """ + ONE_WEEK + + """ + The interaction limit will expire after 6 months. + """ + SIX_MONTHS + + """ + The interaction limit will expire after 3 days. + """ + THREE_DAYS +} + +""" +Indicates where an interaction limit is configured. +""" +enum RepositoryInteractionLimitOrigin { + """ + A limit that is configured at the organization level. + """ + ORGANIZATION + + """ + A limit that is configured at the repository level. + """ + REPOSITORY + + """ + A limit that is configured at the user-wide level. + """ + USER +} + +""" +An invitation for a user to be added to a repository. +""" +type RepositoryInvitation implements Node { + """ + The email address that received the invitation. + """ + email: String + id: ID! + + """ + The user who received the invitation. + """ + invitee: User + + """ + The user who created the invitation. + """ + inviter: User! + + """ + The permalink for this repository invitation. + """ + permalink: URI! + + """ + The permission granted on this repository by this invitation. + """ + permission: RepositoryPermission! + + """ + The Repository the user is invited to. + """ + repository: RepositoryInfo +} + +""" +A list of repository invitations. +""" +type RepositoryInvitationConnection { + """ + A list of edges. + """ + edges: [RepositoryInvitationEdge] + + """ + A list of nodes. + """ + nodes: [RepositoryInvitation] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type RepositoryInvitationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RepositoryInvitation +} + +""" +Ordering options for repository invitation connections. +""" +input RepositoryInvitationOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order repository invitations by. + """ + field: RepositoryInvitationOrderField! +} + +""" +Properties by which repository invitation connections can be ordered. +""" +enum RepositoryInvitationOrderField { + """ + Order repository invitations by creation time + """ + CREATED_AT +} + +""" +The possible reasons a given repository could be in a locked state. +""" +enum RepositoryLockReason { + """ + The repository is locked due to a billing related reason. + """ + BILLING + + """ + The repository is locked due to a migration. + """ + MIGRATING + + """ + The repository is locked due to a move. + """ + MOVING + + """ + The repository is locked due to a rename. + """ + RENAME +} + +""" +An Octoshift repository migration. +""" +type RepositoryMigration implements Migration & Node { + """ + The Octoshift migration flag to continue on error. + """ + continueOnError: Boolean! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The reason the migration failed. + """ + failureReason: String + id: ID! + + """ + The URL for the migration log (expires 1 day after migration completes). + """ + migrationLogUrl: URI + + """ + The Octoshift migration source. + """ + migrationSource: MigrationSource! + + """ + The target repository name. + """ + repositoryName: String! + + """ + The Octoshift migration source URL. + """ + sourceUrl: URI! + + """ + The Octoshift migration state. + """ + state: MigrationState! +} + +""" +The connection type for RepositoryMigration. +""" +type RepositoryMigrationConnection { + """ + A list of edges. + """ + edges: [RepositoryMigrationEdge] + + """ + A list of nodes. + """ + nodes: [RepositoryMigration] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a repository migration. +""" +type RepositoryMigrationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RepositoryMigration +} + +""" +Ordering options for repository migrations. +""" +input RepositoryMigrationOrder { + """ + The ordering direction. + """ + direction: RepositoryMigrationOrderDirection! + + """ + The field to order repository migrations by. + """ + field: RepositoryMigrationOrderField! +} + +""" +Possible directions in which to order a list of repository migrations when provided an `orderBy` argument. +""" +enum RepositoryMigrationOrderDirection { + """ + Specifies an ascending order for a given `orderBy` argument. + """ + ASC + + """ + Specifies a descending order for a given `orderBy` argument. + """ + DESC +} + +""" +Properties by which repository migrations can be ordered. +""" +enum RepositoryMigrationOrderField { + """ + Order mannequins why when they were created. + """ + CREATED_AT +} + +""" +Represents a object that belongs to a repository. +""" +interface RepositoryNode { + """ + The repository associated with this node. + """ + repository: Repository! +} + +""" +Ordering options for repository connections +""" +input RepositoryOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order repositories by. + """ + field: RepositoryOrderField! +} + +""" +Properties by which repository connections can be ordered. +""" +enum RepositoryOrderField { + """ + Order repositories by creation time + """ + CREATED_AT + + """ + Order repositories by name + """ + NAME + + """ + Order repositories by push time + """ + PUSHED_AT + + """ + Order repositories by number of stargazers + """ + STARGAZERS + + """ + Order repositories by update time + """ + UPDATED_AT +} + +""" +Represents an owner of a Repository. +""" +interface RepositoryOwner { + """ + A URL pointing to the owner's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + id: ID! + + """ + The username used to login. + """ + login: String! + + """ + A list of repositories that the user owns. + """ + repositories( + """ + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. + """ + affiliations: [RepositoryAffiliation] + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If non-null, filters repositories according to whether they are forks of another repository + """ + isFork: Boolean + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder + + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR] + + """ + If non-null, filters repositories according to privacy + """ + privacy: RepositoryPrivacy + ): RepositoryConnection! + + """ + Find Repository. + """ + repository( + """ + Follow repository renames. If disabled, a repository referenced by its old name will return an error. + """ + followRenames: Boolean = true + + """ + Name of Repository to find. + """ + name: String! + ): Repository + + """ + The HTTP URL for the owner. + """ + resourcePath: URI! + + """ + The HTTP URL for the owner. + """ + url: URI! +} + +""" +The access level to a repository +""" +enum RepositoryPermission { + """ + Can read, clone, and push to this repository. Can also manage issues, pull + requests, and repository settings, including adding collaborators + """ + ADMIN + + """ + Can read, clone, and push to this repository. They can also manage issues, pull requests, and some repository settings + """ + MAINTAIN + + """ + Can read and clone this repository. Can also open and comment on issues and pull requests + """ + READ + + """ + Can read and clone this repository. Can also manage issues and pull requests + """ + TRIAGE + + """ + Can read, clone, and push to this repository. Can also manage issues and pull requests + """ + WRITE +} + +""" +The privacy of a repository +""" +enum RepositoryPrivacy { + """ + Private + """ + PRIVATE + + """ + Public + """ + PUBLIC +} + +""" +A repository-topic connects a repository to a topic. +""" +type RepositoryTopic implements Node & UniformResourceLocatable { + id: ID! + + """ + The HTTP path for this repository-topic. + """ + resourcePath: URI! + + """ + The topic. + """ + topic: Topic! + + """ + The HTTP URL for this repository-topic. + """ + url: URI! +} + +""" +The connection type for RepositoryTopic. +""" +type RepositoryTopicConnection { + """ + A list of edges. + """ + edges: [RepositoryTopicEdge] + + """ + A list of nodes. + """ + nodes: [RepositoryTopic] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type RepositoryTopicEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RepositoryTopic +} + +""" +The repository's visibility level. +""" +enum RepositoryVisibility { + """ + The repository is visible only to users in the same business. + """ + INTERNAL + + """ + The repository is visible only to those with explicit access. + """ + PRIVATE + + """ + The repository is visible to everyone. + """ + PUBLIC +} + +""" +Audit log entry for a repository_visibility_change.disable event. +""" +type RepositoryVisibilityChangeDisableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a repository_visibility_change.enable event. +""" +type RepositoryVisibilityChangeEnableAuditEntry implements AuditEntry & EnterpriseAuditEntryData & Node & OrganizationAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + + """ + The HTTP path for this enterprise. + """ + enterpriseResourcePath: URI + + """ + The slug of the enterprise. + """ + enterpriseSlug: String + + """ + The HTTP URL for this enterprise. + """ + enterpriseUrl: URI + id: ID! + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +A Dependabot alert for a repository with a dependency affected by a security vulnerability. +""" +type RepositoryVulnerabilityAlert implements Node & RepositoryNode { + """ + When was the alert created? + """ + createdAt: DateTime! + + """ + The associated Dependabot update + """ + dependabotUpdate: DependabotUpdate + + """ + The reason the alert was dismissed + """ + dismissReason: String + + """ + When was the alert dismissed? + """ + dismissedAt: DateTime + + """ + The user who dismissed the alert + """ + dismisser: User + + """ + The reason the alert was marked as fixed. + """ + fixReason: String @deprecated(reason: "The `fixReason` field is being removed. You can still use `fixedAt` and `dismissReason`. Removal on 2022-10-01 UTC.") + + """ + When was the alert fixed? + """ + fixedAt: DateTime + id: ID! + + """ + Identifies the alert number. + """ + number: Int! + + """ + The associated repository + """ + repository: Repository! + + """ + The associated security advisory + """ + securityAdvisory: SecurityAdvisory + + """ + The associated security vulnerability + """ + securityVulnerability: SecurityVulnerability + + """ + Identifies the state of the alert. + """ + state: RepositoryVulnerabilityAlertState! + + """ + The vulnerable manifest filename + """ + vulnerableManifestFilename: String! + + """ + The vulnerable manifest path + """ + vulnerableManifestPath: String! + + """ + The vulnerable requirements + """ + vulnerableRequirements: String +} + +""" +The connection type for RepositoryVulnerabilityAlert. +""" +type RepositoryVulnerabilityAlertConnection { + """ + A list of edges. + """ + edges: [RepositoryVulnerabilityAlertEdge] + + """ + A list of nodes. + """ + nodes: [RepositoryVulnerabilityAlert] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type RepositoryVulnerabilityAlertEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RepositoryVulnerabilityAlert +} + +""" +The possible states of an alert +""" +enum RepositoryVulnerabilityAlertState { + """ + An alert that has been manually closed by a user. + """ + DISMISSED + + """ + An alert that has been resolved by a code change. + """ + FIXED + + """ + An alert that is still open. + """ + OPEN +} + +""" +Autogenerated input type of RequestReviews +""" +input RequestReviewsInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the pull request to modify. + """ + pullRequestId: ID! + + """ + The Node IDs of the team to request. + """ + teamIds: [ID!] + + """ + Add users to the set rather than replace. + """ + union: Boolean + + """ + The Node IDs of the user to request. + """ + userIds: [ID!] +} + +""" +Autogenerated return type of RequestReviews +""" +type RequestReviewsPayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pull request that is getting requests. + """ + pullRequest: PullRequest + + """ + The edge from the pull request to the requested reviewers. + """ + requestedReviewersEdge: UserEdge +} + +""" +The possible states that can be requested when creating a check run. +""" +enum RequestableCheckStatusState { + """ + The check suite or run has been completed. + """ + COMPLETED + + """ + The check suite or run is in progress. + """ + IN_PROGRESS + + """ + The check suite or run is in pending state. + """ + PENDING + + """ + The check suite or run has been queued. + """ + QUEUED + + """ + The check suite or run is in waiting state. + """ + WAITING +} + +""" +Types that can be requested reviewers. +""" +union RequestedReviewer = Mannequin | Team | User + +""" +The connection type for RequestedReviewer. +""" +type RequestedReviewerConnection { + """ + A list of edges. + """ + edges: [RequestedReviewerEdge] + + """ + A list of nodes. + """ + nodes: [RequestedReviewer] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type RequestedReviewerEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RequestedReviewer +} + +""" +Represents a type that can be required by a pull request for merging. +""" +interface RequirableByPullRequest { + """ + Whether this is required to pass before merging for a specific pull request. + """ + isRequired( + """ + The id of the pull request this is required for + """ + pullRequestId: ID + + """ + The number of the pull request this is required for + """ + pullRequestNumber: Int + ): Boolean! +} + +""" +Represents a required status check for a protected branch, but not any specific run of that check. +""" +type RequiredStatusCheckDescription { + """ + The App that must provide this status in order for it to be accepted. + """ + app: App + + """ + The name of this status. + """ + context: String! +} + +""" +Specifies the attributes for a new or updated required status check. +""" +input RequiredStatusCheckInput { + """ + The ID of the App that must set the status in order for it to be accepted. + Omit this value to use whichever app has recently been setting this status, or + use "any" to allow any app to set the status. + """ + appId: ID + + """ + Status check context that must pass for commits to be accepted to the matching branch. + """ + context: String! +} + +""" +Autogenerated input type of RerequestCheckSuite +""" +input RerequestCheckSuiteInput { + """ + The Node ID of the check suite. + """ + checkSuiteId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the repository. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of RerequestCheckSuite +""" +type RerequestCheckSuitePayload { + """ + The requested check suite. + """ + checkSuite: CheckSuite + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of ResolveReviewThread +""" +input ResolveReviewThreadInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the thread to resolve + """ + threadId: ID! +} + +""" +Autogenerated return type of ResolveReviewThread +""" +type ResolveReviewThreadPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The thread to resolve. + """ + thread: PullRequestReviewThread +} + +""" +Represents a private contribution a user made on GitHub. +""" +type RestrictedContribution implements Contribution { + """ + Whether this contribution is associated with a record you do not have access to. For + example, your own 'first issue' contribution may have been made on a repository you can no + longer access. + """ + isRestricted: Boolean! + + """ + When this contribution was made. + """ + occurredAt: DateTime! + + """ + The HTTP path for this contribution. + """ + resourcePath: URI! + + """ + The HTTP URL for this contribution. + """ + url: URI! + + """ + The user who made this contribution. + """ + user: User! +} + +""" +A user, team, or app who has the ability to dismiss a review on a protected branch. +""" +type ReviewDismissalAllowance implements Node { + """ + The actor that can dismiss. + """ + actor: ReviewDismissalAllowanceActor + + """ + Identifies the branch protection rule associated with the allowed user, team, or app. + """ + branchProtectionRule: BranchProtectionRule + id: ID! +} + +""" +Types that can be an actor. +""" +union ReviewDismissalAllowanceActor = App | Team | User + +""" +The connection type for ReviewDismissalAllowance. +""" +type ReviewDismissalAllowanceConnection { + """ + A list of edges. + """ + edges: [ReviewDismissalAllowanceEdge] + + """ + A list of nodes. + """ + nodes: [ReviewDismissalAllowance] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ReviewDismissalAllowanceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ReviewDismissalAllowance +} + +""" +Represents a 'review_dismissed' event on a given issue or pull request. +""" +type ReviewDismissedEvent implements Node & UniformResourceLocatable { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + Identifies the optional message associated with the 'review_dismissed' event. + """ + dismissalMessage: String + + """ + Identifies the optional message associated with the event, rendered to HTML. + """ + dismissalMessageHTML: String + id: ID! + + """ + Identifies the previous state of the review with the 'review_dismissed' event. + """ + previousReviewState: PullRequestReviewState! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + Identifies the commit which caused the review to become stale. + """ + pullRequestCommit: PullRequestCommit + + """ + The HTTP path for this review dismissed event. + """ + resourcePath: URI! + + """ + Identifies the review associated with the 'review_dismissed' event. + """ + review: PullRequestReview + + """ + The HTTP URL for this review dismissed event. + """ + url: URI! +} + +""" +A request for a user to review a pull request. +""" +type ReviewRequest implements Node { + """ + Whether this request was created for a code owner + """ + asCodeOwner: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + Identifies the pull request associated with this review request. + """ + pullRequest: PullRequest! + + """ + The reviewer that is requested. + """ + requestedReviewer: RequestedReviewer +} + +""" +The connection type for ReviewRequest. +""" +type ReviewRequestConnection { + """ + A list of edges. + """ + edges: [ReviewRequestEdge] + + """ + A list of nodes. + """ + nodes: [ReviewRequest] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type ReviewRequestEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ReviewRequest +} + +""" +Represents an 'review_request_removed' event on a given pull request. +""" +type ReviewRequestRemovedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + Identifies the reviewer whose review request was removed. + """ + requestedReviewer: RequestedReviewer +} + +""" +Represents an 'review_requested' event on a given pull request. +""" +type ReviewRequestedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + PullRequest referenced by event. + """ + pullRequest: PullRequest! + + """ + Identifies the reviewer whose review was requested. + """ + requestedReviewer: RequestedReviewer +} + +""" +A hovercard context with a message describing the current code review state of the pull +request. +""" +type ReviewStatusHovercardContext implements HovercardContext { + """ + A string describing this context + """ + message: String! + + """ + An octicon to accompany this context + """ + octicon: String! + + """ + The current status of the pull request with respect to code review. + """ + reviewDecision: PullRequestReviewDecision +} + +""" +Autogenerated input type of RevokeEnterpriseOrganizationsMigratorRole +""" +input RevokeEnterpriseOrganizationsMigratorRoleInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise to which all organizations managed by it will be granted the migrator role. + """ + enterpriseId: ID! + + """ + The login of the user to revoke the migrator role + """ + login: String! +} + +""" +Autogenerated return type of RevokeEnterpriseOrganizationsMigratorRole +""" +type RevokeEnterpriseOrganizationsMigratorRolePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The organizations that had the migrator role revoked for the given user. + """ + organizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationConnection +} + +""" +Autogenerated input type of RevokeMigratorRole +""" +input RevokeMigratorRoleInput { + """ + The user login or Team slug to revoke the migrator role from. + """ + actor: String! + + """ + Specifies the type of the actor, can be either USER or TEAM. + """ + actorType: ActorType! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the organization that the user/team belongs to. + """ + organizationId: ID! +} + +""" +Autogenerated return type of RevokeMigratorRole +""" +type RevokeMigratorRolePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Did the operation succeed? + """ + success: Boolean +} + +""" +Possible roles a user may have in relation to an organization. +""" +enum RoleInOrganization { + """ + A user who is a direct member of the organization. + """ + DIRECT_MEMBER + + """ + A user with full administrative access to the organization. + """ + OWNER + + """ + A user who is unaffiliated with the organization. + """ + UNAFFILIATED +} + +""" +The possible digest algorithms used to sign SAML requests for an identity provider. +""" +enum SamlDigestAlgorithm { + """ + SHA1 + """ + SHA1 + + """ + SHA256 + """ + SHA256 + + """ + SHA384 + """ + SHA384 + + """ + SHA512 + """ + SHA512 +} + +""" +The possible signature algorithms used to sign SAML requests for a Identity Provider. +""" +enum SamlSignatureAlgorithm { + """ + RSA-SHA1 + """ + RSA_SHA1 + + """ + RSA-SHA256 + """ + RSA_SHA256 + + """ + RSA-SHA384 + """ + RSA_SHA384 + + """ + RSA-SHA512 + """ + RSA_SHA512 +} + +""" +A Saved Reply is text a user can use to reply quickly. +""" +type SavedReply implements Node { + """ + The body of the saved reply. + """ + body: String! + + """ + The saved reply body rendered to HTML. + """ + bodyHTML: HTML! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The title of the saved reply. + """ + title: String! + + """ + The user that saved this reply. + """ + user: Actor +} + +""" +The connection type for SavedReply. +""" +type SavedReplyConnection { + """ + A list of edges. + """ + edges: [SavedReplyEdge] + + """ + A list of nodes. + """ + nodes: [SavedReply] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type SavedReplyEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SavedReply +} + +""" +Ordering options for saved reply connections. +""" +input SavedReplyOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order saved replies by. + """ + field: SavedReplyOrderField! +} + +""" +Properties by which saved reply connections can be ordered. +""" +enum SavedReplyOrderField { + """ + Order saved reply by when they were updated. + """ + UPDATED_AT +} + +""" +The results of a search. +""" +union SearchResultItem = App | Discussion | Issue | MarketplaceListing | Organization | PullRequest | Repository | User + +""" +A list of results that matched against a search query. +""" +type SearchResultItemConnection { + """ + The number of pieces of code that matched the search query. + """ + codeCount: Int! + + """ + The number of discussions that matched the search query. + """ + discussionCount: Int! + + """ + A list of edges. + """ + edges: [SearchResultItemEdge] + + """ + The number of issues that matched the search query. + """ + issueCount: Int! + + """ + A list of nodes. + """ + nodes: [SearchResultItem] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + The number of repositories that matched the search query. + """ + repositoryCount: Int! + + """ + The number of users that matched the search query. + """ + userCount: Int! + + """ + The number of wiki pages that matched the search query. + """ + wikiCount: Int! +} + +""" +An edge in a connection. +""" +type SearchResultItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SearchResultItem + + """ + Text matches on the result found. + """ + textMatches: [TextMatch] +} + +""" +Represents the individual results of a search. +""" +enum SearchType { + """ + Returns matching discussions in repositories. + """ + DISCUSSION + + """ + Returns results matching issues in repositories. + """ + ISSUE + + """ + Returns results matching repositories. + """ + REPOSITORY + + """ + Returns results matching users and organizations on GitHub. + """ + USER +} + +""" +A GitHub Security Advisory +""" +type SecurityAdvisory implements Node { + """ + The classification of the advisory + """ + classification: SecurityAdvisoryClassification! + + """ + The CVSS associated with this advisory + """ + cvss: CVSS! + + """ + CWEs associated with this Advisory + """ + cwes( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CWEConnection! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + This is a long plaintext description of the advisory + """ + description: String! + + """ + The GitHub Security Advisory ID + """ + ghsaId: String! + id: ID! + + """ + A list of identifiers for this advisory + """ + identifiers: [SecurityAdvisoryIdentifier!]! + + """ + The permalink for the advisory's dependabot alerts page + """ + notificationsPermalink: URI + + """ + The organization that originated the advisory + """ + origin: String! + + """ + The permalink for the advisory + """ + permalink: URI + + """ + When the advisory was published + """ + publishedAt: DateTime! + + """ + A list of references for this advisory + """ + references: [SecurityAdvisoryReference!]! + + """ + The severity of the advisory + """ + severity: SecurityAdvisorySeverity! + + """ + A short plaintext summary of the advisory + """ + summary: String! + + """ + When the advisory was last updated + """ + updatedAt: DateTime! + + """ + Vulnerabilities associated with this Advisory + """ + vulnerabilities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + A list of advisory classifications to filter vulnerabilities by. + """ + classifications: [SecurityAdvisoryClassification!] + + """ + An ecosystem to filter vulnerabilities by. + """ + ecosystem: SecurityAdvisoryEcosystem + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for the returned topics. + """ + orderBy: SecurityVulnerabilityOrder = {field: UPDATED_AT, direction: DESC} + + """ + A package name to filter vulnerabilities by. + """ + package: String + + """ + A list of severities to filter vulnerabilities by. + """ + severities: [SecurityAdvisorySeverity!] + ): SecurityVulnerabilityConnection! + + """ + When the advisory was withdrawn, if it has been withdrawn + """ + withdrawnAt: DateTime +} + +""" +Classification of the advisory. +""" +enum SecurityAdvisoryClassification { + """ + Classification of general advisories. + """ + GENERAL + + """ + Classification of malware advisories. + """ + MALWARE +} + +""" +The connection type for SecurityAdvisory. +""" +type SecurityAdvisoryConnection { + """ + A list of edges. + """ + edges: [SecurityAdvisoryEdge] + + """ + A list of nodes. + """ + nodes: [SecurityAdvisory] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +The possible ecosystems of a security vulnerability's package. +""" +enum SecurityAdvisoryEcosystem { + """ + PHP packages hosted at packagist.org + """ + COMPOSER + + """ + Erlang/Elixir packages hosted at hex.pm + """ + ERLANG + + """ + Go modules + """ + GO + + """ + Java artifacts hosted at the Maven central repository + """ + MAVEN + + """ + JavaScript packages hosted at npmjs.com + """ + NPM + + """ + .NET packages hosted at the NuGet Gallery + """ + NUGET + + """ + Python packages hosted at PyPI.org + """ + PIP + + """ + Ruby gems hosted at RubyGems.org + """ + RUBYGEMS + + """ + Rust crates + """ + RUST +} + +""" +An edge in a connection. +""" +type SecurityAdvisoryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SecurityAdvisory +} + +""" +A GitHub Security Advisory Identifier +""" +type SecurityAdvisoryIdentifier { + """ + The identifier type, e.g. GHSA, CVE + """ + type: String! + + """ + The identifier + """ + value: String! +} + +""" +An advisory identifier to filter results on. +""" +input SecurityAdvisoryIdentifierFilter { + """ + The identifier type. + """ + type: SecurityAdvisoryIdentifierType! + + """ + The identifier string. Supports exact or partial matching. + """ + value: String! +} + +""" +Identifier formats available for advisories. +""" +enum SecurityAdvisoryIdentifierType { + """ + Common Vulnerabilities and Exposures Identifier. + """ + CVE + + """ + GitHub Security Advisory ID. + """ + GHSA +} + +""" +Ordering options for security advisory connections +""" +input SecurityAdvisoryOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order security advisories by. + """ + field: SecurityAdvisoryOrderField! +} + +""" +Properties by which security advisory connections can be ordered. +""" +enum SecurityAdvisoryOrderField { + """ + Order advisories by publication time + """ + PUBLISHED_AT + + """ + Order advisories by update time + """ + UPDATED_AT +} + +""" +An individual package +""" +type SecurityAdvisoryPackage { + """ + The ecosystem the package belongs to, e.g. RUBYGEMS, NPM + """ + ecosystem: SecurityAdvisoryEcosystem! + + """ + The package name + """ + name: String! +} + +""" +An individual package version +""" +type SecurityAdvisoryPackageVersion { + """ + The package name or version + """ + identifier: String! +} + +""" +A GitHub Security Advisory Reference +""" +type SecurityAdvisoryReference { + """ + A publicly accessible reference + """ + url: URI! +} + +""" +Severity of the vulnerability. +""" +enum SecurityAdvisorySeverity { + """ + Critical. + """ + CRITICAL + + """ + High. + """ + HIGH + + """ + Low. + """ + LOW + + """ + Moderate. + """ + MODERATE +} + +""" +An individual vulnerability within an Advisory +""" +type SecurityVulnerability { + """ + The Advisory associated with this Vulnerability + """ + advisory: SecurityAdvisory! + + """ + The first version containing a fix for the vulnerability + """ + firstPatchedVersion: SecurityAdvisoryPackageVersion + + """ + A description of the vulnerable package + """ + package: SecurityAdvisoryPackage! + + """ + The severity of the vulnerability within this package + """ + severity: SecurityAdvisorySeverity! + + """ + When the vulnerability was last updated + """ + updatedAt: DateTime! + + """ + A string that describes the vulnerable package versions. + This string follows a basic syntax with a few forms. + + `= 0.2.0` denotes a single vulnerable version. + + `<= 1.0.8` denotes a version range up to and including the specified version + + `< 0.1.11` denotes a version range up to, but excluding, the specified version + + `>= 4.3.0, < 4.3.5` denotes a version range with a known minimum and maximum version. + + `>= 0.0.1` denotes a version range with a known minimum, but no known maximum + """ + vulnerableVersionRange: String! +} + +""" +The connection type for SecurityVulnerability. +""" +type SecurityVulnerabilityConnection { + """ + A list of edges. + """ + edges: [SecurityVulnerabilityEdge] + + """ + A list of nodes. + """ + nodes: [SecurityVulnerability] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type SecurityVulnerabilityEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SecurityVulnerability +} + +""" +Ordering options for security vulnerability connections +""" +input SecurityVulnerabilityOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order security vulnerabilities by. + """ + field: SecurityVulnerabilityOrderField! +} + +""" +Properties by which security vulnerability connections can be ordered. +""" +enum SecurityVulnerabilityOrderField { + """ + Order vulnerability by update time + """ + UPDATED_AT +} + +""" +Autogenerated input type of SetEnterpriseIdentityProvider +""" +input SetEnterpriseIdentityProviderInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The digest algorithm used to sign SAML requests for the identity provider. + """ + digestMethod: SamlDigestAlgorithm! + + """ + The ID of the enterprise on which to set an identity provider. + """ + enterpriseId: ID! + + """ + The x509 certificate used by the identity provider to sign assertions and responses. + """ + idpCertificate: String! + + """ + The Issuer Entity ID for the SAML identity provider + """ + issuer: String + + """ + The signature algorithm used to sign SAML requests for the identity provider. + """ + signatureMethod: SamlSignatureAlgorithm! + + """ + The URL endpoint for the identity provider's SAML SSO. + """ + ssoUrl: URI! +} + +""" +Autogenerated return type of SetEnterpriseIdentityProvider +""" +type SetEnterpriseIdentityProviderPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The identity provider for the enterprise. + """ + identityProvider: EnterpriseIdentityProvider +} + +""" +Autogenerated input type of SetOrganizationInteractionLimit +""" +input SetOrganizationInteractionLimitInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + When this limit should expire. + """ + expiry: RepositoryInteractionLimitExpiry + + """ + The limit to set. + """ + limit: RepositoryInteractionLimit! + + """ + The ID of the organization to set a limit for. + """ + organizationId: ID! +} + +""" +Autogenerated return type of SetOrganizationInteractionLimit +""" +type SetOrganizationInteractionLimitPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The organization that the interaction limit was set for. + """ + organization: Organization +} + +""" +Autogenerated input type of SetRepositoryInteractionLimit +""" +input SetRepositoryInteractionLimitInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + When this limit should expire. + """ + expiry: RepositoryInteractionLimitExpiry + + """ + The limit to set. + """ + limit: RepositoryInteractionLimit! + + """ + The ID of the repository to set a limit for. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of SetRepositoryInteractionLimit +""" +type SetRepositoryInteractionLimitPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The repository that the interaction limit was set for. + """ + repository: Repository +} + +""" +Autogenerated input type of SetUserInteractionLimit +""" +input SetUserInteractionLimitInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + When this limit should expire. + """ + expiry: RepositoryInteractionLimitExpiry + + """ + The limit to set. + """ + limit: RepositoryInteractionLimit! + + """ + The ID of the user to set a limit for. + """ + userId: ID! +} + +""" +Autogenerated return type of SetUserInteractionLimit +""" +type SetUserInteractionLimitPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The user that the interaction limit was set for. + """ + user: User +} + +""" +Represents an S/MIME signature on a Commit or Tag. +""" +type SmimeSignature implements GitSignature { + """ + Email used to sign this object. + """ + email: String! + + """ + True if the signature is valid and verified by GitHub. + """ + isValid: Boolean! + + """ + Payload for GPG signing object. Raw ODB object without the signature header. + """ + payload: String! + + """ + ASCII-armored signature header from object. + """ + signature: String! + + """ + GitHub user corresponding to the email signing this commit. + """ + signer: User + + """ + The state of this signature. `VALID` if signature is valid and verified by + GitHub, otherwise represents reason why signature is considered invalid. + """ + state: GitSignatureState! + + """ + True if the signature was made with GitHub's signing key. + """ + wasSignedByGitHub: Boolean! +} + +""" +Represents a sort by field and direction. +""" +type SortBy { + """ + The direction of the sorting. Possible values are ASC and DESC. + """ + direction: OrderDirection! + + """ + The id of the field by which the column is sorted. + """ + field: Int! +} + +""" +Entities that can sponsor others via GitHub Sponsors +""" +union Sponsor = Organization | User + +""" +The connection type for Sponsor. +""" +type SponsorConnection { + """ + A list of edges. + """ + edges: [SponsorEdge] + + """ + A list of nodes. + """ + nodes: [Sponsor] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a user or organization who is sponsoring someone in GitHub Sponsors. +""" +type SponsorEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Sponsor +} + +""" +Ordering options for connections to get sponsor entities for GitHub Sponsors. +""" +input SponsorOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order sponsor entities by. + """ + field: SponsorOrderField! +} + +""" +Properties by which sponsor connections can be ordered. +""" +enum SponsorOrderField { + """ + Order sponsorable entities by login (username). + """ + LOGIN + + """ + Order sponsors by their relevance to the viewer. + """ + RELEVANCE +} + +""" +Entities that can be sponsored through GitHub Sponsors +""" +interface Sponsorable { + """ + The estimated next GitHub Sponsors payout for this user/organization in cents (USD). + """ + estimatedNextSponsorsPayoutInCents: Int! + + """ + True if this user/organization has a GitHub Sponsors listing. + """ + hasSponsorsListing: Boolean! + + """ + Check if the given account is sponsoring this user/organization. + """ + isSponsoredBy( + """ + The target account's login. + """ + accountLogin: String! + ): Boolean! + + """ + True if the viewer is sponsored by this user/organization. + """ + isSponsoringViewer: Boolean! + + """ + The estimated monthly GitHub Sponsors income for this user/organization in cents (USD). + """ + monthlyEstimatedSponsorsIncomeInCents: Int! + + """ + List of users and organizations this entity is sponsoring. + """ + sponsoring( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for the users and organizations returned from the connection. + """ + orderBy: SponsorOrder = {field: RELEVANCE, direction: DESC} + ): SponsorConnection! + + """ + List of sponsors for this user or organization. + """ + sponsors( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsors returned from the connection. + """ + orderBy: SponsorOrder = {field: RELEVANCE, direction: DESC} + + """ + If given, will filter for sponsors at the given tier. Will only return + sponsors whose tier the viewer is permitted to see. + """ + tierId: ID + ): SponsorConnection! + + """ + Events involving this sponsorable, such as new sponsorships. + """ + sponsorsActivities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for activity returned from the connection. + """ + orderBy: SponsorsActivityOrder = {field: TIMESTAMP, direction: DESC} + + """ + Filter activities returned to only those that occurred in a given time range. + """ + period: SponsorsActivityPeriod = MONTH + ): SponsorsActivityConnection! + + """ + The GitHub Sponsors listing for this user or organization. + """ + sponsorsListing: SponsorsListing + + """ + The sponsorship from the viewer to this user/organization; that is, the + sponsorship where you're the sponsor. Only returns a sponsorship if it is active. + """ + sponsorshipForViewerAsSponsor: Sponsorship + + """ + The sponsorship from this user/organization to the viewer; that is, the + sponsorship you're receiving. Only returns a sponsorship if it is active. + """ + sponsorshipForViewerAsSponsorable: Sponsorship + + """ + List of sponsorship updates sent from this sponsorable to sponsors. + """ + sponsorshipNewsletters( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorship updates returned from the connection. + """ + orderBy: SponsorshipNewsletterOrder = {field: CREATED_AT, direction: DESC} + ): SponsorshipNewsletterConnection! + + """ + This object's sponsorships as the maintainer. + """ + sponsorshipsAsMaintainer( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Whether or not to include private sponsorships in the result set + """ + includePrivate: Boolean = false + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorships returned from this connection. If left + blank, the sponsorships will be ordered based on relevancy to the viewer. + """ + orderBy: SponsorshipOrder + ): SponsorshipConnection! + + """ + This object's sponsorships as the sponsor. + """ + sponsorshipsAsSponsor( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorships returned from this connection. If left + blank, the sponsorships will be ordered based on relevancy to the viewer. + """ + orderBy: SponsorshipOrder + ): SponsorshipConnection! + + """ + Whether or not the viewer is able to sponsor this user/organization. + """ + viewerCanSponsor: Boolean! + + """ + True if the viewer is sponsoring this user/organization. + """ + viewerIsSponsoring: Boolean! +} + +""" +Entities that can be sponsored via GitHub Sponsors +""" +union SponsorableItem = Organization | User + +""" +The connection type for SponsorableItem. +""" +type SponsorableItemConnection { + """ + A list of edges. + """ + edges: [SponsorableItemEdge] + + """ + A list of nodes. + """ + nodes: [SponsorableItem] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type SponsorableItemEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SponsorableItem +} + +""" +Ordering options for connections to get sponsorable entities for GitHub Sponsors. +""" +input SponsorableOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order sponsorable entities by. + """ + field: SponsorableOrderField! +} + +""" +Properties by which sponsorable connections can be ordered. +""" +enum SponsorableOrderField { + """ + Order sponsorable entities by login (username). + """ + LOGIN +} + +""" +An event related to sponsorship activity. +""" +type SponsorsActivity implements Node { + """ + What action this activity indicates took place. + """ + action: SponsorsActivityAction! + id: ID! + + """ + The tier that the sponsorship used to use, for tier change events. + """ + previousSponsorsTier: SponsorsTier + + """ + The user or organization who triggered this activity and was/is sponsoring the sponsorable. + """ + sponsor: Sponsor + + """ + The user or organization that is being sponsored, the maintainer. + """ + sponsorable: Sponsorable! + + """ + The associated sponsorship tier. + """ + sponsorsTier: SponsorsTier + + """ + The timestamp of this event. + """ + timestamp: DateTime +} + +""" +The possible actions that GitHub Sponsors activities can represent. +""" +enum SponsorsActivityAction { + """ + The activity was cancelling a sponsorship. + """ + CANCELLED_SPONSORSHIP + + """ + The activity was starting a sponsorship. + """ + NEW_SPONSORSHIP + + """ + The activity was scheduling a downgrade or cancellation. + """ + PENDING_CHANGE + + """ + The activity was funds being refunded to the sponsor or GitHub. + """ + REFUND + + """ + The activity was disabling matching for a previously matched sponsorship. + """ + SPONSOR_MATCH_DISABLED + + """ + The activity was changing the sponsorship tier, either directly by the sponsor or by a scheduled/pending change. + """ + TIER_CHANGE +} + +""" +The connection type for SponsorsActivity. +""" +type SponsorsActivityConnection { + """ + A list of edges. + """ + edges: [SponsorsActivityEdge] + + """ + A list of nodes. + """ + nodes: [SponsorsActivity] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type SponsorsActivityEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SponsorsActivity +} + +""" +Ordering options for GitHub Sponsors activity connections. +""" +input SponsorsActivityOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order activity by. + """ + field: SponsorsActivityOrderField! +} + +""" +Properties by which GitHub Sponsors activity connections can be ordered. +""" +enum SponsorsActivityOrderField { + """ + Order activities by when they happened. + """ + TIMESTAMP +} + +""" +The possible time periods for which Sponsors activities can be requested. +""" +enum SponsorsActivityPeriod { + """ + Don't restrict the activity to any date range, include all activity. + """ + ALL + + """ + The previous calendar day. + """ + DAY + + """ + The previous thirty days. + """ + MONTH + + """ + The previous seven days. + """ + WEEK +} + +""" +A goal associated with a GitHub Sponsors listing, representing a target the sponsored maintainer would like to attain. +""" +type SponsorsGoal { + """ + A description of the goal from the maintainer. + """ + description: String + + """ + What the objective of this goal is. + """ + kind: SponsorsGoalKind! + + """ + The percentage representing how complete this goal is, between 0-100. + """ + percentComplete: Int! + + """ + What the goal amount is. Represents an amount in USD for monthly sponsorship + amount goals. Represents a count of unique sponsors for total sponsors count goals. + """ + targetValue: Int! + + """ + A brief summary of the kind and target value of this goal. + """ + title: String! +} + +""" +The different kinds of goals a GitHub Sponsors member can have. +""" +enum SponsorsGoalKind { + """ + The goal is about getting a certain amount in USD from sponsorships each month. + """ + MONTHLY_SPONSORSHIP_AMOUNT + + """ + The goal is about reaching a certain number of sponsors. + """ + TOTAL_SPONSORS_COUNT +} + +""" +A GitHub Sponsors listing. +""" +type SponsorsListing implements Node { + """ + The current goal the maintainer is trying to reach with GitHub Sponsors, if any. + """ + activeGoal: SponsorsGoal + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The full description of the listing. + """ + fullDescription: String! + + """ + The full description of the listing rendered to HTML. + """ + fullDescriptionHTML: HTML! + id: ID! + + """ + Whether this listing is publicly visible. + """ + isPublic: Boolean! + + """ + The listing's full name. + """ + name: String! + + """ + A future date on which this listing is eligible to receive a payout. + """ + nextPayoutDate: Date + + """ + The short description of the listing. + """ + shortDescription: String! + + """ + The short name of the listing. + """ + slug: String! + + """ + The entity this listing represents who can be sponsored on GitHub Sponsors. + """ + sponsorable: Sponsorable! + + """ + The published tiers for this GitHub Sponsors listing. + """ + tiers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for Sponsors tiers returned from the connection. + """ + orderBy: SponsorsTierOrder = {field: MONTHLY_PRICE_IN_CENTS, direction: ASC} + ): SponsorsTierConnection +} + +""" +A GitHub Sponsors tier associated with a GitHub Sponsors listing. +""" +type SponsorsTier implements Node { + """ + SponsorsTier information only visible to users that can administer the associated Sponsors listing. + """ + adminInfo: SponsorsTierAdminInfo + + """ + Get a different tier for this tier's maintainer that is at the same frequency + as this tier but with an equal or lesser cost. Returns the published tier with + the monthly price closest to this tier's without going over. + """ + closestLesserValueTier: SponsorsTier + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The description of the tier. + """ + description: String! + + """ + The tier description rendered to HTML + """ + descriptionHTML: HTML! + id: ID! + + """ + Whether this tier was chosen at checkout time by the sponsor rather than + defined ahead of time by the maintainer who manages the Sponsors listing. + """ + isCustomAmount: Boolean! + + """ + Whether this tier is only for use with one-time sponsorships. + """ + isOneTime: Boolean! + + """ + How much this tier costs per month in cents. + """ + monthlyPriceInCents: Int! + + """ + How much this tier costs per month in USD. + """ + monthlyPriceInDollars: Int! + + """ + The name of the tier. + """ + name: String! + + """ + The sponsors listing that this tier belongs to. + """ + sponsorsListing: SponsorsListing! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +SponsorsTier information only visible to users that can administer the associated Sponsors listing. +""" +type SponsorsTierAdminInfo { + """ + The sponsorships associated with this tier. + """ + sponsorships( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Whether or not to include private sponsorships in the result set + """ + includePrivate: Boolean = false + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorships returned from this connection. If left + blank, the sponsorships will be ordered based on relevancy to the viewer. + """ + orderBy: SponsorshipOrder + ): SponsorshipConnection! +} + +""" +The connection type for SponsorsTier. +""" +type SponsorsTierConnection { + """ + A list of edges. + """ + edges: [SponsorsTierEdge] + + """ + A list of nodes. + """ + nodes: [SponsorsTier] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type SponsorsTierEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SponsorsTier +} + +""" +Ordering options for Sponsors tiers connections. +""" +input SponsorsTierOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order tiers by. + """ + field: SponsorsTierOrderField! +} + +""" +Properties by which Sponsors tiers connections can be ordered. +""" +enum SponsorsTierOrderField { + """ + Order tiers by creation time. + """ + CREATED_AT + + """ + Order tiers by their monthly price in cents + """ + MONTHLY_PRICE_IN_CENTS +} + +""" +A sponsorship relationship between a sponsor and a maintainer +""" +type Sponsorship implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Whether this sponsorship represents a one-time payment versus a recurring sponsorship. + """ + isOneTimePayment: Boolean! + + """ + Check if the sponsor has chosen to receive sponsorship update emails sent from + the sponsorable. Only returns a non-null value when the viewer has permission to know this. + """ + isSponsorOptedIntoEmail: Boolean + + """ + The entity that is being sponsored + """ + maintainer: User! @deprecated(reason: "`Sponsorship.maintainer` will be removed. Use `Sponsorship.sponsorable` instead. Removal on 2020-04-01 UTC.") + + """ + The privacy level for this sponsorship. + """ + privacyLevel: SponsorshipPrivacy! + + """ + The user that is sponsoring. Returns null if the sponsorship is private or if sponsor is not a user. + """ + sponsor: User @deprecated(reason: "`Sponsorship.sponsor` will be removed. Use `Sponsorship.sponsorEntity` instead. Removal on 2020-10-01 UTC.") + + """ + The user or organization that is sponsoring, if you have permission to view them. + """ + sponsorEntity: Sponsor + + """ + The entity that is being sponsored + """ + sponsorable: Sponsorable! + + """ + The associated sponsorship tier + """ + tier: SponsorsTier + + """ + Identifies the date and time when the current tier was chosen for this sponsorship. + """ + tierSelectedAt: DateTime +} + +""" +The connection type for Sponsorship. +""" +type SponsorshipConnection { + """ + A list of edges. + """ + edges: [SponsorshipEdge] + + """ + A list of nodes. + """ + nodes: [Sponsorship] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! + + """ + The total amount in cents of all recurring sponsorships in the connection + whose amount you can view. Does not include one-time sponsorships. + """ + totalRecurringMonthlyPriceInCents: Int! + + """ + The total amount in USD of all recurring sponsorships in the connection whose + amount you can view. Does not include one-time sponsorships. + """ + totalRecurringMonthlyPriceInDollars: Int! +} + +""" +An edge in a connection. +""" +type SponsorshipEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Sponsorship +} + +""" +An update sent to sponsors of a user or organization on GitHub Sponsors. +""" +type SponsorshipNewsletter implements Node { + """ + The contents of the newsletter, the message the sponsorable wanted to give. + """ + body: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Indicates if the newsletter has been made available to sponsors. + """ + isPublished: Boolean! + + """ + The user or organization this newsletter is from. + """ + sponsorable: Sponsorable! + + """ + The subject of the newsletter, what it's about. + """ + subject: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +The connection type for SponsorshipNewsletter. +""" +type SponsorshipNewsletterConnection { + """ + A list of edges. + """ + edges: [SponsorshipNewsletterEdge] + + """ + A list of nodes. + """ + nodes: [SponsorshipNewsletter] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type SponsorshipNewsletterEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SponsorshipNewsletter +} + +""" +Ordering options for sponsorship newsletter connections. +""" +input SponsorshipNewsletterOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order sponsorship newsletters by. + """ + field: SponsorshipNewsletterOrderField! +} + +""" +Properties by which sponsorship update connections can be ordered. +""" +enum SponsorshipNewsletterOrderField { + """ + Order sponsorship newsletters by when they were created. + """ + CREATED_AT +} + +""" +Ordering options for sponsorship connections. +""" +input SponsorshipOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order sponsorship by. + """ + field: SponsorshipOrderField! +} + +""" +Properties by which sponsorship connections can be ordered. +""" +enum SponsorshipOrderField { + """ + Order sponsorship by creation time. + """ + CREATED_AT +} + +""" +The privacy of a sponsorship +""" +enum SponsorshipPrivacy { + """ + Private + """ + PRIVATE + + """ + Public + """ + PUBLIC +} + +""" +Ways in which star connections can be ordered. +""" +input StarOrder { + """ + The direction in which to order nodes. + """ + direction: OrderDirection! + + """ + The field in which to order nodes by. + """ + field: StarOrderField! +} + +""" +Properties by which star connections can be ordered. +""" +enum StarOrderField { + """ + Allows ordering a list of stars by when they were created. + """ + STARRED_AT +} + +""" +The connection type for User. +""" +type StargazerConnection { + """ + A list of edges. + """ + edges: [StargazerEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a user that's starred a repository. +""" +type StargazerEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + node: User! + + """ + Identifies when the item was starred. + """ + starredAt: DateTime! +} + +""" +Things that can be starred. +""" +interface Starrable { + id: ID! + + """ + Returns a count of how many stargazers there are on this object + """ + stargazerCount: Int! + + """ + A list of users who have starred this starrable. + """ + stargazers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: StarOrder + ): StargazerConnection! + + """ + Returns a boolean indicating whether the viewing user has starred this starrable. + """ + viewerHasStarred: Boolean! +} + +""" +The connection type for Repository. +""" +type StarredRepositoryConnection { + """ + A list of edges. + """ + edges: [StarredRepositoryEdge] + + """ + Is the list of stars for this user truncated? This is true for users that have many stars. + """ + isOverLimit: Boolean! + + """ + A list of nodes. + """ + nodes: [Repository] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a starred repository. +""" +type StarredRepositoryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + node: Repository! + + """ + Identifies when the item was starred. + """ + starredAt: DateTime! +} + +""" +Autogenerated input type of StartRepositoryMigration +""" +input StartRepositoryMigrationInput { + """ + The Octoshift migration source access token. + """ + accessToken: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Whether to continue the migration on error + """ + continueOnError: Boolean + + """ + The signed URL to access the user-uploaded git archive + """ + gitArchiveUrl: String + + """ + The GitHub personal access token of the user importing to the target repository. + """ + githubPat: String + + """ + The signed URL to access the user-uploaded metadata archive + """ + metadataArchiveUrl: String + + """ + The ID of the organization that will own the imported repository. + """ + ownerId: ID! + + """ + The name of the imported repository. + """ + repositoryName: String! + + """ + Whether to skip migrating releases for the repository. + """ + skipReleases: Boolean + + """ + The ID of the Octoshift migration source. + """ + sourceId: ID! + + """ + The Octoshift migration source repository URL. + """ + sourceRepositoryUrl: URI! +} + +""" +Autogenerated return type of StartRepositoryMigration +""" +type StartRepositoryMigrationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new Octoshift repository migration. + """ + repositoryMigration: RepositoryMigration +} + +""" +Represents a commit status. +""" +type Status implements Node { + """ + A list of status contexts and check runs for this commit. + """ + combinedContexts( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): StatusCheckRollupContextConnection! + + """ + The commit this status is attached to. + """ + commit: Commit + + """ + Looks up an individual status context by context name. + """ + context( + """ + The context name. + """ + name: String! + ): StatusContext + + """ + The individual status contexts for this commit. + """ + contexts: [StatusContext!]! + id: ID! + + """ + The combined commit status. + """ + state: StatusState! +} + +""" +Represents the rollup for both the check runs and status for a commit. +""" +type StatusCheckRollup implements Node { + """ + The commit the status and check runs are attached to. + """ + commit: Commit + + """ + A list of status contexts and check runs for this commit. + """ + contexts( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): StatusCheckRollupContextConnection! + id: ID! + + """ + The combined status for the commit. + """ + state: StatusState! +} + +""" +Types that can be inside a StatusCheckRollup context. +""" +union StatusCheckRollupContext = CheckRun | StatusContext + +""" +The connection type for StatusCheckRollupContext. +""" +type StatusCheckRollupContextConnection { + """ + A list of edges. + """ + edges: [StatusCheckRollupContextEdge] + + """ + A list of nodes. + """ + nodes: [StatusCheckRollupContext] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type StatusCheckRollupContextEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: StatusCheckRollupContext +} + +""" +Represents an individual commit status context +""" +type StatusContext implements Node & RequirableByPullRequest { + """ + The avatar of the OAuth application or the user that created the status + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int = 40 + ): URI + + """ + This commit this status context is attached to. + """ + commit: Commit + + """ + The name of this status context. + """ + context: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The actor who created this status context. + """ + creator: Actor + + """ + The description for this status context. + """ + description: String + id: ID! + + """ + Whether this is required to pass before merging for a specific pull request. + """ + isRequired( + """ + The id of the pull request this is required for + """ + pullRequestId: ID + + """ + The number of the pull request this is required for + """ + pullRequestNumber: Int + ): Boolean! + + """ + The state of this status context. + """ + state: StatusState! + + """ + The URL for this status context. + """ + targetUrl: URI +} + +""" +The possible commit status states. +""" +enum StatusState { + """ + Status is errored. + """ + ERROR + + """ + Status is expected. + """ + EXPECTED + + """ + Status is failing. + """ + FAILURE + + """ + Status is pending. + """ + PENDING + + """ + Status is successful. + """ + SUCCESS +} + +""" +Autogenerated input type of SubmitPullRequestReview +""" +input SubmitPullRequestReviewInput { + """ + The text field to set on the Pull Request Review. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The event to send to the Pull Request Review. + """ + event: PullRequestReviewEvent! + + """ + The Pull Request ID to submit any pending reviews. + """ + pullRequestId: ID + + """ + The Pull Request Review ID to submit. + """ + pullRequestReviewId: ID +} + +""" +Autogenerated return type of SubmitPullRequestReview +""" +type SubmitPullRequestReviewPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The submitted pull request review. + """ + pullRequestReview: PullRequestReview +} + +""" +A pointer to a repository at a specific revision embedded inside another repository. +""" +type Submodule { + """ + The branch of the upstream submodule for tracking updates + """ + branch: String + + """ + The git URL of the submodule repository + """ + gitUrl: URI! + + """ + The name of the submodule in .gitmodules + """ + name: String! + + """ + The path in the superproject that this submodule is located in + """ + path: String! + + """ + The commit revision of the subproject repository being tracked by the submodule + """ + subprojectCommitOid: GitObjectID +} + +""" +The connection type for Submodule. +""" +type SubmoduleConnection { + """ + A list of edges. + """ + edges: [SubmoduleEdge] + + """ + A list of nodes. + """ + nodes: [Submodule] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type SubmoduleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Submodule +} + +""" +Entities that can be subscribed to for web and email notifications. +""" +interface Subscribable { + id: ID! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState +} + +""" +Represents a 'subscribed' event on a given `Subscribable`. +""" +type SubscribedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Object referenced by event. + """ + subscribable: Subscribable! +} + +""" +The possible states of a subscription. +""" +enum SubscriptionState { + """ + The User is never notified. + """ + IGNORED + + """ + The User is notified of all conversations. + """ + SUBSCRIBED + + """ + The User is only notified when participating or @mentioned. + """ + UNSUBSCRIBED +} + +""" +A suggestion to review a pull request based on a user's commit history and review comments. +""" +type SuggestedReviewer { + """ + Is this suggestion based on past commits? + """ + isAuthor: Boolean! + + """ + Is this suggestion based on past review comments? + """ + isCommenter: Boolean! + + """ + Identifies the user suggested to review the pull request. + """ + reviewer: User! +} + +""" +Represents a Git tag. +""" +type Tag implements GitObject & Node { + """ + An abbreviated version of the Git object ID + """ + abbreviatedOid: String! + + """ + The HTTP path for this Git object + """ + commitResourcePath: URI! + + """ + The HTTP URL for this Git object + """ + commitUrl: URI! + id: ID! + + """ + The Git tag message. + """ + message: String + + """ + The Git tag name. + """ + name: String! + + """ + The Git object ID + """ + oid: GitObjectID! + + """ + The Repository the Git object belongs to + """ + repository: Repository! + + """ + Details about the tag author. + """ + tagger: GitActor + + """ + The Git object the tag points to. + """ + target: GitObject! +} + +""" +A team of users in an organization. +""" +type Team implements MemberStatusable & Node & Subscribable { + """ + A list of teams that are ancestors of this team. + """ + ancestors( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): TeamConnection! + + """ + A URL pointing to the team's avatar. + """ + avatarUrl( + """ + The size in pixels of the resulting square image. + """ + size: Int = 400 + ): URI + + """ + List of child teams belonging to this team + """ + childTeams( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Whether to list immediate child teams or all descendant child teams. + """ + immediateOnly: Boolean = true + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: TeamOrder + + """ + User logins to filter by + """ + userLogins: [String!] + ): TeamConnection! + + """ + The slug corresponding to the organization and team. + """ + combinedSlug: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The description of the team. + """ + description: String + + """ + Find a team discussion by its number. + """ + discussion( + """ + The sequence number of the discussion to find. + """ + number: Int! + ): TeamDiscussion + + """ + A list of team discussions. + """ + discussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If provided, filters discussions according to whether or not they are pinned. + """ + isPinned: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: TeamDiscussionOrder + ): TeamDiscussionConnection! + + """ + The HTTP path for team discussions + """ + discussionsResourcePath: URI! + + """ + The HTTP URL for team discussions + """ + discussionsUrl: URI! + + """ + The HTTP path for editing this team + """ + editTeamResourcePath: URI! + + """ + The HTTP URL for editing this team + """ + editTeamUrl: URI! + id: ID! + + """ + A list of pending invitations for users to this team + """ + invitations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationInvitationConnection + + """ + Get the status messages members of this entity have set that are either public or visible only to the organization. + """ + memberStatuses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for user statuses returned from the connection. + """ + orderBy: UserStatusOrder = {field: UPDATED_AT, direction: DESC} + ): UserStatusConnection! + + """ + A list of users who are members of this team. + """ + members( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter by membership type + """ + membership: TeamMembershipType = ALL + + """ + Order for the connection. + """ + orderBy: TeamMemberOrder + + """ + The search string to look for. + """ + query: String + + """ + Filter by team member role + """ + role: TeamMemberRole + ): TeamMemberConnection! + + """ + The HTTP path for the team' members + """ + membersResourcePath: URI! + + """ + The HTTP URL for the team' members + """ + membersUrl: URI! + + """ + The name of the team. + """ + name: String! + + """ + The HTTP path creating a new team + """ + newTeamResourcePath: URI! + + """ + The HTTP URL creating a new team + """ + newTeamUrl: URI! + + """ + The organization that owns this team. + """ + organization: Organization! + + """ + The parent team of the team. + """ + parentTeam: Team + + """ + The level of privacy the team has. + """ + privacy: TeamPrivacy! + + """ + A list of repositories this team has access to. + """ + repositories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for the connection. + """ + orderBy: TeamRepositoryOrder + + """ + The search string to look for. + """ + query: String + ): TeamRepositoryConnection! + + """ + The HTTP path for this team's repositories + """ + repositoriesResourcePath: URI! + + """ + The HTTP URL for this team's repositories + """ + repositoriesUrl: URI! + + """ + The HTTP path for this team + """ + resourcePath: URI! + + """ + The slug corresponding to the team. + """ + slug: String! + + """ + The HTTP path for this team's teams + """ + teamsResourcePath: URI! + + """ + The HTTP URL for this team's teams + """ + teamsUrl: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this team + """ + url: URI! + + """ + Team is adminable by the viewer. + """ + viewerCanAdminister: Boolean! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState +} + +""" +Audit log entry for a team.add_member event. +""" +type TeamAddMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & TeamAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + Whether the team was mapped to an LDAP Group. + """ + isLdapMapped: Boolean + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The team associated with the action + """ + team: Team + + """ + The name of the team + """ + teamName: String + + """ + The HTTP path for this team + """ + teamResourcePath: URI + + """ + The HTTP URL for this team + """ + teamUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a team.add_repository event. +""" +type TeamAddRepositoryAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TeamAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + Whether the team was mapped to an LDAP Group. + """ + isLdapMapped: Boolean + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The team associated with the action + """ + team: Team + + """ + The name of the team + """ + teamName: String + + """ + The HTTP path for this team + """ + teamResourcePath: URI + + """ + The HTTP URL for this team + """ + teamUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Metadata for an audit entry with action team.* +""" +interface TeamAuditEntryData { + """ + The team associated with the action + """ + team: Team + + """ + The name of the team + """ + teamName: String + + """ + The HTTP path for this team + """ + teamResourcePath: URI + + """ + The HTTP URL for this team + """ + teamUrl: URI +} + +""" +Audit log entry for a team.change_parent_team event. +""" +type TeamChangeParentTeamAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & TeamAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + Whether the team was mapped to an LDAP Group. + """ + isLdapMapped: Boolean + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The new parent team. + """ + parentTeam: Team + + """ + The name of the new parent team + """ + parentTeamName: String + + """ + The name of the former parent team + """ + parentTeamNameWas: String + + """ + The HTTP path for the parent team + """ + parentTeamResourcePath: URI + + """ + The HTTP URL for the parent team + """ + parentTeamUrl: URI + + """ + The former parent team. + """ + parentTeamWas: Team + + """ + The HTTP path for the previous parent team + """ + parentTeamWasResourcePath: URI + + """ + The HTTP URL for the previous parent team + """ + parentTeamWasUrl: URI + + """ + The team associated with the action + """ + team: Team + + """ + The name of the team + """ + teamName: String + + """ + The HTTP path for this team + """ + teamResourcePath: URI + + """ + The HTTP URL for this team + """ + teamUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The connection type for Team. +""" +type TeamConnection { + """ + A list of edges. + """ + edges: [TeamEdge] + + """ + A list of nodes. + """ + nodes: [Team] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +A team discussion. +""" +type TeamDiscussion implements Comment & Deletable & Node & Reactable & Subscribable & UniformResourceLocatable & Updatable & UpdatableComment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the discussion's team. + """ + authorAssociation: CommentAuthorAssociation! + + """ + The body as Markdown. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + Identifies the discussion body hash. + """ + bodyVersion: String! + + """ + A list of comments on this discussion. + """ + comments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + When provided, filters the connection such that results begin with the comment with this number. + """ + fromComment: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: TeamDiscussionCommentOrder + ): TeamDiscussionCommentConnection! + + """ + The HTTP path for discussion comments + """ + commentsResourcePath: URI! + + """ + The HTTP URL for discussion comments + """ + commentsUrl: URI! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + Whether or not the discussion is pinned. + """ + isPinned: Boolean! + + """ + Whether or not the discussion is only visible to team members and org admins. + """ + isPrivate: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Identifies the discussion within its team. + """ + number: Int! + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The HTTP path for this discussion + """ + resourcePath: URI! + + """ + The team that defines the context of this discussion. + """ + team: Team! + + """ + The title of the discussion + """ + title: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this discussion + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Whether or not the current viewer can pin this discussion. + """ + viewerCanPin: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the viewer is able to change their subscription status for the repository. + """ + viewerCanSubscribe: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! + + """ + Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. + """ + viewerSubscription: SubscriptionState +} + +""" +A comment on a team discussion. +""" +type TeamDiscussionComment implements Comment & Deletable & Node & Reactable & UniformResourceLocatable & Updatable & UpdatableComment { + """ + The actor who authored the comment. + """ + author: Actor + + """ + Author's association with the comment's team. + """ + authorAssociation: CommentAuthorAssociation! + + """ + The body as Markdown. + """ + body: String! + + """ + The body rendered to HTML. + """ + bodyHTML: HTML! + + """ + The body rendered to text. + """ + bodyText: String! + + """ + The current version of the body content. + """ + bodyVersion: String! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Check if this comment was created via an email reply. + """ + createdViaEmail: Boolean! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The discussion this comment is about. + """ + discussion: TeamDiscussion! + + """ + The actor who edited the comment. + """ + editor: Actor + id: ID! + + """ + Check if this comment was edited and includes an edit with the creation data + """ + includesCreatedEdit: Boolean! + + """ + The moment the editor made the last edit + """ + lastEditedAt: DateTime + + """ + Identifies the comment number. + """ + number: Int! + + """ + Identifies when the comment was published at. + """ + publishedAt: DateTime + + """ + A list of reactions grouped by content left on the subject. + """ + reactionGroups: [ReactionGroup!] + + """ + A list of Reactions left on the Issue. + """ + reactions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Allows filtering Reactions by emoji. + """ + content: ReactionContent + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Allows specifying the order in which reactions are returned. + """ + orderBy: ReactionOrder + ): ReactionConnection! + + """ + The HTTP path for this comment + """ + resourcePath: URI! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this comment + """ + url: URI! + + """ + A list of edits to this content. + """ + userContentEdits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): UserContentEditConnection + + """ + Check if the current viewer can delete this object. + """ + viewerCanDelete: Boolean! + + """ + Can user react to this subject + """ + viewerCanReact: Boolean! + + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! + + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! + + """ + Did the viewer author this comment. + """ + viewerDidAuthor: Boolean! +} + +""" +The connection type for TeamDiscussionComment. +""" +type TeamDiscussionCommentConnection { + """ + A list of edges. + """ + edges: [TeamDiscussionCommentEdge] + + """ + A list of nodes. + """ + nodes: [TeamDiscussionComment] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type TeamDiscussionCommentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TeamDiscussionComment +} + +""" +Ways in which team discussion comment connections can be ordered. +""" +input TeamDiscussionCommentOrder { + """ + The direction in which to order nodes. + """ + direction: OrderDirection! + + """ + The field by which to order nodes. + """ + field: TeamDiscussionCommentOrderField! +} + +""" +Properties by which team discussion comment connections can be ordered. +""" +enum TeamDiscussionCommentOrderField { + """ + Allows sequential ordering of team discussion comments (which is equivalent to chronological ordering). + """ + NUMBER +} + +""" +The connection type for TeamDiscussion. +""" +type TeamDiscussionConnection { + """ + A list of edges. + """ + edges: [TeamDiscussionEdge] + + """ + A list of nodes. + """ + nodes: [TeamDiscussion] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type TeamDiscussionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TeamDiscussion +} + +""" +Ways in which team discussion connections can be ordered. +""" +input TeamDiscussionOrder { + """ + The direction in which to order nodes. + """ + direction: OrderDirection! + + """ + The field by which to order nodes. + """ + field: TeamDiscussionOrderField! +} + +""" +Properties by which team discussion connections can be ordered. +""" +enum TeamDiscussionOrderField { + """ + Allows chronological ordering of team discussions. + """ + CREATED_AT +} + +""" +An edge in a connection. +""" +type TeamEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Team +} + +""" +The connection type for User. +""" +type TeamMemberConnection { + """ + A list of edges. + """ + edges: [TeamMemberEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a user who is a member of a team. +""" +type TeamMemberEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The HTTP path to the organization's member access page. + """ + memberAccessResourcePath: URI! + + """ + The HTTP URL to the organization's member access page. + """ + memberAccessUrl: URI! + node: User! + + """ + The role the member has on the team. + """ + role: TeamMemberRole! +} + +""" +Ordering options for team member connections +""" +input TeamMemberOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order team members by. + """ + field: TeamMemberOrderField! +} + +""" +Properties by which team member connections can be ordered. +""" +enum TeamMemberOrderField { + """ + Order team members by creation time + """ + CREATED_AT + + """ + Order team members by login + """ + LOGIN +} + +""" +The possible team member roles; either 'maintainer' or 'member'. +""" +enum TeamMemberRole { + """ + A team maintainer has permission to add and remove team members. + """ + MAINTAINER + + """ + A team member has no administrative permissions on the team. + """ + MEMBER +} + +""" +Defines which types of team members are included in the returned list. Can be one of IMMEDIATE, CHILD_TEAM or ALL. +""" +enum TeamMembershipType { + """ + Includes immediate and child team members for the team. + """ + ALL + + """ + Includes only child team members for the team. + """ + CHILD_TEAM + + """ + Includes only immediate members of the team. + """ + IMMEDIATE +} + +""" +Ways in which team connections can be ordered. +""" +input TeamOrder { + """ + The direction in which to order nodes. + """ + direction: OrderDirection! + + """ + The field in which to order nodes by. + """ + field: TeamOrderField! +} + +""" +Properties by which team connections can be ordered. +""" +enum TeamOrderField { + """ + Allows ordering a list of teams by name. + """ + NAME +} + +""" +The possible team privacy values. +""" +enum TeamPrivacy { + """ + A secret team can only be seen by its members. + """ + SECRET + + """ + A visible team can be seen and @mentioned by every member of the organization. + """ + VISIBLE +} + +""" +Audit log entry for a team.remove_member event. +""" +type TeamRemoveMemberAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & TeamAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + Whether the team was mapped to an LDAP Group. + """ + isLdapMapped: Boolean + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The team associated with the action + """ + team: Team + + """ + The name of the team + """ + teamName: String + + """ + The HTTP path for this team + """ + teamResourcePath: URI + + """ + The HTTP URL for this team + """ + teamUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +Audit log entry for a team.remove_repository event. +""" +type TeamRemoveRepositoryAuditEntry implements AuditEntry & Node & OrganizationAuditEntryData & RepositoryAuditEntryData & TeamAuditEntryData { + """ + The action name + """ + action: String! + + """ + The user who initiated the action + """ + actor: AuditEntryActor + + """ + The IP address of the actor + """ + actorIp: String + + """ + A readable representation of the actor's location + """ + actorLocation: ActorLocation + + """ + The username of the user who initiated the action + """ + actorLogin: String + + """ + The HTTP path for the actor. + """ + actorResourcePath: URI + + """ + The HTTP URL for the actor. + """ + actorUrl: URI + + """ + The time the action was initiated + """ + createdAt: PreciseDateTime! + id: ID! + + """ + Whether the team was mapped to an LDAP Group. + """ + isLdapMapped: Boolean + + """ + The corresponding operation type for the action + """ + operationType: OperationType + + """ + The Organization associated with the Audit Entry. + """ + organization: Organization + + """ + The name of the Organization. + """ + organizationName: String + + """ + The HTTP path for the organization + """ + organizationResourcePath: URI + + """ + The HTTP URL for the organization + """ + organizationUrl: URI + + """ + The repository associated with the action + """ + repository: Repository + + """ + The name of the repository + """ + repositoryName: String + + """ + The HTTP path for the repository + """ + repositoryResourcePath: URI + + """ + The HTTP URL for the repository + """ + repositoryUrl: URI + + """ + The team associated with the action + """ + team: Team + + """ + The name of the team + """ + teamName: String + + """ + The HTTP path for this team + """ + teamResourcePath: URI + + """ + The HTTP URL for this team + """ + teamUrl: URI + + """ + The user affected by the action + """ + user: User + + """ + For actions involving two users, the actor is the initiator and the user is the affected user. + """ + userLogin: String + + """ + The HTTP path for the user. + """ + userResourcePath: URI + + """ + The HTTP URL for the user. + """ + userUrl: URI +} + +""" +The connection type for Repository. +""" +type TeamRepositoryConnection { + """ + A list of edges. + """ + edges: [TeamRepositoryEdge] + + """ + A list of nodes. + """ + nodes: [Repository] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +Represents a team repository. +""" +type TeamRepositoryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + node: Repository! + + """ + The permission level the team has on the repository + """ + permission: RepositoryPermission! +} + +""" +Ordering options for team repository connections +""" +input TeamRepositoryOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order repositories by. + """ + field: TeamRepositoryOrderField! +} + +""" +Properties by which team repository connections can be ordered. +""" +enum TeamRepositoryOrderField { + """ + Order repositories by creation time + """ + CREATED_AT + + """ + Order repositories by name + """ + NAME + + """ + Order repositories by permission + """ + PERMISSION + + """ + Order repositories by push time + """ + PUSHED_AT + + """ + Order repositories by number of stargazers + """ + STARGAZERS + + """ + Order repositories by update time + """ + UPDATED_AT +} + +""" +The role of a user on a team. +""" +enum TeamRole { + """ + User has admin rights on the team. + """ + ADMIN + + """ + User is a member of the team. + """ + MEMBER +} + +""" +A text match within a search result. +""" +type TextMatch { + """ + The specific text fragment within the property matched on. + """ + fragment: String! + + """ + Highlights within the matched fragment. + """ + highlights: [TextMatchHighlight!]! + + """ + The property matched on. + """ + property: String! +} + +""" +Represents a single highlight in a search result match. +""" +type TextMatchHighlight { + """ + The indice in the fragment where the matched text begins. + """ + beginIndice: Int! + + """ + The indice in the fragment where the matched text ends. + """ + endIndice: Int! + + """ + The text matched. + """ + text: String! +} + +""" +A topic aggregates entities that are related to a subject. +""" +type Topic implements Node & Starrable { + id: ID! + + """ + The topic's name. + """ + name: String! + + """ + A list of related topics, including aliases of this topic, sorted with the most relevant + first. Returns up to 10 Topics. + """ + relatedTopics( + """ + How many topics to return. + """ + first: Int = 3 + ): [Topic!]! + + """ + A list of repositories. + """ + repositories( + """ + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. + """ + affiliations: [RepositoryAffiliation] + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder + + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR] + + """ + If non-null, filters repositories according to privacy + """ + privacy: RepositoryPrivacy + + """ + If true, only repositories whose owner can be sponsored via GitHub Sponsors will be returned. + """ + sponsorableOnly: Boolean = false + ): RepositoryConnection! + + """ + Returns a count of how many stargazers there are on this object + """ + stargazerCount: Int! + + """ + A list of users who have starred this starrable. + """ + stargazers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: StarOrder + ): StargazerConnection! + + """ + Returns a boolean indicating whether the viewing user has starred this starrable. + """ + viewerHasStarred: Boolean! +} + +""" +Metadata for an audit entry with a topic. +""" +interface TopicAuditEntryData { + """ + The name of the topic added to the repository + """ + topic: Topic + + """ + The name of the topic added to the repository + """ + topicName: String +} + +""" +Reason that the suggested topic is declined. +""" +enum TopicSuggestionDeclineReason { + """ + The suggested topic is not relevant to the repository. + """ + NOT_RELEVANT + + """ + The viewer does not like the suggested topic. + """ + PERSONAL_PREFERENCE + + """ + The suggested topic is too general for the repository. + """ + TOO_GENERAL + + """ + The suggested topic is too specific for the repository (e.g. #ruby-on-rails-version-4-2-1). + """ + TOO_SPECIFIC +} + +""" +The possible states of a tracked issue. +""" +enum TrackedIssueStates { + """ + The tracked issue is closed + """ + CLOSED + + """ + The tracked issue is open + """ + OPEN +} + +""" +Autogenerated input type of TransferIssue +""" +input TransferIssueInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the issue to be transferred + """ + issueId: ID! + + """ + The Node ID of the repository the issue should be transferred to + """ + repositoryId: ID! +} + +""" +Autogenerated return type of TransferIssue +""" +type TransferIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue that was transferred + """ + issue: Issue +} + +""" +Represents a 'transferred' event on a given issue or pull request. +""" +type TransferredEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The repository this came from + """ + fromRepository: Repository + id: ID! + + """ + Identifies the issue associated with the event. + """ + issue: Issue! +} + +""" +Represents a Git tree. +""" +type Tree implements GitObject & Node { + """ + An abbreviated version of the Git object ID + """ + abbreviatedOid: String! + + """ + The HTTP path for this Git object + """ + commitResourcePath: URI! + + """ + The HTTP URL for this Git object + """ + commitUrl: URI! + + """ + A list of tree entries. + """ + entries: [TreeEntry!] + id: ID! + + """ + The Git object ID + """ + oid: GitObjectID! + + """ + The Repository the Git object belongs to + """ + repository: Repository! +} + +""" +Represents a Git tree entry. +""" +type TreeEntry { + """ + The extension of the file + """ + extension: String + + """ + Whether or not this tree entry is generated + """ + isGenerated: Boolean! + + """ + Number of lines in the file. + """ + lineCount: Int + + """ + Entry file mode. + """ + mode: Int! + + """ + Entry file name. + """ + name: String! + + """ + Entry file object. + """ + object: GitObject + + """ + Entry file Git object ID. + """ + oid: GitObjectID! + + """ + The full path of the file. + """ + path: String + + """ + The Repository the tree entry belongs to + """ + repository: Repository! + + """ + If the TreeEntry is for a directory occupied by a submodule project, this returns the corresponding submodule + """ + submodule: Submodule + + """ + Entry file type. + """ + type: String! +} + +""" +An RFC 3986, RFC 3987, and RFC 6570 (level 4) compliant URI string. +""" +scalar URI + +""" +Autogenerated input type of UnarchiveRepository +""" +input UnarchiveRepositoryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the repository to unarchive. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of UnarchiveRepository +""" +type UnarchiveRepositoryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The repository that was unarchived. + """ + repository: Repository +} + +""" +Represents an 'unassigned' event on any assignable object. +""" +type UnassignedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the assignable associated with the event. + """ + assignable: Assignable! + + """ + Identifies the user or mannequin that was unassigned. + """ + assignee: Assignee + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the subject (user) who was unassigned. + """ + user: User @deprecated(reason: "Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC.") +} + +""" +Autogenerated input type of UnfollowOrganization +""" +input UnfollowOrganizationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the organization to unfollow. + """ + organizationId: ID! +} + +""" +Autogenerated return type of UnfollowOrganization +""" +type UnfollowOrganizationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The organization that was unfollowed. + """ + organization: Organization +} + +""" +Autogenerated input type of UnfollowUser +""" +input UnfollowUserInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the user to unfollow. + """ + userId: ID! +} + +""" +Autogenerated return type of UnfollowUser +""" +type UnfollowUserPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The user that was unfollowed. + """ + user: User +} + +""" +Represents a type that can be retrieved by a URL. +""" +interface UniformResourceLocatable { + """ + The HTML path to this resource. + """ + resourcePath: URI! + + """ + The URL to this resource. + """ + url: URI! +} + +""" +Represents an unknown signature on a Commit or Tag. +""" +type UnknownSignature implements GitSignature { + """ + Email used to sign this object. + """ + email: String! + + """ + True if the signature is valid and verified by GitHub. + """ + isValid: Boolean! + + """ + Payload for GPG signing object. Raw ODB object without the signature header. + """ + payload: String! + + """ + ASCII-armored signature header from object. + """ + signature: String! + + """ + GitHub user corresponding to the email signing this commit. + """ + signer: User + + """ + The state of this signature. `VALID` if signature is valid and verified by + GitHub, otherwise represents reason why signature is considered invalid. + """ + state: GitSignatureState! + + """ + True if the signature was made with GitHub's signing key. + """ + wasSignedByGitHub: Boolean! +} + +""" +Represents an 'unlabeled' event on a given issue or pull request. +""" +type UnlabeledEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the label associated with the 'unlabeled' event. + """ + label: Label! + + """ + Identifies the `Labelable` associated with the event. + """ + labelable: Labelable! +} + +""" +Autogenerated input type of UnlinkRepositoryFromProject +""" +input UnlinkRepositoryFromProjectInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Project linked to the Repository. + """ + projectId: ID! + + """ + The ID of the Repository linked to the Project. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of UnlinkRepositoryFromProject +""" +type UnlinkRepositoryFromProjectPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The linked Project. + """ + project: Project + + """ + The linked Repository. + """ + repository: Repository +} + +""" +Autogenerated input type of UnlockLockable +""" +input UnlockLockableInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the item to be unlocked. + """ + lockableId: ID! +} + +""" +Autogenerated return type of UnlockLockable +""" +type UnlockLockablePayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The item that was unlocked. + """ + unlockedRecord: Lockable +} + +""" +Represents an 'unlocked' event on a given issue or pull request. +""" +type UnlockedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Object that was unlocked. + """ + lockable: Lockable! +} + +""" +Autogenerated input type of UnmarkDiscussionCommentAsAnswer +""" +input UnmarkDiscussionCommentAsAnswerInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion comment to unmark as an answer. + """ + id: ID! +} + +""" +Autogenerated return type of UnmarkDiscussionCommentAsAnswer +""" +type UnmarkDiscussionCommentAsAnswerPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The discussion that includes the comment. + """ + discussion: Discussion +} + +""" +Autogenerated input type of UnmarkFileAsViewed +""" +input UnmarkFileAsViewedInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The path of the file to mark as unviewed + """ + path: String! + + """ + The Node ID of the pull request. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of UnmarkFileAsViewed +""" +type UnmarkFileAsViewedPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated pull request. + """ + pullRequest: PullRequest +} + +""" +Autogenerated input type of UnmarkIssueAsDuplicate +""" +input UnmarkIssueAsDuplicateInput { + """ + ID of the issue or pull request currently considered canonical/authoritative/original. + """ + canonicalId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + ID of the issue or pull request currently marked as a duplicate. + """ + duplicateId: ID! +} + +""" +Autogenerated return type of UnmarkIssueAsDuplicate +""" +type UnmarkIssueAsDuplicatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue or pull request that was marked as a duplicate. + """ + duplicate: IssueOrPullRequest +} + +""" +Represents an 'unmarked_as_duplicate' event on a given issue or pull request. +""" +type UnmarkedAsDuplicateEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + The authoritative issue or pull request which has been duplicated by another. + """ + canonical: IssueOrPullRequest + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + The issue or pull request which has been marked as a duplicate of another. + """ + duplicate: IssueOrPullRequest + id: ID! + + """ + Canonical and duplicate belong to different repositories. + """ + isCrossRepository: Boolean! +} + +""" +Autogenerated input type of UnminimizeComment +""" +input UnminimizeCommentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the subject to modify. + """ + subjectId: ID! +} + +""" +Autogenerated return type of UnminimizeComment +""" +type UnminimizeCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The comment that was unminimized. + """ + unminimizedComment: Minimizable +} + +""" +Autogenerated input type of UnpinIssue +""" +input UnpinIssueInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the issue to be unpinned + """ + issueId: ID! +} + +""" +Autogenerated return type of UnpinIssue +""" +type UnpinIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue that was unpinned + """ + issue: Issue +} + +""" +Represents an 'unpinned' event on a given issue or pull request. +""" +type UnpinnedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Identifies the issue associated with the event. + """ + issue: Issue! +} + +""" +Autogenerated input type of UnresolveReviewThread +""" +input UnresolveReviewThreadInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the thread to unresolve + """ + threadId: ID! +} + +""" +Autogenerated return type of UnresolveReviewThread +""" +type UnresolveReviewThreadPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The thread to resolve. + """ + thread: PullRequestReviewThread +} + +""" +Represents an 'unsubscribed' event on a given `Subscribable`. +""" +type UnsubscribedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + Object referenced by event. + """ + subscribable: Subscribable! +} + +""" +Entities that can be updated. +""" +interface Updatable { + """ + Check if the current viewer can update this object. + """ + viewerCanUpdate: Boolean! +} + +""" +Comments that can be updated. +""" +interface UpdatableComment { + """ + Reasons why the current viewer can not update this comment. + """ + viewerCannotUpdateReasons: [CommentCannotUpdateReason!]! +} + +""" +Autogenerated input type of UpdateBranchProtectionRule +""" +input UpdateBranchProtectionRuleInput { + """ + Can this branch be deleted. + """ + allowsDeletions: Boolean + + """ + Are force pushes allowed on this branch. + """ + allowsForcePushes: Boolean + + """ + Is branch creation a protected operation. + """ + blocksCreations: Boolean + + """ + The global relay id of the branch protection rule to be updated. + """ + branchProtectionRuleId: ID! + + """ + A list of User, Team, or App IDs allowed to bypass force push targeting matching branches. + """ + bypassForcePushActorIds: [ID!] + + """ + A list of User, Team, or App IDs allowed to bypass pull requests targeting matching branches. + """ + bypassPullRequestActorIds: [ID!] + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Will new commits pushed to matching branches dismiss pull request review approvals. + """ + dismissesStaleReviews: Boolean + + """ + Can admins overwrite branch protection. + """ + isAdminEnforced: Boolean + + """ + The glob-like pattern used to determine matching branches. + """ + pattern: String + + """ + A list of User, Team, or App IDs allowed to push to matching branches. + """ + pushActorIds: [ID!] + + """ + Number of approving reviews required to update matching branches. + """ + requiredApprovingReviewCount: Int + + """ + List of required status check contexts that must pass for commits to be accepted to matching branches. + """ + requiredStatusCheckContexts: [String!] + + """ + The list of required status checks + """ + requiredStatusChecks: [RequiredStatusCheckInput!] + + """ + Are approving reviews required to update matching branches. + """ + requiresApprovingReviews: Boolean + + """ + Are reviews from code owners required to update matching branches. + """ + requiresCodeOwnerReviews: Boolean + + """ + Are commits required to be signed. + """ + requiresCommitSignatures: Boolean + + """ + Are conversations required to be resolved before merging. + """ + requiresConversationResolution: Boolean + + """ + Are merge commits prohibited from being pushed to this branch. + """ + requiresLinearHistory: Boolean + + """ + Are status checks required to update matching branches. + """ + requiresStatusChecks: Boolean + + """ + Are branches required to be up to date before merging. + """ + requiresStrictStatusChecks: Boolean + + """ + Is pushing to matching branches restricted. + """ + restrictsPushes: Boolean + + """ + Is dismissal of pull request reviews restricted. + """ + restrictsReviewDismissals: Boolean + + """ + A list of User, Team, or App IDs allowed to dismiss reviews on pull requests targeting matching branches. + """ + reviewDismissalActorIds: [ID!] +} + +""" +Autogenerated return type of UpdateBranchProtectionRule +""" +type UpdateBranchProtectionRulePayload { + """ + The newly created BranchProtectionRule. + """ + branchProtectionRule: BranchProtectionRule + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of UpdateCheckRun +""" +input UpdateCheckRunInput { + """ + Possible further actions the integrator can perform, which a user may trigger. + """ + actions: [CheckRunAction!] + + """ + The node of the check. + """ + checkRunId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The time that the check run finished. + """ + completedAt: DateTime + + """ + The final conclusion of the check. + """ + conclusion: CheckConclusionState + + """ + The URL of the integrator's site that has the full details of the check. + """ + detailsUrl: URI + + """ + A reference for the run on the integrator's system. + """ + externalId: String + + """ + The name of the check. + """ + name: String + + """ + Descriptive details about the run. + """ + output: CheckRunOutput + + """ + The node ID of the repository. + """ + repositoryId: ID! + + """ + The time that the check run began. + """ + startedAt: DateTime + + """ + The current status. + """ + status: RequestableCheckStatusState +} + +""" +Autogenerated return type of UpdateCheckRun +""" +type UpdateCheckRunPayload { + """ + The updated check run. + """ + checkRun: CheckRun + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated input type of UpdateCheckSuitePreferences +""" +input UpdateCheckSuitePreferencesInput { + """ + The check suite preferences to modify. + """ + autoTriggerPreferences: [CheckSuiteAutoTriggerPreference!]! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the repository. + """ + repositoryId: ID! +} + +""" +Autogenerated return type of UpdateCheckSuitePreferences +""" +type UpdateCheckSuitePreferencesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated repository. + """ + repository: Repository +} + +""" +Autogenerated input type of UpdateDiscussionComment +""" +input UpdateDiscussionCommentInput { + """ + The new contents of the comment body. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion comment to update. + """ + commentId: ID! +} + +""" +Autogenerated return type of UpdateDiscussionComment +""" +type UpdateDiscussionCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The modified discussion comment. + """ + comment: DiscussionComment +} + +""" +Autogenerated input type of UpdateDiscussion +""" +input UpdateDiscussionInput { + """ + The new contents of the discussion body. + """ + body: String + + """ + The Node ID of a discussion category within the same repository to change this discussion to. + """ + categoryId: ID + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion to update. + """ + discussionId: ID! + + """ + The new discussion title. + """ + title: String +} + +""" +Autogenerated return type of UpdateDiscussion +""" +type UpdateDiscussionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The modified discussion. + """ + discussion: Discussion +} + +""" +Autogenerated input type of UpdateEnterpriseAdministratorRole +""" +input UpdateEnterpriseAdministratorRoleInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Enterprise which the admin belongs to. + """ + enterpriseId: ID! + + """ + The login of a administrator whose role is being changed. + """ + login: String! + + """ + The new role for the Enterprise administrator. + """ + role: EnterpriseAdministratorRole! +} + +""" +Autogenerated return type of UpdateEnterpriseAdministratorRole +""" +type UpdateEnterpriseAdministratorRolePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A message confirming the result of changing the administrator's role. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseAllowPrivateRepositoryForkingSetting +""" +input UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the allow private repository forking setting. + """ + enterpriseId: ID! + + """ + The value for the allow private repository forking setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseAllowPrivateRepositoryForkingSetting +""" +type UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated allow private repository forking setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the allow private repository forking setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseDefaultRepositoryPermissionSetting +""" +input UpdateEnterpriseDefaultRepositoryPermissionSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the base repository permission setting. + """ + enterpriseId: ID! + + """ + The value for the base repository permission setting on the enterprise. + """ + settingValue: EnterpriseDefaultRepositoryPermissionSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseDefaultRepositoryPermissionSetting +""" +type UpdateEnterpriseDefaultRepositoryPermissionSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated base repository permission setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the base repository permission setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting +""" +input UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can change repository visibility setting. + """ + enterpriseId: ID! + + """ + The value for the members can change repository visibility setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting +""" +type UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can change repository visibility setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can change repository visibility setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanCreateRepositoriesSetting +""" +input UpdateEnterpriseMembersCanCreateRepositoriesSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can create repositories setting. + """ + enterpriseId: ID! + + """ + Allow members to create internal repositories. Defaults to current value. + """ + membersCanCreateInternalRepositories: Boolean + + """ + Allow members to create private repositories. Defaults to current value. + """ + membersCanCreatePrivateRepositories: Boolean + + """ + Allow members to create public repositories. Defaults to current value. + """ + membersCanCreatePublicRepositories: Boolean + + """ + When false, allow member organizations to set their own repository creation member privileges. + """ + membersCanCreateRepositoriesPolicyEnabled: Boolean + + """ + Value for the members can create repositories setting on the enterprise. This + or the granular public/private/internal allowed fields (but not both) must be provided. + """ + settingValue: EnterpriseMembersCanCreateRepositoriesSettingValue +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanCreateRepositoriesSetting +""" +type UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can create repositories setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can create repositories setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanDeleteIssuesSetting +""" +input UpdateEnterpriseMembersCanDeleteIssuesSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can delete issues setting. + """ + enterpriseId: ID! + + """ + The value for the members can delete issues setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanDeleteIssuesSetting +""" +type UpdateEnterpriseMembersCanDeleteIssuesSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can delete issues setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can delete issues setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanDeleteRepositoriesSetting +""" +input UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can delete repositories setting. + """ + enterpriseId: ID! + + """ + The value for the members can delete repositories setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanDeleteRepositoriesSetting +""" +type UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can delete repositories setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can delete repositories setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanInviteCollaboratorsSetting +""" +input UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can invite collaborators setting. + """ + enterpriseId: ID! + + """ + The value for the members can invite collaborators setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanInviteCollaboratorsSetting +""" +type UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can invite collaborators setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can invite collaborators setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanMakePurchasesSetting +""" +input UpdateEnterpriseMembersCanMakePurchasesSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can make purchases setting. + """ + enterpriseId: ID! + + """ + The value for the members can make purchases setting on the enterprise. + """ + settingValue: EnterpriseMembersCanMakePurchasesSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanMakePurchasesSetting +""" +type UpdateEnterpriseMembersCanMakePurchasesSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can make purchases setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can make purchases setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting +""" +input UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can update protected branches setting. + """ + enterpriseId: ID! + + """ + The value for the members can update protected branches setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting +""" +type UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can update protected branches setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can update protected branches setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseMembersCanViewDependencyInsightsSetting +""" +input UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the members can view dependency insights setting. + """ + enterpriseId: ID! + + """ + The value for the members can view dependency insights setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseMembersCanViewDependencyInsightsSetting +""" +type UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated members can view dependency insights setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the members can view dependency insights setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseOrganizationProjectsSetting +""" +input UpdateEnterpriseOrganizationProjectsSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the organization projects setting. + """ + enterpriseId: ID! + + """ + The value for the organization projects setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseOrganizationProjectsSetting +""" +type UpdateEnterpriseOrganizationProjectsSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated organization projects setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the organization projects setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseOwnerOrganizationRole +""" +input UpdateEnterpriseOwnerOrganizationRoleInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Enterprise which the owner belongs to. + """ + enterpriseId: ID! + + """ + The ID of the organization for membership change. + """ + organizationId: ID! + + """ + The role to assume in the organization. + """ + organizationRole: RoleInOrganization! +} + +""" +Autogenerated return type of UpdateEnterpriseOwnerOrganizationRole +""" +type UpdateEnterpriseOwnerOrganizationRolePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A message confirming the result of changing the owner's organization role. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseProfile +""" +input UpdateEnterpriseProfileInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The description of the enterprise. + """ + description: String + + """ + The Enterprise ID to update. + """ + enterpriseId: ID! + + """ + The location of the enterprise. + """ + location: String + + """ + The name of the enterprise. + """ + name: String + + """ + The URL of the enterprise's website. + """ + websiteUrl: String +} + +""" +Autogenerated return type of UpdateEnterpriseProfile +""" +type UpdateEnterpriseProfilePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated enterprise. + """ + enterprise: Enterprise +} + +""" +Autogenerated input type of UpdateEnterpriseRepositoryProjectsSetting +""" +input UpdateEnterpriseRepositoryProjectsSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the repository projects setting. + """ + enterpriseId: ID! + + """ + The value for the repository projects setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseRepositoryProjectsSetting +""" +type UpdateEnterpriseRepositoryProjectsSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated repository projects setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the repository projects setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseTeamDiscussionsSetting +""" +input UpdateEnterpriseTeamDiscussionsSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the team discussions setting. + """ + enterpriseId: ID! + + """ + The value for the team discussions setting on the enterprise. + """ + settingValue: EnterpriseEnabledDisabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseTeamDiscussionsSetting +""" +type UpdateEnterpriseTeamDiscussionsSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated team discussions setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the team discussions setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnterpriseTwoFactorAuthenticationRequiredSetting +""" +input UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the enterprise on which to set the two factor authentication required setting. + """ + enterpriseId: ID! + + """ + The value for the two factor authentication required setting on the enterprise. + """ + settingValue: EnterpriseEnabledSettingValue! +} + +""" +Autogenerated return type of UpdateEnterpriseTwoFactorAuthenticationRequiredSetting +""" +type UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The enterprise with the updated two factor authentication required setting. + """ + enterprise: Enterprise + + """ + A message confirming the result of updating the two factor authentication required setting. + """ + message: String +} + +""" +Autogenerated input type of UpdateEnvironment +""" +input UpdateEnvironmentInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The node ID of the environment. + """ + environmentId: ID! + + """ + The ids of users or teams that can approve deployments to this environment + """ + reviewers: [ID!] + + """ + The wait timer in minutes. + """ + waitTimer: Int +} + +""" +Autogenerated return type of UpdateEnvironment +""" +type UpdateEnvironmentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated environment. + """ + environment: Environment +} + +""" +Autogenerated input type of UpdateIpAllowListEnabledSetting +""" +input UpdateIpAllowListEnabledSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the owner on which to set the IP allow list enabled setting. + """ + ownerId: ID! + + """ + The value for the IP allow list enabled setting. + """ + settingValue: IpAllowListEnabledSettingValue! +} + +""" +Autogenerated return type of UpdateIpAllowListEnabledSetting +""" +type UpdateIpAllowListEnabledSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The IP allow list owner on which the setting was updated. + """ + owner: IpAllowListOwner +} + +""" +Autogenerated input type of UpdateIpAllowListEntry +""" +input UpdateIpAllowListEntryInput { + """ + An IP address or range of addresses in CIDR notation. + """ + allowListValue: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the IP allow list entry to update. + """ + ipAllowListEntryId: ID! + + """ + Whether the IP allow list entry is active when an IP allow list is enabled. + """ + isActive: Boolean! + + """ + An optional name for the IP allow list entry. + """ + name: String +} + +""" +Autogenerated return type of UpdateIpAllowListEntry +""" +type UpdateIpAllowListEntryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The IP allow list entry that was updated. + """ + ipAllowListEntry: IpAllowListEntry +} + +""" +Autogenerated input type of UpdateIpAllowListForInstalledAppsEnabledSetting +""" +input UpdateIpAllowListForInstalledAppsEnabledSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the owner. + """ + ownerId: ID! + + """ + The value for the IP allow list configuration for installed GitHub Apps setting. + """ + settingValue: IpAllowListForInstalledAppsEnabledSettingValue! +} + +""" +Autogenerated return type of UpdateIpAllowListForInstalledAppsEnabledSetting +""" +type UpdateIpAllowListForInstalledAppsEnabledSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The IP allow list owner on which the setting was updated. + """ + owner: IpAllowListOwner +} + +""" +Autogenerated input type of UpdateIssueComment +""" +input UpdateIssueCommentInput { + """ + The updated text of the comment. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the IssueComment to modify. + """ + id: ID! +} + +""" +Autogenerated return type of UpdateIssueComment +""" +type UpdateIssueCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated comment. + """ + issueComment: IssueComment +} + +""" +Autogenerated input type of UpdateIssue +""" +input UpdateIssueInput { + """ + An array of Node IDs of users for this issue. + """ + assigneeIds: [ID!] + + """ + The body for the issue description. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the Issue to modify. + """ + id: ID! + + """ + An array of Node IDs of labels for this issue. + """ + labelIds: [ID!] + + """ + The Node ID of the milestone for this issue. + """ + milestoneId: ID + + """ + An array of Node IDs for projects associated with this issue. + """ + projectIds: [ID!] + + """ + The desired issue state. + """ + state: IssueState + + """ + The title for the issue. + """ + title: String +} + +""" +Autogenerated return type of UpdateIssue +""" +type UpdateIssuePayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The issue. + """ + issue: Issue +} + +""" +Autogenerated input type of UpdateNotificationRestrictionSetting +""" +input UpdateNotificationRestrictionSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the owner on which to set the restrict notifications setting. + """ + ownerId: ID! + + """ + The value for the restrict notifications setting. + """ + settingValue: NotificationRestrictionSettingValue! +} + +""" +Autogenerated return type of UpdateNotificationRestrictionSetting +""" +type UpdateNotificationRestrictionSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The owner on which the setting was updated. + """ + owner: VerifiableDomainOwner +} + +""" +Autogenerated input type of UpdateOrganizationAllowPrivateRepositoryForkingSetting +""" +input UpdateOrganizationAllowPrivateRepositoryForkingSettingInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Enable forking of private repositories in the organization? + """ + forkingEnabled: Boolean! + + """ + The ID of the organization on which to set the allow private repository forking setting. + """ + organizationId: ID! +} + +""" +Autogenerated return type of UpdateOrganizationAllowPrivateRepositoryForkingSetting +""" +type UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A message confirming the result of updating the allow private repository forking setting. + """ + message: String + + """ + The organization with the updated allow private repository forking setting. + """ + organization: Organization +} + +""" +Autogenerated input type of UpdateProjectCard +""" +input UpdateProjectCardInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Whether or not the ProjectCard should be archived + """ + isArchived: Boolean + + """ + The note of ProjectCard. + """ + note: String + + """ + The ProjectCard ID to update. + """ + projectCardId: ID! +} + +""" +Autogenerated return type of UpdateProjectCard +""" +type UpdateProjectCardPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated ProjectCard. + """ + projectCard: ProjectCard +} + +""" +Autogenerated input type of UpdateProjectColumn +""" +input UpdateProjectColumnInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of project column. + """ + name: String! + + """ + The ProjectColumn ID to update. + """ + projectColumnId: ID! +} + +""" +Autogenerated return type of UpdateProjectColumn +""" +type UpdateProjectColumnPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated project column. + """ + projectColumn: ProjectColumn +} + +""" +Autogenerated input type of UpdateProjectDraftIssue +""" +input UpdateProjectDraftIssueInput { + """ + The IDs of the assignees of the draft issue. + """ + assigneeIds: [ID!] + + """ + The body of the draft issue. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the draft issue to update. + """ + draftIssueId: ID! + + """ + The title of the draft issue. + """ + title: String +} + +""" +Autogenerated return type of UpdateProjectDraftIssue +""" +type UpdateProjectDraftIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The draft issue updated in the project. + """ + draftIssue: DraftIssue +} + +""" +Autogenerated input type of UpdateProject +""" +input UpdateProjectInput { + """ + The description of project. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The name of project. + """ + name: String + + """ + The Project ID to update. + """ + projectId: ID! + + """ + Whether the project is public or not. + """ + public: Boolean + + """ + Whether the project is open or closed. + """ + state: ProjectState +} + +""" +Autogenerated input type of UpdateProjectNext +""" +input UpdateProjectNextInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Set the project to closed or open. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `closed` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + closed: Boolean + + """ + Set the readme description of the project. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `description` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + description: String + + """ + The ID of the Project to update. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `projectId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + projectId: ID + + """ + Set the project to public or private. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `public` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + public: Boolean + + """ + Set the short description of the project. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `shortDescription` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + shortDescription: String + + """ + Set the title of the project. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `title` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + title: String +} + +""" +Autogenerated input type of UpdateProjectNextItemField +""" +input UpdateProjectNextItemFieldInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The id of the field to be updated. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `fieldId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + fieldId: ID + + """ + The id of the item to be updated. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `itemId` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + itemId: ID + + """ + The ID of the Project. This field is required. + """ + projectId: ID + + """ + The value which will be set on the field. This field is required. + + **Upcoming Change on 2022-10-01 UTC** + **Description:** `value` will be removed. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, + to find a suitable replacement. + **Reason:** The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. + """ + value: String +} + +""" +Autogenerated return type of UpdateProjectNextItemField +""" +type UpdateProjectNextItemFieldPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated item. + """ + projectNextItem: ProjectNextItem @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Autogenerated return type of UpdateProjectNext +""" +type UpdateProjectNextPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated Project. + """ + projectNext: ProjectNext @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") +} + +""" +Autogenerated return type of UpdateProject +""" +type UpdateProjectPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated project. + """ + project: Project +} + +""" +Autogenerated input type of UpdateProjectV2DraftIssue +""" +input UpdateProjectV2DraftIssueInput { + """ + The IDs of the assignees of the draft issue. + """ + assigneeIds: [ID!] + + """ + The body of the draft issue. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the draft issue to update. + """ + draftIssueId: ID! + + """ + The title of the draft issue. + """ + title: String +} + +""" +Autogenerated return type of UpdateProjectV2DraftIssue +""" +type UpdateProjectV2DraftIssuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The draft issue updated in the project. + """ + draftIssue: DraftIssue +} + +""" +Autogenerated input type of UpdateProjectV2 +""" +input UpdateProjectV2Input { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Set the project to closed or open. + """ + closed: Boolean + + """ + The ID of the Project to update. + """ + projectId: ID! + + """ + Set the project to public or private. + """ + public: Boolean + + """ + Set the readme description of the project. + """ + readme: String + + """ + Set the short description of the project. + """ + shortDescription: String + + """ + Set the title of the project. + """ + title: String +} + +""" +Autogenerated input type of UpdateProjectV2ItemFieldValue +""" +input UpdateProjectV2ItemFieldValueInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the field to be updated. + """ + fieldId: ID! + + """ + The ID of the item to be updated. + """ + itemId: ID! + + """ + The ID of the Project. + """ + projectId: ID! + + """ + The value which will be set on the field. + """ + value: ProjectV2FieldValue! +} + +""" +Autogenerated return type of UpdateProjectV2ItemFieldValue +""" +type UpdateProjectV2ItemFieldValuePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated item. + """ + projectV2Item: ProjectV2Item +} + +""" +Autogenerated input type of UpdateProjectV2ItemPosition +""" +input UpdateProjectV2ItemPositionInput { + """ + The ID of the item to position this item after. If omitted or set to null the item will be moved to top. + """ + afterId: ID + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the item to be moved. + """ + itemId: ID! + + """ + The ID of the Project. + """ + projectId: ID! +} + +""" +Autogenerated return type of UpdateProjectV2ItemPosition +""" +type UpdateProjectV2ItemPositionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The items in the new order + """ + items( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2ItemConnection +} + +""" +Autogenerated return type of UpdateProjectV2 +""" +type UpdateProjectV2Payload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated Project. + """ + projectV2: ProjectV2 +} + +""" +Autogenerated input type of UpdatePullRequestBranch +""" +input UpdatePullRequestBranchInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The head ref oid for the upstream branch. + """ + expectedHeadOid: GitObjectID + + """ + The Node ID of the pull request. + """ + pullRequestId: ID! +} + +""" +Autogenerated return type of UpdatePullRequestBranch +""" +type UpdatePullRequestBranchPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated pull request. + """ + pullRequest: PullRequest +} + +""" +Autogenerated input type of UpdatePullRequest +""" +input UpdatePullRequestInput { + """ + An array of Node IDs of users for this pull request. + """ + assigneeIds: [ID!] + + """ + The name of the branch you want your changes pulled into. This should be an existing branch + on the current repository. + """ + baseRefName: String + + """ + The contents of the pull request. + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + An array of Node IDs of labels for this pull request. + """ + labelIds: [ID!] + + """ + Indicates whether maintainers can modify the pull request. + """ + maintainerCanModify: Boolean + + """ + The Node ID of the milestone for this pull request. + """ + milestoneId: ID + + """ + An array of Node IDs for projects associated with this pull request. + """ + projectIds: [ID!] + + """ + The Node ID of the pull request. + """ + pullRequestId: ID! + + """ + The target state of the pull request. + """ + state: PullRequestUpdateState + + """ + The title of the pull request. + """ + title: String +} + +""" +Autogenerated return type of UpdatePullRequest +""" +type UpdatePullRequestPayload { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated pull request. + """ + pullRequest: PullRequest +} + +""" +Autogenerated input type of UpdatePullRequestReviewComment +""" +input UpdatePullRequestReviewCommentInput { + """ + The text of the comment. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the comment to modify. + """ + pullRequestReviewCommentId: ID! +} + +""" +Autogenerated return type of UpdatePullRequestReviewComment +""" +type UpdatePullRequestReviewCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated comment. + """ + pullRequestReviewComment: PullRequestReviewComment +} + +""" +Autogenerated input type of UpdatePullRequestReview +""" +input UpdatePullRequestReviewInput { + """ + The contents of the pull request review body. + """ + body: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the pull request review to modify. + """ + pullRequestReviewId: ID! +} + +""" +Autogenerated return type of UpdatePullRequestReview +""" +type UpdatePullRequestReviewPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated pull request review. + """ + pullRequestReview: PullRequestReview +} + +""" +Autogenerated input type of UpdateRef +""" +input UpdateRefInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Permit updates of branch Refs that are not fast-forwards? + """ + force: Boolean = false + + """ + The GitObjectID that the Ref shall be updated to target. + """ + oid: GitObjectID! + + """ + The Node ID of the Ref to be updated. + """ + refId: ID! +} + +""" +Autogenerated return type of UpdateRef +""" +type UpdateRefPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated Ref. + """ + ref: Ref +} + +""" +Autogenerated input type of UpdateRepository +""" +input UpdateRepositoryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A new description for the repository. Pass an empty string to erase the existing description. + """ + description: String + + """ + Indicates if the repository should have the issues feature enabled. + """ + hasIssuesEnabled: Boolean + + """ + Indicates if the repository should have the project boards feature enabled. + """ + hasProjectsEnabled: Boolean + + """ + Indicates if the repository should have the wiki feature enabled. + """ + hasWikiEnabled: Boolean + + """ + The URL for a web page about this repository. Pass an empty string to erase the existing URL. + """ + homepageUrl: URI + + """ + The new name of the repository. + """ + name: String + + """ + The ID of the repository to update. + """ + repositoryId: ID! + + """ + Whether this repository should be marked as a template such that anyone who + can access it can create new repositories with the same files and directory structure. + """ + template: Boolean +} + +""" +Autogenerated return type of UpdateRepository +""" +type UpdateRepositoryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated repository. + """ + repository: Repository +} + +""" +Autogenerated input type of UpdateSponsorshipPreferences +""" +input UpdateSponsorshipPreferencesInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Specify whether others should be able to see that the sponsor is sponsoring + the sponsorable. Public visibility still does not reveal which tier is used. + """ + privacyLevel: SponsorshipPrivacy = PUBLIC + + """ + Whether the sponsor should receive email updates from the sponsorable. + """ + receiveEmails: Boolean = true + + """ + The ID of the user or organization who is acting as the sponsor, paying for + the sponsorship. Required if sponsorLogin is not given. + """ + sponsorId: ID + + """ + The username of the user or organization who is acting as the sponsor, paying + for the sponsorship. Required if sponsorId is not given. + """ + sponsorLogin: String + + """ + The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given. + """ + sponsorableId: ID + + """ + The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given. + """ + sponsorableLogin: String +} + +""" +Autogenerated return type of UpdateSponsorshipPreferences +""" +type UpdateSponsorshipPreferencesPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The sponsorship that was updated. + """ + sponsorship: Sponsorship +} + +""" +Autogenerated input type of UpdateSubscription +""" +input UpdateSubscriptionInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The new state of the subscription. + """ + state: SubscriptionState! + + """ + The Node ID of the subscribable object to modify. + """ + subscribableId: ID! +} + +""" +Autogenerated return type of UpdateSubscription +""" +type UpdateSubscriptionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The input subscribable entity. + """ + subscribable: Subscribable +} + +""" +Autogenerated input type of UpdateTeamDiscussionComment +""" +input UpdateTeamDiscussionCommentInput { + """ + The updated text of the comment. + """ + body: String! + + """ + The current version of the body content. + """ + bodyVersion: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the comment to modify. + """ + id: ID! +} + +""" +Autogenerated return type of UpdateTeamDiscussionComment +""" +type UpdateTeamDiscussionCommentPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated comment. + """ + teamDiscussionComment: TeamDiscussionComment +} + +""" +Autogenerated input type of UpdateTeamDiscussion +""" +input UpdateTeamDiscussionInput { + """ + The updated text of the discussion. + """ + body: String + + """ + The current version of the body content. If provided, this update operation + will be rejected if the given version does not match the latest version on the server. + """ + bodyVersion: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the discussion to modify. + """ + id: ID! + + """ + If provided, sets the pinned state of the updated discussion. + """ + pinned: Boolean + + """ + The updated title of the discussion. + """ + title: String +} + +""" +Autogenerated return type of UpdateTeamDiscussion +""" +type UpdateTeamDiscussionPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The updated discussion. + """ + teamDiscussion: TeamDiscussion +} + +""" +Autogenerated input type of UpdateTeamsRepository +""" +input UpdateTeamsRepositoryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Permission that should be granted to the teams. + """ + permission: RepositoryPermission! + + """ + Repository ID being granted access to. + """ + repositoryId: ID! + + """ + A list of teams being granted access. Limit: 10 + """ + teamIds: [ID!]! +} + +""" +Autogenerated return type of UpdateTeamsRepository +""" +type UpdateTeamsRepositoryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The repository that was updated. + """ + repository: Repository + + """ + The teams granted permission on the repository. + """ + teams: [Team!] +} + +""" +Autogenerated input type of UpdateTopics +""" +input UpdateTopicsInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The Node ID of the repository. + """ + repositoryId: ID! + + """ + An array of topic names. + """ + topicNames: [String!]! +} + +""" +Autogenerated return type of UpdateTopics +""" +type UpdateTopicsPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Names of the provided topics that are not valid. + """ + invalidTopicNames: [String!] + + """ + The updated repository. + """ + repository: Repository +} + +""" +A user is an individual's account on GitHub that owns repositories and can make new content. +""" +type User implements Actor & Node & PackageOwner & ProfileOwner & ProjectNextOwner & ProjectOwner & ProjectV2Owner & ProjectV2Recent & RepositoryDiscussionAuthor & RepositoryDiscussionCommentAuthor & RepositoryOwner & Sponsorable & UniformResourceLocatable { + """ + Determine if this repository owner has any items that can be pinned to their profile. + """ + anyPinnableItems( + """ + Filter to only a particular kind of pinnable item. + """ + type: PinnableItemType + ): Boolean! + + """ + A URL pointing to the user's public avatar. + """ + avatarUrl( + """ + The size of the resulting square image. + """ + size: Int + ): URI! + + """ + The user's public profile bio. + """ + bio: String + + """ + The user's public profile bio as HTML. + """ + bioHTML: HTML! + + """ + Could this user receive email notifications, if the organization had notification restrictions enabled? + """ + canReceiveOrganizationEmailsWhenNotificationsRestricted( + """ + The login of the organization to check. + """ + login: String! + ): Boolean! + + """ + A list of commit comments made by this user. + """ + commitComments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): CommitCommentConnection! + + """ + The user's public profile company. + """ + company: String + + """ + The user's public profile company as HTML. + """ + companyHTML: HTML! + + """ + The collection of contributions this user has made to different repositories. + """ + contributionsCollection( + """ + Only contributions made at this time or later will be counted. If omitted, defaults to a year ago. + """ + from: DateTime + + """ + The ID of the organization used to filter contributions. + """ + organizationID: ID + + """ + Only contributions made before and up to (including) this time will be + counted. If omitted, defaults to the current time or one year from the + provided from argument. + """ + to: DateTime + ): ContributionsCollection! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The user's publicly visible profile email. + """ + email: String! + + """ + The estimated next GitHub Sponsors payout for this user/organization in cents (USD). + """ + estimatedNextSponsorsPayoutInCents: Int! + + """ + A list of users the given user is followed by. + """ + followers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): FollowerConnection! + + """ + A list of users the given user is following. + """ + following( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): FollowingConnection! + + """ + Find gist by repo name. + """ + gist( + """ + The gist name to find. + """ + name: String! + ): Gist + + """ + A list of gist comments made by this user. + """ + gistComments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GistCommentConnection! + + """ + A list of the Gists the user has created. + """ + gists( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for gists returned from the connection + """ + orderBy: GistOrder + + """ + Filters Gists according to privacy. + """ + privacy: GistPrivacy + ): GistConnection! + + """ + True if this user/organization has a GitHub Sponsors listing. + """ + hasSponsorsListing: Boolean! + + """ + The hovercard information for this user in a given context + """ + hovercard( + """ + The ID of the subject to get the hovercard in the context of + """ + primarySubjectId: ID + ): Hovercard! + id: ID! + + """ + The interaction ability settings for this user. + """ + interactionAbility: RepositoryInteractionAbility + + """ + Whether or not this user is a participant in the GitHub Security Bug Bounty. + """ + isBountyHunter: Boolean! + + """ + Whether or not this user is a participant in the GitHub Campus Experts Program. + """ + isCampusExpert: Boolean! + + """ + Whether or not this user is a GitHub Developer Program member. + """ + isDeveloperProgramMember: Boolean! + + """ + Whether or not this user is a GitHub employee. + """ + isEmployee: Boolean! + + """ + Whether or not this user is following the viewer. Inverse of viewer_is_following + """ + isFollowingViewer: Boolean! + + """ + Whether or not this user is a member of the GitHub Stars Program. + """ + isGitHubStar: Boolean! + + """ + Whether or not the user has marked themselves as for hire. + """ + isHireable: Boolean! + + """ + Whether or not this user is a site administrator. + """ + isSiteAdmin: Boolean! + + """ + Check if the given account is sponsoring this user/organization. + """ + isSponsoredBy( + """ + The target account's login. + """ + accountLogin: String! + ): Boolean! + + """ + True if the viewer is sponsored by this user/organization. + """ + isSponsoringViewer: Boolean! + + """ + Whether or not this user is the viewing user. + """ + isViewer: Boolean! + + """ + A list of issue comments made by this user. + """ + issueComments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issue comments returned from the connection. + """ + orderBy: IssueCommentOrder + ): IssueCommentConnection! + + """ + A list of issues associated with this user. + """ + issues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filtering options for issues returned from the connection. + """ + filterBy: IssueFilters + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for issues returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the issues by. + """ + states: [IssueState!] + ): IssueConnection! + + """ + Showcases a selection of repositories and gists that the profile owner has + either curated or that have been selected automatically based on popularity. + """ + itemShowcase: ProfileItemShowcase! + + """ + The user's public profile location. + """ + location: String + + """ + The username used to login. + """ + login: String! + + """ + The estimated monthly GitHub Sponsors income for this user/organization in cents (USD). + """ + monthlyEstimatedSponsorsIncomeInCents: Int! + + """ + The user's public profile name. + """ + name: String + + """ + Find an organization by its login that the user belongs to. + """ + organization( + """ + The login of the organization to find. + """ + login: String! + ): Organization + + """ + Verified email addresses that match verified domains for a specified organization the user is a member of. + """ + organizationVerifiedDomainEmails( + """ + The login of the organization to match verified domains from. + """ + login: String! + ): [String!]! + + """ + A list of organizations the user belongs to. + """ + organizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationConnection! + + """ + A list of packages under the owner. + """ + packages( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Find packages by their names. + """ + names: [String] + + """ + Ordering of the returned packages. + """ + orderBy: PackageOrder = {field: CREATED_AT, direction: DESC} + + """ + Filter registry package by type. + """ + packageType: PackageType + + """ + Find packages in a repository by ID. + """ + repositoryId: ID + ): PackageConnection! + + """ + A list of repositories and gists this profile owner can pin to their profile. + """ + pinnableItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter the types of pinnable items that are returned. + """ + types: [PinnableItemType!] + ): PinnableItemConnection! + + """ + A list of repositories and gists this profile owner has pinned to their profile + """ + pinnedItems( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter the types of pinned items that are returned. + """ + types: [PinnableItemType!] + ): PinnableItemConnection! + + """ + Returns how many more items this profile owner can pin to their profile. + """ + pinnedItemsRemaining: Int! + + """ + Find project by number. + """ + project( + """ + The project number to find. + """ + number: Int! + ): Project + + """ + Find a project by project (beta) number. + """ + projectNext( + """ + The project (beta) number. + """ + number: Int! + ): ProjectNext @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + Find a project by number. + """ + projectV2( + """ + The project number. + """ + number: Int! + ): ProjectV2 + + """ + A list of projects under the owner. + """ + projects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for projects returned from the connection + """ + orderBy: ProjectOrder + + """ + Query to search projects by, currently only searching by name. + """ + search: String + + """ + A list of states to filter the projects by. + """ + states: [ProjectState!] + ): ProjectConnection! + + """ + A list of projects (beta) under the owner. + """ + projectsNext( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + A project (beta) to search for under the the owner. + """ + query: String + + """ + How to order the returned projects (beta). + """ + sortBy: ProjectNextOrderField = TITLE + ): ProjectNextConnection! @deprecated(reason: "The `ProjectNext` API is deprecated in favour of the more capable `ProjectV2` API. Follow the ProjectV2 guide at https://github.blog/changelog/2022-06-23-the-new-github-issues-june-23rd-update/, to find a suitable replacement. Removal on 2022-10-01 UTC.") + + """ + The HTTP path listing user's projects + """ + projectsResourcePath: URI! + + """ + The HTTP URL listing user's projects + """ + projectsUrl: URI! + + """ + A list of projects under the owner. + """ + projectsV2( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + How to order the returned projects. + """ + orderBy: ProjectV2Order = {field: NUMBER, direction: DESC} + + """ + A project to search for under the the owner. + """ + query: String + ): ProjectV2Connection! + + """ + A list of public keys associated with this user. + """ + publicKeys( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): PublicKeyConnection! + + """ + A list of pull requests associated with this user. + """ + pullRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + The base ref name to filter the pull requests by. + """ + baseRefName: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + The head ref name to filter the pull requests by. + """ + headRefName: String + + """ + A list of label names to filter the pull requests by. + """ + labels: [String!] + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for pull requests returned from the connection. + """ + orderBy: IssueOrder + + """ + A list of states to filter the pull requests by. + """ + states: [PullRequestState!] + ): PullRequestConnection! + + """ + Recent projects that this user has modified in the context of the owner. + """ + recentProjects( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ProjectV2Connection! + + """ + A list of repositories that the user owns. + """ + repositories( + """ + Array of viewer's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + current viewer owns. + """ + affiliations: [RepositoryAffiliation] + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If non-null, filters repositories according to whether they are forks of another repository + """ + isFork: Boolean + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder + + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR] + + """ + If non-null, filters repositories according to privacy + """ + privacy: RepositoryPrivacy + ): RepositoryConnection! + + """ + A list of repositories that the user recently contributed to. + """ + repositoriesContributedTo( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + If non-null, include only the specified types of contributions. The + GitHub.com UI uses [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY] + """ + contributionTypes: [RepositoryContributionType] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If true, include user repositories + """ + includeUserRepositories: Boolean + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder + + """ + If non-null, filters repositories according to privacy + """ + privacy: RepositoryPrivacy + ): RepositoryConnection! + + """ + Find Repository. + """ + repository( + """ + Follow repository renames. If disabled, a repository referenced by its old name will return an error. + """ + followRenames: Boolean = true + + """ + Name of Repository to find. + """ + name: String! + ): Repository + + """ + Discussion comments this user has authored. + """ + repositoryDiscussionComments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter discussion comments to only those that were marked as the answer + """ + onlyAnswers: Boolean = false + + """ + Filter discussion comments to only those in a specific repository. + """ + repositoryId: ID + ): DiscussionCommentConnection! + + """ + Discussions this user has started. + """ + repositoryDiscussions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter discussions to only those that have been answered or not. Defaults to + including both answered and unanswered discussions. + """ + answered: Boolean = null + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for discussions returned from the connection. + """ + orderBy: DiscussionOrder = {field: CREATED_AT, direction: DESC} + + """ + Filter discussions to only those in a specific repository. + """ + repositoryId: ID + ): DiscussionConnection! + + """ + The HTTP path for this user + """ + resourcePath: URI! + + """ + Replies this user has saved + """ + savedReplies( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + The field to order saved replies by. + """ + orderBy: SavedReplyOrder = {field: UPDATED_AT, direction: DESC} + ): SavedReplyConnection + + """ + List of users and organizations this entity is sponsoring. + """ + sponsoring( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for the users and organizations returned from the connection. + """ + orderBy: SponsorOrder = {field: RELEVANCE, direction: DESC} + ): SponsorConnection! + + """ + List of sponsors for this user or organization. + """ + sponsors( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsors returned from the connection. + """ + orderBy: SponsorOrder = {field: RELEVANCE, direction: DESC} + + """ + If given, will filter for sponsors at the given tier. Will only return + sponsors whose tier the viewer is permitted to see. + """ + tierId: ID + ): SponsorConnection! + + """ + Events involving this sponsorable, such as new sponsorships. + """ + sponsorsActivities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for activity returned from the connection. + """ + orderBy: SponsorsActivityOrder = {field: TIMESTAMP, direction: DESC} + + """ + Filter activities returned to only those that occurred in a given time range. + """ + period: SponsorsActivityPeriod = MONTH + ): SponsorsActivityConnection! + + """ + The GitHub Sponsors listing for this user or organization. + """ + sponsorsListing: SponsorsListing + + """ + The sponsorship from the viewer to this user/organization; that is, the + sponsorship where you're the sponsor. Only returns a sponsorship if it is active. + """ + sponsorshipForViewerAsSponsor: Sponsorship + + """ + The sponsorship from this user/organization to the viewer; that is, the + sponsorship you're receiving. Only returns a sponsorship if it is active. + """ + sponsorshipForViewerAsSponsorable: Sponsorship + + """ + List of sponsorship updates sent from this sponsorable to sponsors. + """ + sponsorshipNewsletters( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorship updates returned from the connection. + """ + orderBy: SponsorshipNewsletterOrder = {field: CREATED_AT, direction: DESC} + ): SponsorshipNewsletterConnection! + + """ + This object's sponsorships as the maintainer. + """ + sponsorshipsAsMaintainer( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Whether or not to include private sponsorships in the result set + """ + includePrivate: Boolean = false + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorships returned from this connection. If left + blank, the sponsorships will be ordered based on relevancy to the viewer. + """ + orderBy: SponsorshipOrder + ): SponsorshipConnection! + + """ + This object's sponsorships as the sponsor. + """ + sponsorshipsAsSponsor( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for sponsorships returned from this connection. If left + blank, the sponsorships will be ordered based on relevancy to the viewer. + """ + orderBy: SponsorshipOrder + ): SponsorshipConnection! + + """ + Repositories the user has starred. + """ + starredRepositories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order for connection + """ + orderBy: StarOrder + + """ + Filters starred repositories to only return repositories owned by the viewer. + """ + ownedByViewer: Boolean + ): StarredRepositoryConnection! + + """ + The user's description of what they're currently doing. + """ + status: UserStatus + + """ + Repositories the user has contributed to, ordered by contribution rank, plus repositories the user has created + """ + topRepositories( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder! + + """ + How far back in time to fetch contributed repositories + """ + since: DateTime + ): RepositoryConnection! + + """ + The user's Twitter username. + """ + twitterUsername: String + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this user + """ + url: URI! + + """ + Can the viewer pin repositories and gists to the profile? + """ + viewerCanChangePinnedItems: Boolean! + + """ + Can the current viewer create new projects on this owner. + """ + viewerCanCreateProjects: Boolean! + + """ + Whether or not the viewer is able to follow the user. + """ + viewerCanFollow: Boolean! + + """ + Whether or not the viewer is able to sponsor this user/organization. + """ + viewerCanSponsor: Boolean! + + """ + Whether or not this user is followed by the viewer. Inverse of is_following_viewer. + """ + viewerIsFollowing: Boolean! + + """ + True if the viewer is sponsoring this user/organization. + """ + viewerIsSponsoring: Boolean! + + """ + A list of repositories the given user is watching. + """ + watching( + """ + Affiliation options for repositories returned from the connection. If none + specified, the results will include repositories for which the current + viewer is an owner or collaborator, or member. + """ + affiliations: [RepositoryAffiliation] + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + If non-null, filters repositories according to whether they have been locked + """ + isLocked: Boolean + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Ordering options for repositories returned from the connection + """ + orderBy: RepositoryOrder + + """ + Array of owner's affiliation options for repositories returned from the + connection. For example, OWNER will include only repositories that the + organization or user being viewed owns. + """ + ownerAffiliations: [RepositoryAffiliation] = [OWNER, COLLABORATOR] + + """ + If non-null, filters repositories according to privacy + """ + privacy: RepositoryPrivacy + ): RepositoryConnection! + + """ + A URL pointing to the user's public website/blog. + """ + websiteUrl: URI +} + +""" +The possible durations that a user can be blocked for. +""" +enum UserBlockDuration { + """ + The user was blocked for 1 day + """ + ONE_DAY + + """ + The user was blocked for 30 days + """ + ONE_MONTH + + """ + The user was blocked for 7 days + """ + ONE_WEEK + + """ + The user was blocked permanently + """ + PERMANENT + + """ + The user was blocked for 3 days + """ + THREE_DAYS +} + +""" +Represents a 'user_blocked' event on a given user. +""" +type UserBlockedEvent implements Node { + """ + Identifies the actor who performed the event. + """ + actor: Actor + + """ + Number of days that the user was blocked for. + """ + blockDuration: UserBlockDuration! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + id: ID! + + """ + The user who was blocked. + """ + subject: User +} + +""" +The connection type for User. +""" +type UserConnection { + """ + A list of edges. + """ + edges: [UserEdge] + + """ + A list of nodes. + """ + nodes: [User] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edit on user content +""" +type UserContentEdit implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the date and time when the object was deleted. + """ + deletedAt: DateTime + + """ + The actor who deleted this content + """ + deletedBy: Actor + + """ + A summary of the changes for this edit + """ + diff: String + + """ + When this content was edited + """ + editedAt: DateTime! + + """ + The actor who edited this content + """ + editor: Actor + id: ID! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +A list of edits to content. +""" +type UserContentEditConnection { + """ + A list of edges. + """ + edges: [UserContentEditEdge] + + """ + A list of nodes. + """ + nodes: [UserContentEdit] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type UserContentEditEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: UserContentEdit +} + +""" +Represents a user. +""" +type UserEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: User +} + +""" +Email attributes from External Identity +""" +type UserEmailMetadata { + """ + Boolean to identify primary emails + """ + primary: Boolean + + """ + Type of email + """ + type: String + + """ + Email id + """ + value: String! +} + +""" +The user's description of what they're currently doing. +""" +type UserStatus implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + An emoji summarizing the user's status. + """ + emoji: String + + """ + The status emoji as HTML. + """ + emojiHTML: HTML + + """ + If set, the status will not be shown after this date. + """ + expiresAt: DateTime + id: ID! + + """ + Whether this status indicates the user is not fully available on GitHub. + """ + indicatesLimitedAvailability: Boolean! + + """ + A brief message describing what the user is doing. + """ + message: String + + """ + The organization whose members can see this status. If null, this status is publicly visible. + """ + organization: Organization + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The user who has this status. + """ + user: User! +} + +""" +The connection type for UserStatus. +""" +type UserStatusConnection { + """ + A list of edges. + """ + edges: [UserStatusEdge] + + """ + A list of nodes. + """ + nodes: [UserStatus] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type UserStatusEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: UserStatus +} + +""" +Ordering options for user status connections. +""" +input UserStatusOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order user statuses by. + """ + field: UserStatusOrderField! +} + +""" +Properties by which user status connections can be ordered. +""" +enum UserStatusOrderField { + """ + Order user statuses by when they were updated. + """ + UPDATED_AT +} + +""" +A domain that can be verified or approved for an organization or an enterprise. +""" +type VerifiableDomain implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The DNS host name that should be used for verification. + """ + dnsHostName: URI + + """ + The unicode encoded domain. + """ + domain: URI! + + """ + Whether a TXT record for verification with the expected host name was found. + """ + hasFoundHostName: Boolean! + + """ + Whether a TXT record for verification with the expected verification token was found. + """ + hasFoundVerificationToken: Boolean! + id: ID! + + """ + Whether or not the domain is approved. + """ + isApproved: Boolean! + + """ + Whether this domain is required to exist for an organization or enterprise policy to be enforced. + """ + isRequiredForPolicyEnforcement: Boolean! + + """ + Whether or not the domain is verified. + """ + isVerified: Boolean! + + """ + The owner of the domain. + """ + owner: VerifiableDomainOwner! + + """ + The punycode encoded domain. + """ + punycodeEncodedDomain: URI! + + """ + The time that the current verification token will expire. + """ + tokenExpirationTime: DateTime + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The current verification token for the domain. + """ + verificationToken: String +} + +""" +The connection type for VerifiableDomain. +""" +type VerifiableDomainConnection { + """ + A list of edges. + """ + edges: [VerifiableDomainEdge] + + """ + A list of nodes. + """ + nodes: [VerifiableDomain] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! + + """ + Identifies the total count of items in the connection. + """ + totalCount: Int! +} + +""" +An edge in a connection. +""" +type VerifiableDomainEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: VerifiableDomain +} + +""" +Ordering options for verifiable domain connections. +""" +input VerifiableDomainOrder { + """ + The ordering direction. + """ + direction: OrderDirection! + + """ + The field to order verifiable domains by. + """ + field: VerifiableDomainOrderField! +} + +""" +Properties by which verifiable domain connections can be ordered. +""" +enum VerifiableDomainOrderField { + """ + Order verifiable domains by their creation date. + """ + CREATED_AT + + """ + Order verifiable domains by the domain name. + """ + DOMAIN +} + +""" +Types that can own a verifiable domain. +""" +union VerifiableDomainOwner = Enterprise | Organization + +""" +Autogenerated input type of VerifyVerifiableDomain +""" +input VerifyVerifiableDomainInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the verifiable domain to verify. + """ + id: ID! +} + +""" +Autogenerated return type of VerifyVerifiableDomain +""" +type VerifyVerifiableDomainPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The verifiable domain that was verified. + """ + domain: VerifiableDomain +} + +""" +A hovercard context with a message describing how the viewer is related. +""" +type ViewerHovercardContext implements HovercardContext { + """ + A string describing this context + """ + message: String! + + """ + An octicon to accompany this context + """ + octicon: String! + + """ + Identifies the user who is related to this context. + """ + viewer: User! +} + +""" +A subject that may be upvoted. +""" +interface Votable { + """ + Number of upvotes that this subject has received. + """ + upvoteCount: Int! + + """ + Whether or not the current user can add or remove an upvote on this subject. + """ + viewerCanUpvote: Boolean! + + """ + Whether or not the current user has already upvoted this subject. + """ + viewerHasUpvoted: Boolean! +} + +""" +A workflow contains meta information about an Actions workflow file. +""" +type Workflow implements Node { + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + id: ID! + + """ + The name of the workflow. + """ + name: String! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! +} + +""" +A workflow run. +""" +type WorkflowRun implements Node { + """ + The check suite this workflow run belongs to. + """ + checkSuite: CheckSuite! + + """ + Identifies the date and time when the object was created. + """ + createdAt: DateTime! + + """ + Identifies the primary key from the database. + """ + databaseId: Int + + """ + The log of deployment reviews + """ + deploymentReviews( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DeploymentReviewConnection! + id: ID! + + """ + The pending deployment requests of all check runs in this workflow run + """ + pendingDeploymentRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DeploymentRequestConnection! + + """ + The HTTP path for this workflow run + """ + resourcePath: URI! + + """ + A number that uniquely identifies this workflow run in its parent workflow. + """ + runNumber: Int! + + """ + Identifies the date and time when the object was last updated. + """ + updatedAt: DateTime! + + """ + The HTTP URL for this workflow run + """ + url: URI! + + """ + The workflow executed in this workflow run. + """ + workflow: Workflow! +} + +""" +A valid x509 certificate string +""" +scalar X509Certificate diff --git a/db/supergraph.yaml b/db/supergraph.yaml new file mode 100644 index 0000000..1143ae3 --- /dev/null +++ b/db/supergraph.yaml @@ -0,0 +1,10 @@ +federation_version: 2 +subgraphs: + a: + routing_url: http://a:4000/graphql + schema: + file: A/A.graphql + # b: + # routing_url: http://b:4000/graphql + # schema: + # file: B/B.graphql diff --git a/docs/resources/background-graphql.md b/docs/resources/background-graphql.md new file mode 100644 index 0000000..64a359d --- /dev/null +++ b/docs/resources/background-graphql.md @@ -0,0 +1,78 @@ +## Start here + +### GraphQL’s SDL language is the source of truth. + +* https://principledgraphql.com (in style of 12 factor) +* https://www.apollographql.com/blog/announcement/backend/the-supergraph-a-new-way-to-think-about-graphql +* https://www.apollographql.com/blog/announcement/backend/apollo-router-our-graphql-federation-runtime-in-rust + +### Neo4j + GraphQL + +* Workshop on GraphQL APIs and neo4j: [slides](https://docs.google.com/presentation/d/1fvEwpvkhSAGXRWcVHPQqNOFgvGT9A8yMZXfyF-gn-Bw/edit?usp=sharing), [video](https://www.youtube.com/watch?v=DIFgwgbC-7c) +* [Neo4j and GraphQL The Past, Present and Future](https://www.youtube.com/watch?v=sZ-eBznM71M) + +## Apollo Federation (v2) + +A federated supergraph uses multiple "types" of GraphQL schemas: + +--- +(source: https://github.com/apollographql/federation/blob/main/docs/source/federated-types/overview.mdx) + +```mermaid +graph TB; + serviceA[Subgraph
schema
A]; + serviceB[Subgraph
schema
B]; + serviceC[Subgraph
schema
C]; + composition[["🛠
Composition "]]; + supergraph{{"Supergraph schema
(A + B + C + routing machinery)"}}; + api(["API schema
(A + B + C)"]); + serviceA & serviceB & serviceC --> composition; + composition -- "(Composition succeeds)" --> supergraph; + supergraph -- "(Remove routing machinery)" --> api; + class composition tertiary; +``` + +* **Subgraph schemas.** Each **subgraph** has a distinct schema that indicates _which_ types and fields of your composed **supergraph** it can resolve. + * These are the only schemas that your teams define manually. +* **Supergraph schema.** This schema combines all of the types and fields from your subgraph schemas, _plus_ some federation-specific information that tells your gateway which subgraphs can resolve which fields. + * This schema is the result of performing [composition](./composition/) on your collection of subgraph schemas. +* **API schema.** This schema is similar to the supergraph schema, but it _omits_ federation-specific types, fields, and directives that are considered "machinery" and are not part of your public API. + * This is the schema that your gateway exposes to clients, who don't need to know internal implementation details about your graph. + +- https://www.apollographql.com/docs/federation/federated-types/overview +- https://www.apollographql.com/docs/federation/federated-types/composition +- https://www.apollographql.com/blog/announcement/backend/announcing-federation-2 +- https://www.apollographql.com/docs/federation/ +- https://www.apollographql.com/docs/federation/federation-2/new-in-federation-2 +- https://github.com/neo4j-graphql/neo4j-graphql-js/blob/dev/docs/apollo-federation.md (note neo4j-graphql-js is no longer a thing, but writeup is good) + +### Federation 2 Demo App + +https://github.com/apollographql/supergraph-demo-fed2 + +![image](https://user-images.githubusercontent.com/3286990/179789050-14deed69-fb75-4e8d-8049-dd0882a39cb0.png) + +## Visualizing and documenting + +* Investigating: SDL/GraphQL -> OpenApi: https://github.com/IBM/openapi-to-graphql ([ibm docs](https://developer.ibm.com/open/projects/openapi-to-graphql)) +* graphql playground w/ neo4j movies db https://movies.neo4j-graphql.com/ + +## Visualizing Neo4J Model (Closely Tracks GraphQL…generated from it…) + +* https://neo4j.com/product/bloom/ +* https://cytoscape.org +* https://neo4j.com/developer/graph-visualization +* https://medium.com/neo4j/visualizing-graphs-in-3d-with-webgl-9adaaff6fe43 +* https://github.com/neo4j-contrib/neovis.js +* https://github.com/vasturiano/3d-force-graph + +## CI/CD tooling + +* schema composition checks as well as generating all the things: https://www.apollographql.com/docs/rover, https://github.com/apollographql/rover +* TODO: GitHub has a great tool "GraphQL Doctor" I think? for automated PR recommendations / linting. + +## Subscriptions + +Apollo Federation 2 doesn’t support subscriptions OOTB, have been checking this out as well: https://github.com/apollosolutions/federation-subscription-tools + + diff --git a/docs/resources/cnab-contributors.png b/docs/resources/cnab-contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..17bf725fade648afef850ecdef385ba2196339bc GIT binary patch literal 147907 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 z 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

L0Q$5;ZyKEjdyw^@h{Qnz(+8TiGu;d}SA3 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 Jg*r~R{tHbpa9aQX literal 0 HcmV?d00001 diff --git a/docs/resources/cnab-oci-format-transparent.png b/docs/resources/cnab-oci-format-transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..24c0adaaf72f73a7b9815089f14a499fbf8b03c9 GIT binary patch literal 123144 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%0DY#dVB&_Lec71vg2imk#6Z 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 E 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%0A#bg9|(h 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몾gT16i?&^N) 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�H>fqOG$sWybGk0CHfBA zb>WW%HIZ)wxPj#S_hnf=n5kQyYhC>HSvC%5UyYbBSs7JPU?Lb$Zc6N(O;e%%_IQdq zcwbH!qfrV{XQRC2#vrfv5dJBI$U|4u0malx(ozkaW9>$qmR~E-o#+Vedi*(S6a7<9 z^LEOq{Yte4XX?o;_Z;RNBGX0_JZSRq=R*G|X?M~2bOLJUJ=u%9xq3HAvx;B@Jw5Tv z-GEA@fN-ihXlm-Jh@I?-XJSG$F40P46Yy$#$VTc?B|mXW6Y?23=5MN1tgF13(mMi# zALbP=iAGRVcry_WA9U=^`KQv@l3(#q=V%xIRB+M0KTNV$wsUsmj-cK?_++Wj=q-3O z>p~o#rxX98<>}{f1wRDwJ|VBY58`Q;#cMBbfF+!rs-5)-U*NM#uELb zrBtSifvJ4g`3 zt>9*8W`{mq*K1Yig>;+KGSCUjOwsmU^*gnplAZ9L$YUo72+txiE)~FO-zdoaN%;q= zfxUr`G%L+qKEh;1W+%+D=}KE-a}-jN&HBEk!d zK;66smRCZSFUllG9q}vOKpdFhE;p~5VN9Q89}Q9ZM|b1ULB0i#IQgm9XPHIL=PyOU zTmw*fUS?}ABS5ZnpsYF6x48=qI|Zi{ce`@~*3zkbqSUSlf zGx)22V-%PdeT)}4y{N<3FeJqmwdAlKkLW&ScV|KWa@W4qtKL-^mp3v#oeSy%1}X8) zUqx*aF%{>(9_(wmA-QM#V>fHIZk&oW8FLxm8rt5dV-Jvqxy_zrN%8OhdMKm*G4bA? z%%}o*8ZhO78!VF;{i}{HpnIu42#HVHMCDBaELr*u&JNmDhQ5)S{a&U0NijsdX$i`B zqNHD!4t9Q?$Yvf-^KX~KLpUt<22m4c%&Vy9M^IqYB}x?KM(739$!Vbm(mBolB^Kld zT#4+g8DEh?wYY6NR&i>CfSB1nGE@)gk5Dqgr#)SE8+3e;-q((AX+Qs+)DRmCOr?1X zc6gQ&zqDyJxS%h^hsrdn2tTwmqb5W_`7CsGI5HxNNvWD)v%NwSc(xQw&Adk{Yk`^0 zXr;4obOF#AODUCYDi+R7abi8y&U<^(kYAt509gq2J;b@N7h?I2(j9Y4F2sU~W@@)z zDGfodcns52%*QadT3H0O};F{F+Air4tLWx^ncrbOI2xpM$v*l|0bDt2fJw_E- zF{l-AMs8ZA>q^=}V!YDD`PsPqVKusYErM~|YQjJbaDT?69OTmE>ME1687xW*qzGzt{#JkXQo2%Y3K0_jK zSwAqs#n(#kp*jLi$i;yJson?O4_sqgDJKARFSVY3VB+9_8y>=|FwGO{-vxQDKJTvV3V=`);>TUSbGi3)9f z@%obdzy1<*<5{RKOS9zG6MqHcHCEAo^{~t8r^YjCYi7j3`%?615;WjvX;-nBcobhG zfPIT(rmPT`n8z&6h9J86zA&{1Pd@3L_jUMX{8NU@~=Dc1X9Ry}LSVe+MQ+&F^Z% zw^jBN3rZ>E?f&T(`n{c&i=8h!WE?0};%8RyWT$>Qg6iVB;EL<8^oN3O+tm~CZ%n6A z>oV%Z(a@-zQ3JCxa)P18hNG6%eLOGFGI{n_&~gFFFwsH51DI> zUz7hhqF=!(4qD zfkr|k_d@%0B<=C)7A&fs z)0e)Nr%w?b{tz^2iHJUGpNnzu(>|qohXVhNwGFXVAMd7I+FdUs@iL5UjFrOAW?)tH zEIB$2CQ1P?uq#VDv9hMf*GCP~o!J@QcflAX1HSiMFyl+{|K-iKjhp@sbcn%)qYXYq z$Qxel6_H{7-wm(4MX?HgPQI>BX_b>(1AhO{LrBzYYEX}_2yuJv6BBIif=NN9SREIt zZrTEp{=6U^f%;=HJ9bQx+Q(T+a^vf{cB8B9C&uIY-#YhWMsD`Is9D+wXYbrWQU9zu zZ5~~x&v{Pt5*;%uMjd}Ie@?5?jF86%EX#~-*^C-!1qR1)Y1bv_U#oM=eVGRGe}>EX zQLr3nO--JXM-8QVRIIJ2C-F-RJx!!rnVm_q7%~jkrxT)Ac$Hvek$ll(WiF^LM0-gnzimzDT~> zoa$7;C@3!;;lva7rX}eo@zU;=Upgjo z8fzzVyG8nlvWZdYX2fCQ&(Lmjy;Izn@Jpbmo-J)#r9`yvY}Z)Ng);$IVz{PEj z^isOe-C}>{WAbL8>VWakaN0yayIy~VJge`Maux++{*F@jzU?LuZF88}yc>wyF)+h9 znFzucszWgw_{vm%M{)i^sb@IvKQT`(-JWazUDai4bjyT)NQ+hS>P-E5#g*#w5T)mcxGDWsxGF1LVMfF^ck z^^3UV?KxR6pljnnx%nRyAq%D2t`oNZolgVtvo&Z#&q9WtxXaW6Nzt8PAG=amLol0& zO{w$+)MW(W$AN4D$^heb^nMC7j1Ha9mdl$zNpykIs4Lg@%y{{0ePYkJ^(iGNGnn zoYwZJ;Rt1x=+0Vj?DBb*{zN;8h0n0mi#Xpqip&+A!g@$iH1ngzdveueiu!JEz!=Mg zXemU~mD<(MIjzRL30*2xoM^|rWb|UY;pnic73j&U7|53YuenqH#!?D1^q8NWvIMzg zFs(@IZ`)+BZ-mo9$l} z${W^8tOue+YK)@k@?+SHNywe)3S-t&PH0v=ag_5quhP>mFBXm*5f=Ydaz4)OyG>_U zb09$#`s-Sz`!V4p6-ITz z(~cq-!OKy?EsW_7yRJ9052R66n3m|fNdAS88V>Yc;=axC5-mNNcnxNQc=!~rmB&&b zMfs(+Zy$5nSuytlJzZJw4y(X+9BsTfGvLIr8=J1p^4M=NU){nmf|+w*LbS~1>ip=^ z_)^>3c*np+rfy?q(?ZZe_qHLSR7=nHcl?O;Y{f;Ae<6AqR8cgs{2A&e)Ii;RQ7U@) z_}@dkK=LkprtPJBit%DMzxtbog_s1Fbp)ne*Sy(iL&InEV(9s3gnz*VVZ>A{SqMKR z{a^KWsEa<|9TvR+_8r?)I)qNvF|_}tWWu=wP)%;*7_QOPwU zy!hcCI+{I?n8RST8z0d-LAc#(>C0_G_wP}Xpe!RBLu68t$Big?6ihdumXP(}{1XEteSuoX-2FsGi_5E{y$=`fwH z+duZWJl#iUmI-3=tbdUJKC`op&dGmMwO0WrkM36<*hOmlE=N>9GwvxM>~YE|TCqgx zqJCV~0{}xlk>5-G%X4zWdDDrx;kD*td0NTcxQ~E=0wH~AUpsefxtZKizyNN4iE1Of znh>;vdLu^>zXOe&8Ug6Wg%mCU&42eZzNupepcFEi8n^R-cX-`a0X8K_piJWjPisDS z8g>QAN?QMV$s{DtvYA=45j-U;haxk0f#6nlOHJ*;h=Q_JZ#{2bZx6l{(m+PcRhUY(OtP(E+N)=mqy&y^W7}sg0JAxpn7nH%%nihh zhm*!p*}{NS`wT7aBue1m_hEIZ4-+Mr&j>nFnTI1!E8XjsznuAE-u75O?nso3uC(za zYY#-e)56xDwfWx0($wUWzPhV*z zR)N}*Pb!GXB{450RTYRFvIXb-eZ98*(8U10_hrmNT~eeh^uOQLav;4FtIc^0{$s zy~SUNFes(Eu>^MUexHo}Zx0&$Gg9U!@yqf@)HDH<8+HonT64^ejKe=+EIF7|?vMMD zdD(4aM)<&^waXX-);SOsM_!9aX@b^KU|!zf6g*D1(vbm`0ADsYnyw^h|MySp!-)< zxv}47?KRVX&jOAVI5;_P7irH>LY*FuTCDIot;ROjX0@+=T}1hOevX{f6ZD{A;xXd+ z_YYSvYy#$VoRy@`zf<@wV$IM-<;lJ)+2DD!`RuKShy15z=k7mM@2;DY@h++<>IGgf z>An=UjbpEQ^Fh%2S62g#q z(tR4z3Quv<@8)m;7JLbLf06!u>)_uM8n%woC$Ev2aTsa=Lc@d!MWt&(1lUv@$I(&*gDYjVgXj0`x>z5q4 z{&yy@!e_WOzZ>t@8ek$$F)zsS7-lrS%Js;aQ4a-5QWDX&yAe_ZT=fz)HdaFFs5N3 z2ec*De9PhNSWqJHkUGN;!T37CBb$pd7k8-dFZ_uh}HcT4RD--;td%s;!2<|(1e>geJ; zZ6pRJue&W?-|(3=%hJUj%Y0*UsTruoHw@F~vQOr5c>BqHeBtVNrgW6awgyL&rD^X~ z0PNga-m<)cW9Bw-G(WQ7P2VzmdgEIu?ekgUy<_F0?O9Kd_)A)p{;Ao)GX{a6x^$qS zd6Q1WW6r_hL5O<%b@)%w#LC1R9L-gmMUF+ovcTqVH5Uy&>*1{+TmT`QKwlr8t&$3h zygL`uZ#v#MCF9N_mI>Lqz^JBnpBa35YOasd> z{#llWyoaFs?=lYewKAN9;5eTIFZi3LdA~62c;5HLqe^XHrEb_|BB$-(7(NvNOfIJC z8U2?;?K^ua3W9NVbxR*nL!yMv*N_yz1o2jy1Q6$^znD#X~$_Jw{`|6{T> zBkObhD`BfmK|*M2!iIy3RsbGjnChy3*^7A9sAO!UZ9{&Us3~3Vbbb}TqCObkB?_#s z9L}ml-N<_^yG9HrgdfH5Ln%_5K=sq2e25cW% z`VLldWgrp&0Qj5l$KD1FR{8na^({y(3y~PHfwu!6c>dTpseCS04eL2c(y(=-pC99F z!{m9E-hT<54*9W&#KfPe)!a3Ce6m$Jz^s)AG$K9$h6IB`#MR#8TIO+3W2Im25jN^H z$=h=RAn&uixD%_uyApeFhBPkb@q?;!OQn6w;)%J>N zPR3&CREB@z3+t+9$wYPL8?IbTmK%q~WB|M?wf428TYA&W+y-BdKZx~xNh;}+IS;Q- zsyP?YUCEzI&W~^8C8@k#@#}tEGya!mp@ZXCMZN1~*{wBY)&~qM*%M}cZ^E3kZKA!w zsP;-{^k4_<2;FU!0g@eqdFy(&Y1Rvoni(#0_bC(!jH{ymc>x##kC<_TFc4~vf-09w z8#W5QoY&3p6H-o^pr2}-RRFLfl?r$YJotWj(8H4OXpC6TS?QB}4SxCAG$^r@+E_)J zkVyH6Jb$r>K}1l8NR@c|VpX_GKXw)P zsH`n4E>visM?{G>y&ASyJ&?epqwf7f*=2%bh98igjF0w_p`4e7nDKKkCK zOj0XXU&<8R*Z|qW?*bIXkrk-eqp_jJGTNjaBu2XQIKgJQ1&0f)?@9-2ues&yz3c`J z&L6#;D&RPGlMt51{F8QzqfWm8&7rMxxub>`pJK@XB90eJ(wR;2V{>UyBwTC}$^!uS zP}-kVddk_=uK`N{PlN9KUkU-gR1K;(J@7M-FRV;M)71wMuT)U;yK7Ly5;G;I#WQOq zXU4e6B1LhulG||-fKi&;IWH*5dcv?48>+NML#Ze@>V+U49p?Wj@ zS&^w$sIV{)nn2c0Yo__drec$RH&-LbDZ?=j*DEjb8>AAVY(iZ^q6R z>kKEAdXIo$QYf-1Z-XDEzP|?aPx45e;r=#icQBQwg{4f=YUqFfLKZTz8roKK9YM}r z;&1EgX3JmGavBJzNZ&=gZabS2ji_B)b2QWYBd_~j_g~}6#52;p91A)H#CAF*u4B|K z3;GP##>a$tI)oToWY+AWo^vB;JQzEqyhu4hv~1ObF_UL=RZZHsgSFBTkaqv_S4=pc zTrVWV{Xj>UK80+jYBExE3=}Y7n+0&*>tPv|IA_!0Vo0A2l&*}IY4QdoPODZ~ZzQ$Q|dB=vo+a)3bD z)ML_x45X|~O|ZEgTLT}EgyBQF(wuMXIoaF@r@R|~y%9U!qoX#^pSJ}Bjrh-Dd0)Z%xN*{}M!EvCGA;1a>_pX%-Npsqi#QM3-#A>7$nNe~^>*%N3fNX5;6y7@ zR1CnadHD@(6m4)GmnxP*ipmPP1sjH@GL4Jho~kJ@OGm^B*UmLCc8p|v{L5%76ULtufwqm=aCi@M02E~+h6FNRE|C&Zh?W*m!OLC`}(T* z=qw&1cC(%J;;l!H&Qr7MCUKM3A93i8M?puUp_~`sJjOb$t-+Ly0^4k*d0gN;jez%e z_wQ*v8^#)pn=&iJQFepP{5)Lv|JZuVs3_aEZJ0(0QIS#vL<#8-kOmb=0qO4Uu7LsM zQbba^ySsZB5CNsTWk7_Xhn#^S<~zshzMuD5@Av*Q2S)F@eN;O>lfmI_=C?bD!A%Nv&(k>LK)~xeVeg>oN6{Y7vCK zfVG%n8V5eVC%g+q4}PCS0uG4@K963!jQ$0JzHkEu&YycW=|qFJJ4I_YglUoys1CZy zp)LGU)X+LZ^W|ausMj1BfzM!^7`EE|3nm=Kd{n;>ZDMt$vB=rj@P9v5PyfA^y`(2w z8rAfI7a$ApN?XE4#%7F98XQq;PbX75=Z+8WJ)O$EBExPNGa#fZFhy8CbcZ=}G(9yooQh`ev!dODW*HU?te%fUx|_ zmGv7VY>9b=n|zIk}vplLVhTc-&}iM1bQ)YpJh4fNGa4GJKELaSZ$IN z;psg5_S;McI{jRyT%V5ZRptrZj}+!Ua1?H0hC5Y0)+p4@7Fb>_b2CemAs!I1%-h)~ z`AOUlGJt9&=2?)S{4$veF=L?H0%v6OlcKbJ?(%|yY}hYpAV=wt5l~F-T=D7f84cvEX9sNuDP zwLzTbr_od~7L=_=x)hbViC(6DNWH>(sDJR_1ZdxQRk%cAo;#q`=3%q==;=34`=fk9`z52f&l8qY=dn5IpZESm^v7!E|m? zLhIW@?H`8h6bRm;&BVPN6}2$@+YkH;Qs`QT(S-njR~ z>Tuj#6wl4hKRdt&IZC>}KM=SZJy&!SOLx;r<^-$L z-YLb^R+Bu_T6mwp%HsvmeWg7tv$~v%da4Fr^tQ8BYyYsFYf`Be6C9bgC`q z!f4SJiZ4CRbRKx=EK+PMs70N}wGYQuqj$viel+?@&EgTnpd!YkGqMBs*6N zXP7_ADL2r`Jx3v=nWC3aAzrVDzJU-O!MF?Jn{s4dZmxc(GZxzB1aw|;A1f22ioG!l zn_WGz@yhPB>AG}Pt^yf>?9mW@mlwSw)o8~4D4sMIO=6H zpihkLQBT4qF=!xeS66b~b^r^s@MjrZvoBSLw04t+kWwqlarYKKm}egb2UI#Xe6J7nt97G*D;w+OxWIZ}p;Sw{SAn3i%wF z^&0S517n&qPoMkv;9?a|-v4?xY}IDpLbWRBRynk#6@6wi47)p)2y5|1!SN|lK%6e zvkF}q!+>2vuMVtfq^-!UTA#ewb(DtckL1}BuYs1p>+iwmqf}`@0OUpU`rFay6egh4 z@>DsPYQ4%CrypHHK455%9DhwwR8iB_zL&)BwKZPPHjrkUtxtAu)H=xaA3pX|c@P;@ z&cx68==T}kf&B*b=@&uHo>sF*6Nrqpi2dLRWo&A+cc1`9Jj!pg^fPW(`lK7wsWV8HB>=s98~ zjvX-FH1a1X<7{W9!$|Obd**6>Kv6_868+gSMlGl7y#9sN{DI>48Oqojp7)!C!&jrdH+fIr$83)m)dkL{6kE*ZTL&um4g)s9mUX^AbAwbTXvY635(L&X-Y2Aj@lzZo9T1M%fazz^nMWO5*0n>uqA# zMex+RzY)oJr*h0qJ*EzkH#fWFlofg!y1jS8%M%PcS~3*a0!x&zWtlp4Vrl))s~2*Z z+fp{WK66q2@oN9nH#W{dr%0NoKlRfhe4%(V6r-_hAGC7i z6Oo#^M1Ky~|JrTbyrW}~HCbS|c=U)AQ`G&KPV~b1LNe4+R^qBA7lB2v4p^8|W~TJs z+{K>&b8NcCtSxQOB)Q*Lq2{l8>8!`GkTvvnulu}-)sUUfpM{z(w1u2uyZRVx z+jAqm=(?wTg@r__s$`ULH=K+hDJiWH=`+LtqR;weF+$s$S{=!h4R|p}3_}2T!9xk! z*4Oj%E~<;TCj5whfIguM2yIPCWQxwMEk@RsI{;)j!dj(ha=pbAIwnE^PId-S4=cr| z+yF6{F>adp^6lsN*=z_$w*`eyS4vzMF>D8a^q+gWz_a&}R zawz1vUsf2u4GZXmo7Wi27&|CktH)YaxrqZ}$)R$g>*BB^*ZgSHptBh~1v;Fak_g2p zDqFM02OMA#;kTr@Ttz~qB(vzKuX)i4YEo?>W^W1b3H6dmrdH_bN4-6)qWYf=E}YYs zfFDj0n_-Wqdi?o>wc zjA)o@F4U$v@??wj?Ii>IXa~@r16Fmuk7J~7&L?&Lj!l6Ad-XMNG+sTyYnmT06jS#R zohRO-K}Nl>a|#Cx6pIQ)PSR{UA@wgCBt#zVR~)ow0-~nUz<1>2t4jWmU&tjY88Mff zYtq$UtoT;RLND*s2M`3LN^VCIUrJTnE%Q!8{5h%b2p$$Xk+>TmxlCLb&kP1oXzyIhj( zud4Xk`5%A*4%Ai+^bN|*&rfJt_bi_a1oU)@ZqJEa>88J2OFM?FIPOVppEit*#RXs* z_kEVA<0K^IUH^*vvQIS@#pIP@hu%*RGkCm-(UQt5?77LUKhphgJwBc*gY?@h^4kz4 zVv1BTY4h;^Ia_CTgAGN?#7nW=tYTw@Nbr--7X^z6hNS^i3E_PJmF&td|}3;>z11> zRNcKfT>IW<{wKXAUK4VCCCl^Rzgr9#PXZn&6(%p!)3yJy{Qg3{Vn9lJZPy+{Wk?Pp z?E!t1JB12`Ern=Vnxxx43oZeEDoOXCEC-s1kI+q4u6FkI44h$nwSf8hvm~30d5ji? zp{hJm%eH`5R9vFd(QiGtvu9j6=JJ4E=GY2S7|U7VxYXK(y#mPP%z zwRy+(P?YE2j_ffoPV|u1a>%j-I@LpiTH=?aZ=Qoz8bl;oL}j?VEXDQTk4YVJxfG9J zda|9aY5=;$wC!w^{q{sS!w)y)$NO1a0vFw{V-+m>4-Apg;LEBOi3gs6j;7~q_&Y%A$d>Fr zK2XN!tycb6FA-4a+HQALdg$ykKi^q%OqYZ9ijY~c9Q(?mL8}h_4aKA%bX+3qVV+R3 ztk{?6b1xv-D^Y8?%TUTSN}YP66aIsrP=zsZt?9GHb4bgWuo*(?`dDh*-!auOINl`l z(8=EwhJT0S>(He&-wG!$hgHcU#(&gNkaFZrTG?x~>%hF)|7u*{Q{g1j@T8^ybTCP2 zOH-b)JlmW=F6Ru&mkdFt6AL-Drbptnd0d0U_743oz)=VFB~m*t*Uzip|3#R6qgS$K zNP@Srd{^}Gbgx8sa^Z=Zs{Sz74wsG@Q^S@30`Qn9Jo7i@#_pel?Bpjxm@<|49Y-#q z_54+a8_R(XSnI$!k2bW)^W6W!3Ttzi3`#(cU=Dy9OMr&{rJLDL)jnMg8Ts6}o3`-K z>A>%s;eV$flK*e2qv2S&NMnb|VTKZ=9u@C3C*gu)4Ltif>rUhDpX4<9$~$ z_D8%5?U0BD? ziJ$IM_3qZO_ORQ|+X;lYt8PNoMvRAxLi{%gs$$Qhhrj;%;(mPz#egQ}+k}2+a9LCU1b#2r>KSZR zc^00Wj7hvlUyon=!tFL#?9V?>5WdXuUa_47xHD5xWSOC>(l^M>NmWEAqRxkB7(@?v zrInb7)5LM^H$GUJ!(7Q*BWywRjPaU|rU8Arq<$+;cyS)AE#FEEkNrW4HxSG$|B5jS z<**_x|BhnN-J)#Tw&ss*wjbB^v8}WMD(gI^u4*x_MB^$mObK;3^w={STdqsRm~3ei>q zyw7B(fz4(Nx9aV(jQi$##_qE`C?%=&gq~y}9z5dFFwxasM6kgGV5MB@f%6|M9HtTI zx0cl#eY(RaXVrdJ{h++73OuKCyuo5XJDBEz|8)Xq$JR*1PL9TA8`mllU{e zM$hQ$($%h6q#>*cii0adCk7-6RL<5 zJJTRDJ6ckOs$dPJ3gyfEgflgay(5flHQ@F08aeW*G1}0ex3}=;UT)_Z%gmjby$G%E zXY&?*xhJ{4UP$Eku8<4IO=?}q>VyJ-!zShX<8L{sIu5kyka1L;$ymRQ@x<8x%7N;@ zgDWhwCTAKFV3nQQCUrXF3&Rg8tU?$1(Mf{?+hT5>7S`;(7Qed)-lSBK*D27oIb zzc2HSxeWm3j%#T@>$*+MX!H;JJ{@ww=gq?XW9oS&b|GUi+vWFxen_dq1W62*4BMy| zIU1z0cD1-9;2m1^+5RoZ;^DBEsMz&#GxzI2HD+YD5<56)G56+G2<0!`e?vHL(&ci*;*doW^V@CUhZ~meu#^8P%7@jF% zEB>7$>7%2=gxVsmNlUdO*^r?tF=KmO=VO`m@2c3Fz2wK@M$&OG$vJkVZPWY+E@oN?4%oL-YTM%A& zYyEF~HS#uhPnPS${A)deI^iC}TCG8w_um;N8O8zMB8*XH4NmDb&zqN^mtlD!MUtPR zdwa7Rkk}cv8RfYZ!RJ+~Cyw=b#%8~Q&sm?E9c`qTnxMD!MqjF@-^=5PGYn8NqaL4y zVyPd5M1sPN7=U(G71g^V=!|W7tm`cU(Y&vg+@r{t{DNfC?vRnA|9XGH1(RQ9WvMyJ zEP3NNKPIjgjM}2O)ls}tBcqQwH6FAdhmpKQ&~>CFfxAdca=-z&lYmA*E#gkg+-G!j zT6Hx)(|#bOpcvn0S}!u@ns(-S5-Gj~RKde{qe4CZk%r4-;huX*2JlquFo1gRw$Ht# zTrnyuhI@5fQxWhQIOk<|KIfR0kBYA7Uo5x1>Sy!FB+J4@!qiLX%e6KD&i&KKhuB~z z@pJYe!>x9OUh5bnIS=$jQa`(t;sE@3_|S;2Q^D+)GGC4fqohwRh9bF985!WT(Bm)` z=TjF^xznE|Ia$(-IsN;-GDPF9iKV{>Fqe6!Kf;1l8*E2@fM{HG&CXVz^wzKMBJQw* z)T@6q*Pl);o@Ff|LON|dW2^w*7jd;=w|4$l{-z)?_}JM1TpYe-+vhuTUi=O$1cZS2 z7L^>EO!7hw1L-&o{QzS|_K5-Uy;{p=Nnfss`O#lN=bsycS1|s|QkO}MbE_Wzs$_wt z&&-p`4_P)ai5*BX&$ri>1t#TPM)E~3u? zHt(y@W-Tm#uj}H?KOTnQ==8a58+_~cNP*OU)Ta`ILVt39^uMt6&f;}(g-R>Fq zD#xu$R}9j%h;gxoD002huAyD!S#!i^;i@l9EdqMZMT>wHdTJMXrY8A>?jF-V=0X|+ zzuvN3r+l*i()!o*y3i}Sm$QuU$W@|7I^I#=tgGr)osg;5?e(y2a3r=A5%lHAz z^zEPWjH=MKZ5sPYWy&d^1%EHM7^|+A2VP<5m_QB=wX z;%9Dy(EL+9 zKyQ(^#e3_kd`UsObN{yI{iezUq!mVte@GW<~5^Vl-_nhO6r# z>HNhj%c+k^?v|U3VJ*Jbz*@!89FrY;U0FpO) ze5pBUjI-CT|M2Iu?qdj$hv6j4Yp%|x;j`%9wg5zM8i?he*oJ5#)m@6eYBCnqg?oSk z(=q^FgW^Qj+!yhF$%SS`xaWAL>=Lp!X*jQgAn?~7g4*AAw9yS2BuWQ`w2Wr`jw zFeg$`tYXe%F@V>8&z*Td$+%1NdG88q(p3odl9I2uW!$a#PiBN zDN60yYZCencd%cP5{}=uGbeI3d&_D4q-%W(zcX^WnPkqL#>h=p|Kr?Csqt&mn+?-J zIQ=xM5p(9Y=fGp%L`8kVgH$N)NqYm|Y-4lrpNy`NZ89}zvKEv#R?CtCZr@B!t z+(ejW%Obbg@jkRoRI#p&9WmAkAT}kECoBD+JyB-zCCjn+WBoS=fNBExmk5=5CxPw+@b%G?@_}otHTxrxvmIyNmF393(xpnvkr^8PvWEy`cRwe=?1pM{0*Y! z>dnzdiTWVQy41nyH;e7w1?yO1T6c2MUx@Ym&wlNSa`<@VkUC=_FeojugU?Q>yG09;B+C$ZF?y6K%$Rol^SIbT$n0UL+f8#OZzNVN0>J4)ei-6E?%z9K9S=@9m z2U*J*t~H1(a?$&S4d}S<_w4yOe;%JPy*I*~kwsx<5L#|>?;E|gZKnHM`$yAMk`-G} zesR+sr?Qlw>ev{O(YLGZJnGFmQ3<+$Ez^87^XD6QPU^NE3?;PZay=4aTtNPv0BFQ>*rAg?jG$#L!h&ec#3ru2$HJM_;{ z&P&Li;-2qB&yq`r@q+Y4yW>s48`=sBz_U+(B!-&qYL`BOj4bTi^@&MelNxhe3P3GF zF*0PvyxcsGCoz1(|A?g4dHJ>f=w8}F*D}jKsJq9XV$*Zd1cWfmTwC-zA>Y2zNorhn z-Tbk&?}0(v=5i_drDV#!P2VYD0R6!Sh?zI_mk*G?7U@H|l3IcaxWPF6j_s~-ZFn1U zq;R;_vY=@5qCBw@XUh_+bRrO84K{?;Va>9(5^zb0Xzd49}&3 zlI0L~e4&ufCCG_`^UrHOO|}kQ!<4@tx-tt?!u=q{G;$lI! zO)D-V<=9R3yigCM)V~gaTi9P>p){v7l2s9DAlpZY1Z3DWc(rJ3UEy?BZgBTN11h)Z zOs!r`B+Sk+)AU)3Qv_H3Q-kh0$;i&?=~Np|^$*M3`}1CV{W4YnC1qUekGthRSX-f^ zNofi%NQa3|-unKA84D>N(vpw1m4w06 zWuZga*V#>3?*lm0rJl(Tf{z%XU$2(+792R~w3>OCw0E{`vjboJI*rUJzC8v+QQzyz z(tOJZSbmh{QHbx%XYN$11&EurSSzPIkO7_W1}BFeO%nT^ zWkl3ep+w@q#+@p{wx22p-Gd-->DY6C8=AUj_{SNteZM`H47)tt&Oi=-9VTYzR&Q-~O0QTml-b;OIwQP4Oy& zcI!BHqK=P3D}utRo*jw);E_DXnvi-(t;=>G`|sL2L(T5MGF;lr_NFSU$#JcjU@M<> zN{s-Bo+Uo5cr-=B0EUD1MydO}ZpW6;(oI!kf93Ft2jr{@xh+Q#628%A8*i`Q2#CYl(2mf1?H4Qm z&J1&(VtL1(m8v{d01aUWwUYqvn2wCT&0XObc$@6aJvzA3!#QLe9I+dp#_F-}2wg4^j`UH?o;`Gav= zt^r{K4NGUz(@(Y~&udgUg1|vDU&w;Pi-J6%vEoORSVq46t`j~mC=TAgt8UU};h!!D z()k1%E0M>bWkMJCI@drkD(li9AhLT#s^A+O3N$<De!%6A(UF5D7Q)suct_GFu(T&dmX^0>t zP6d6ctb^iN;PCmh^wP*`Lp`&p=76IAH2?-2nLIZlPp<{+se_k7qOz`GO3jD#U{DV@L;I03$wCOJ9s4bIO@JuA{)9vZ1 z-$;`~U9ltesN04&>lG-pHfvTr*HFNGgGoy1l2iQ}h(=z*82HTH;?VL@dr!dG=K8Pa zY{*|H1#(WL`pP$G3UG`@S%FqRR4`l6O--_W0NG}F&t8J4b=x@AsV~q8Iah^+$;fO^ z?2Mk~wV_ry#;hHmJuutu10<2LpjeNn?*f>n(At?sWs#J+5+%b5mtk*??bX3HjIg9U91K znOaaez2z&bzzqDv8D2aPKqAMQDL7v?}5YndZ8`4LAce80;UH_tZPQ#L?+sT10^k-{S2cl3>ra1XBt`E12` zHMh}Q^{X>%eZ!yEd^@kGws}r~FK|W9^vC5>#uOrQhIF5sjHipUOfeu1`G=UD#T+a< ztCBuvebUpb7rD)J4`O=m5wW$OvOh(Vzspnz0iW}tih$vq1OyP%?Pk! z9_OH~9wj)J)n4qU0K12`5Oi>EyufMT;9~ip4{|aJ(L`jf@CH8@R5AVf_>5C|NyBi- z(x4;frR36(C5i`T2>bPatyKSCND0`yo{YdF4tbAy6zqqj zd*S!S8ojlhuK{s=%Z<<%hQG>}@los%N}Z=NZ1a%o?~T8IBm`8JL^oJd8a!3GGY=`H z2(EbTX^s*r%R2PnAm?3!Hx2B1Z(Fu#?={n>g>XFW6c0JZl8(s&x;0OES4qH^k6J4~ zbtOKNsok=!rTigeA~Va+O2OXUFgfwU|(#2lUaVqC^6uI|fxZqn_K7@ln_4GTOx zDP`r`rIRxR1b3;;oyHvO3$irxP*~SZ^p2pV9l@XsR5%lV@F5JaZP2R@jfm+oBp;A1 zb9OVziLQBT8p%$SAwtNGznBX-QYxwn&TqRm)^tX9>1~tF?sDpJZJa5xWohZ0KCEy& zMqq9bEZ(gVsarOr_i_GXk@&wS2+Ns{M{CC>NQ{q%?>-7f`5G}-Q)v31?b!EAvxN}wq5!#J-s7E>i+Mt85ejb_-5WUdh$ zSGm4g^W5H|F1F_mSua;8$m%A=$f@J&# z{ypQceGovNw!z&%2U;p075FV|jwC+?_OSlU>~B)MWYm%?^nS<_2Rb)oRE+J?rqM{X zbPKv?!9sxKIOG2?v(k$Iy2XagBaXjP7k$&T(W(-C8GWnBTQqJOXbYV9ry7Y|z4NeL z&PnbSKoYVc0W?3iUf|U;|Ks@3*-Z0$6#9x@!q2Vj&OZ=9&q@+?_UTlX`JXJ)g76|O zBGn!}_=i3z-IwY?)vy@U4c6R!@{Svso4~nT_lK1j;o}4^_*Pv48McMdFV-!{syPx6h{vN7vwWga#%kUXX9h40Lz#>XuuS| zQ`%ZJsx^34*ELn;9vIRpHF58hsPtVx)RNT?p}X%a5Y}(&Ud&kz#BiTIl%Fw$?SoV> z%Dj-q(=oW$T=iHHuPI8*;Wezs1x;IE>5xvdZZdoDYHjdw2${)#8`*c{h!1~=ILn;KS{mDAW#(ks11`p~2GNa;F{M8i3jDqmzhf}y z$mA1LglB*G4EkcNtyA}Sh^0>`jwfDk;mMLEzDFZaZ=fEwsD<|7dnPs_USF%K02HJ4 z%UI~hcDpGLd{5Nj6a-?1D_Bg7?j8^hY~nYV0uq?hUnUcP<@m_+&Xf&ECXD^eC1+n< zJy1cFo2N-wLDEZav@qe)GVot>1}tZGL_1d>==#B0;zP{-;Co=YE*3ETm`v9*St=oi zwAgS&c}57oJ>aoeFopM7FrJ%(`; z_(sOeq1Ob4RND{bn$cxA(fJv2jbB`}Yl3`mH9obSI1<#ZpDn>-JUdS^5icpgL}4>U z-r8kHqB>Aon*K6rlbQ3mmK{D#HZv!(DFLsR5`f>eT_9>pm(|Ug>q2kVbaJK}+?dCR z#yLoLvm3LGA&iG?m70>#tkNzQ7XZSuC04HJbwMKU@s)CY%ZjNCf^hP9Lit)HH0FB%?os`8Nn_2N9hy4VMYDEW80Bvscc?sj_*RDtpf|F|h zob`gCt`VR^@{8CpHq8MTqu-WGHWpks?VC^higLl1S&ym~hcbZ7*b>WDd>#x8FKwzoJ@jfJSiiem{JlsUw zCc_PGl;h(&>?TIPC-?h5awqlN+azAp>a$J9fg@v@V1XOnn>#m@H}`x}&Ru&cxi$BqBuDH_o^ zy@7jBK|<@1d9f{6RA(G~Y1FY(>J8eOle$>$1@bTPd*F*codI)muKSmnPjF2hR-h_r zsR)PF)#2?i0t0@c6kOif8nR_4jrLJw4+ek)h%X*K%l%&CCi^Lhx6k+e&eEgC2j`=v zhK?RR%mMG@9BqdO*cUPGI8IlQF=M7mrK8W5>K3&-ON@i&=e;ZEdY%mt4AqeY;qDuh z)Cp0a?Nop};ckHl^#ALiJ6LvnPlNvHV!=taU^tKa^lcQoy8bL3>F`T=3CFo6knnVe z5Aoomhq}HH)BOq|Cg0`^lQ9`I#um|qVR^oD9ov!{^7+;W+`C2}tm1~_69{l`E8i!$ z{o%{)E|dx54LQmk&|u-dk<+~=%W|uf;C)XBO=}^`UVK4_k_K+X@xJXEak@KlZ^5$| zK0JIeZD|W1_VWGctF5LRWO7!9XW=}OB556!wuBve=@doiEZ1y^) zam!;Wrg$c~qpzxiN&b19Y0R0@d60A9T=HFNaC9&<{OSFSDv+z}IwMjURZW%M`EtWb zflwn<%S?denR<3qfWPw?)fSby%{(3xgtYE^II;7TXI=viQ?cW3s=0n|_vH@6Zz^}6 z;@wu_K)CzdW%Wrb;wj8s)$1B-8w3X+#Z`W1pifDDD8l|L%~-qTKOkA1HT`Nal{%ZvZD(Ejh_ru)M6m>8F0?$|VaHy;w0b9q{(ZwtRCcDJ1cUpI%R>+Dv!gUd zE(WML!@nm#PWJCOn>FNA7Cg>0S6J|xdRIX%vRq56Y_SPRdR_T~na`#F3(M_9c+J_H z7`>H6lK~ME-*?_O3$O~8EYBeQIu@OAee*t)_9NFW?dx=Xq`HZDQPL0z4}<~r?is@W z-M>3fhJ(+JL`6tF<|cu~#~Bw1&|Z^fEV#m)`%>o}7d#m%)A=pmHXXF@QtJ`Ag$~gb ztA^HwWyGZ^o2VH}o{Cu~i19#9Ck5(e|DnhpFm#1@r)i1n7_ct3vq3B_yXr>AEdQ=7 zE``ugyuqeAc9gn_dUW*p5y9Y7lOFxf|GWo&DurB$VhMa-zR=@ot)GBJmr19!3&6`2 zP=>7pcUp1v+7U^O(HUBW{7iN>vWQ^$Qa2S9cvld+-uL@xOiQzaHWvbF{$vbh|MdL@ zHdO4UeiF%hG+Xa`+@CR0DW#6c==^=DQ@zr4Djtv#8pZv0=>cC(`-HIgA-k^<9cLfT zU^C-dos&flx1!4Y6cjJspBt1mPs1=&=b@s?ysOm&8M~dhH08r#*$lnFat>Ih7k38g zPp}>(O^Xf{(VT{?Us4Hc4;n)Y{b=mR2Oact4dw`*-3+&mfw*?pDVK0eEP2!fJ0cc@FVda39(|lnunz(<=K9Fbvr8^h|281 z-$x!&Vbg}Y)<09g0|ICF(-7q=CXb*i=vkHukvW*{-&6MAU3@@7_E6oXgfO1#V^z&Y zpQFAsS7%ZcttAWHT}3GAUj5uLvD9Jcjxi!Yw_0TqQf_!5ytldy*t2(PQkPj*+m2-$ z>)6%@p1pnKtOZyuHK=UTsukm%O96P`OsD?|$F(o26tqO}HJlOL8e&5jsr=7@*PADUx3N}Q^1~W$L*2q*rMLE{=H?)04VQ_an)J07f83#x@X`$s=3Bl3 zq+06coPTEd106QCm}U(OI1C-`MqGJ0><)DLp7Ec{^Hs@xY1 z_iX^deBQ98{=H}?G?+qJB#pF>Jx6NNT~M6_o(NKO?m;fPGUAw64{(!nD#;uiKtj#omyqZ2+*|jBylg z-8VC%j7AQO0JdbX<2d|78LRCJ^9Om4Wu26FAX*{lT}?F|*RqseBafdgGZhay3k+-) zHh_52v+SK;oRxaXU8Xi^){f(ydTCAq>0hkMG(sad`L<;Af66=y;xqY)HfKEw)du`u z>~M#G7;v*QJ&1?ml;*wM-}?3$_q%^uC6GaMnL<4fLRo{f{&x+twkd+oU!QI82DhpF z;j6|?lr_xm{`EoX<;y)O{OET`KBD%uPmjt?0p$`)Hr?3`Jh`leM(ogO&x*_&t4Y4y zCjZ!5D~;A7%6jsanhmGyV*quxhIwtjz1bX2)64?;S1L8@?h9;Gw|>l0{5keY0pvo! zAu)V+Vo2WsSj`k0Yj&--6T=I#1ycUAnD?=F>0{%iFG8UnhJ!ptow&)|guZ}piuPYs zM9)96y{#WohJk<*BWLI}l8{R<8E0^;>(GP8AL6C~UnuMDetx(osHPhXm<2n$-iDP2 zcU_I`BrRsgnfH+B37OUPQP-?APcK#Y^0Wl%XM=lmM=()r3>anaxqZ(H@!gc5Y3`sg z@dbv+2VT2ydppDu(8euX9GC3s4f(wZ-~D$xyQPj6laLfpYYqAY=*&vIgh&* ztBOwF`mye|zw?}a_p6HUYq8pfH0fCHP*)O|S+g?qnXrPF15ZX~gyxJi`;{b;Mdr=I z>Lmb|mp)565ZuUT!FnV68k^@39|M^Rwc~shF*T@`;Z(1vI2$y^NoOX8wes-|IVsL? zF-Y$44gP!LO=y_qhIlxW1@tlHr#xXOyqyRta{#%ssJo~wMT!10xuc zjpB!zC||!HdR_aCQ>qo6g6XLvynI%Cg*bybKn&4Py*pNWTprwcK1ML8sq38P!7)xr zcmPEm?1(_y8~p~PFw4^ADJFqsY)3Hx&yuq?g*ws1v*p4thYp9LBva#dkNgdAwXllx z#h>*VO(6wveRkuC3OU-eJOvtDT}`QMj)4e&Ix)CeGR-N!F@Yu(g*Y}&k8q^t(Xojg>j4uqem*zr?WX}Ya6a)OfmpPv|P)(xNBtNkr>o2#a- z{~@8xQGBBl0Ov{EjQH=aV9zxgGXQx9H8MERQ%qv($fmy1 z0P;jhzLAytwD(JtiD#;;7Vd4d)I^6~cyR>VQU(D!k1uy#m}?22s16LlH}Ag_Qx}sE zQ#chUs2O1j!sj`&rc0ko{zz|W5$$Q2YlEliGrm}vci>(ja`-J?wsX1h$%^}8;>M@x zi1s6W&`I_aD%u*nxoObTpnXTvifq4~ZHE>Jino9E$fSc0zR=?KRc?1K~ zBHG!I80G@WwxjdkwiO$^U(-B@Pmlk@X5>U-7K7@HO7YsZw{OLA$gg-#tg2T!{qQ#I z9$aLTkd@)J{0e-1wk~L^i&_z?F*wK?YF-Iu)JVJGUgGW2i>1OG88tbOd!tq`aSwN@ zQLb>VVHynA^*W6bpvAz1DU_5J8j*1~%o05vxkh=Uj7JuU36#oHL=7?&2bAu8A$ z%`(L1|IGlt{MucDF3n!mz*^%8pQ}ftl(S{l{;K=hIODrFyvrVRM;!Pq6Q$Y-0?Xn% zXMi^&kFd+q1()4(djQq)p5x|ABNkYiVM#I4Fsp~^0-WQW0>*2*g*!ijY`Cm{4**tj z#(+@BzpvT*+ikYQ_0g6;Ko8pxDLI2e>e>+Ff87{rIxsy9zUML>^KtCLh64n)qVcNkKV#YuwqV?N( zV1bpS+YC?i#Pd{CH5)863>+)HXumw@P=*hKnQ%H)=h7Xk^|4hBnTy!^&IUa75J!E- z4|jg`X@PIc-B0de0)ilbWGu#!61QEf1A^I$*cd$`1NAQh(66;c$Q{U?4zc&)Hi0oE z1uzp;!A*0mZk&TZ0j`Bhn=2+!6|SZMX*yqyHd{K|Oib!;M#{*Ak|BYbpRo``WMxP@?KO&Rn09k?O3DwliLy zMDmtV8y@e^JdqE~H*oFMO{q3IO!_s(zMhC~LFUv<*90)00ad}q@sgtv+JZc(djn7; zRU@@-9M9g6r!WSc$IjrRV44!i??^zfOWmsGWt(t^{vF58Mc2}t_rQU%UEW=aV|~pF z#ogme-XpKEHi>icmT90l{Qubc>bNEwHtKDZG|HoNs1G3_C;~EShzd$~NhmGd4FgnE zQt3tzkR07Hq?8sI-7s)8BS*-0-@fnn`|>~eLvg#W`-*d&bFMy?&*ON&6;?0U^p92L z2bmLh2TJ-oUK4HfylRh|+Zx|l%hH+&^{TodCjr-{@LAX58Rq435%~PS)C;+mFdvM9n6>baHu=-&*Yzf?fbPRyOhDzjr zObD9t7nePPUWquL4cT`erb1UatWEBBe7?_gnvcwF1Xug_D@O!W4!>2>{F@q)J%@g^)4ZI`>@M0 z$Nj?vJJCqLC;m#O*ZO*t?3Pyf*EN(Qi{0QIa04mH_oL;qiTg`ns26wnEr#;ou1ybO=j zQkAau{euVw)Ezy2QE2ED8d)ehW|(hS z|E{-J;A{XdWxqjqa4wp}#b`{AP4>bswN3pY?okY4Lq$~%XShs@ff z9ZeDS7u;2t%+0=?vOr+$FBTn_p0`)y?l;U!+4||d4|pjEdiHMXxnCx1{d)LQX6;CJ z4uBPkK#fpm6qZ6vBj$I4k>j1Cr~G8QW@10v^*?U)b{G%3`0-YH7+j5&J_HQfgre>O znM?nJq~7|52^qnGPnhpNLr>Y?HqnHCTGhXqv}Xh(KY72$3b`(v6r8sl(08vpjz(Tm zRD1%M(&dxAD!7FDKZ^3Jb@xH6a^rRRdhaq-RWX6)WUoD&Eh0|g3rHf9>Bh$a9+XnC z9)GA>`cy}sO#^-VN0+8)0>N04Lh4{h-ja!v$n3B!T-}-(A%>2WbM)n{&AI&6{n{xT zHKt@Ddz#2oxaB$5Y-riFUh)qie(B!sD<)QE&eNHvycy)xi@$RdP5I`YJD^Pnx}@yt zLgSTR%|*jZ62ta-1nk*$hp)1q^=5vQI~P2}FOp&-Ok=6>m#^W2iN`;?#jn0a*17!`)G*P(ou_PPs?i_0{tM@s!} zl)cb>SP+B)0L>AVU=5O+|C;!Q}3wyD&CZm2X{?7lzNNs zZ3%2HoX&F_PU5-Rcln$FinKPck5l8{=@L(4oPah9DVtfJ^ysx{9*JH4P>|6)LRb-r zMqPuws1%%W&VbOdK8-gbX2eKpc}nEfZ~or#W_#xyT)u6=b+REn}aYXXS5J=FqI zNR9zY-lz~rA#*%gh3FwW(;GKQE8rFE{t;;*VeAiyf8P^(N2V$9uq$XkT#fZ8@M>nA zM^^u;Ys=7siuFzMfy4C|>%-Lpi(mNWuSV0nbx$F9DtFIN(_rxOpc4)mJzTbOpVdcd3R+`G(`k#=Y-^AFRxB za^tbAKJ?iFE-n5NW0N#MFO(3m_~G}??P#eAf!=}M`0{Cwt4_b2WS!F`GxXr032))M zXh0<`IuOqwWNBA3KP0iPX0mmAi`j>|znMROKS!pqnwAhr?Nh8K>-=EEFt+&XvP{h))Cj3XD+sYl8L6r0d1rzVE)c^QPomAgZ`dTFE z!PLrQr7yW^Jm;?_M99uOiMzc`<`bjVa5At*HKGP3s@761AbUO7tltkm`0+aZQ2h0i zH;Hy=JHj(MT|ak@s;kKHwbzid;c(QSmR3!nx06r3_d4|=M|$X6Nw&W3KRS#)J;ru6 zNPW+tmDQfz4Z1XviUUrpOy7^mP;U6-)hZg;y>x7G-^H_0H=x@oV_wi9E0UAVQa$5j z%kDPYAjhC3sbb}d^zp^JQ{%(b^;*nMt96RCK>A_qSm_Sxwk$cX)8x~d`vU;r^g9$r z9>>Ft*M?#TW@HE*=9pQpF_VwAGupH6v!aJPN7k=lYW1E=<-g7YZL1i{v|Nuh1+ zyRy+0upEjw$qj+i=2Hu9ht%CcNAtH5HM9W_V=p2Lnj>mU#M)_IMU*(@(|&7BT=W1S zGQ+-Z1X(36sV}{)~dJe|rryQhc#u5z%iTEdp73_+9 z95TuAor*8`<%qpvx6i!|G(|)Nym(+ALXy=*zsivL(7WlQ+6?6Sp_)@%s1gv1C>-CxS|CGmwXqV!Qm6b-*?@lB*~JQ?S>0qJH49J-c(kbH7U{F$RmF# zX%Ai2)c1i)WKgWp+B>U*k(&(*A(YQ01YDW{BtaMO+wuL$uYySwd*l>L5BQI$x46%( zgnxn~IoVbQ3GTX{me8`)ErdkhQl$`i))riZ%A@D|h>nlB**~W&7JJHLw&uc#-2iIQ zZb_QuhEo>zSk$kYA2K-mMTq5rd+W(yKWCh3tFA?3WPV?9uhW(8zPR0QC1HE}&E3+g zwf?q65tqPgQF}U45T8-EQav3oEOj~Ow+Xh@&UaYaNS1W*sM}&U9M42^|;LLV$OzRi6PUk>msYf)`;{6Ug37Ph_Won zcl6mzI7*vC8Xt=}WpSALcm-YR_s+VanP!7Wg&+6eSfkkK4Lsg+*eCaH=$T^j6dz@9 z2kqzS+nRODHAaP*8D6@FW1Tky=|icq{jM$@Z({HVx4MF&+jlhY4B9nZoJlmFJZ0|J z6I$AgxUKtj@5OP`vC%fu8i92XiP1GG!Q<18SG7ZWzOUj9vm z;*UWPJOrOEq9Ee-5daU^cJJYu$3Tr}2A!u6jUcFm^vMf6s>~Fm5mX7ITsS3@J&`LX zZ)ins$S9??JMO*b+pW39A2yT~YlKMY%TxaZ)A6-}*~HYp~^R`1opw9yO@8pn+X8)l79 z&*7uMOXE>ux5Cor*3#@PXW6AGe!^s(rtxPEkUc4d$&<}iM--R;i`wY&-BnUB!5W7J zTMft5H2shiL<_U|6QJB|TB@PM>MCKT`Hu;VzSI=kMaM)Mr4RL_OqTLyBbaB_i-(4e z2gq*7%gz_bmJQDzXayxa9d6SMS|@v>L%LT$R+hR*0PPUQ_k~H~1P5Wd!(s1`wqF&< zS~aE=(a(JLC-1H8aq6-Yaw_Q#Z_6fxf09A?0;?z;P>S#|P;#pZkUGQd*F&LFh-z0` zqMmJLLP8XL-ZIhnd2*V(bwi;Z&YNL0`Y5Ll|MWH%c;|1|u@7k_OHPOR+i~6um(tgqU%q6Fy(Goqthra%AT7x9NRCqROhOV;YvzOX#G9ns_R~9LQVtY zQKQNGn4+^G!c@Y(ZK2duOyWR|UKP*bg8$Y}(WM7=%<7&(uT6UzI&T=o?XRe%JgPFa zRcc?MY?TC*c%BeAe>6Nh+#u_~Q&1Xw<T0xjNBj`jRX#Yi07?y!)_~WC zHJuD4f95YGU7kx0H{bc?+_~hlXy6Gr=rItH%YOjqcVT4V^9F-}w`N9kU~4M?(u)myd5UTGP%b0T(i_r`fzp#!Q?-UlY8V z^9^00^cuG_{MAUF$_3+y;~FuEdv*6jjHuoNw0S>R>J^rdK;wz`6PpKwiTsIyu8MgN zCA)uGDJ36HKfdcD-6Yy)Ws#O6<8!0Z!vR{WZ+&F3>#1CC81YRYRT=+Zp1EkE( zKmuVfs3pRveU+DHfPem^OT4GKTZY_3e9JSTwgqtM=)FIV?+WY+{LShIugtG-IZWB; zL-`W|Kpa2)?;dYiZE#k1NiGH9v(7yE{p*Zf7FA#dfYWkOa$NjYpxm^uA$}uZP!wBu zn_|v8Cgcf(9#PjXHr+(Z6|jBdRi2)=z{f@rnT39N@GcrZt^a~S7$Y6=8k&#IY*+C# z>R#Y;4*zQ6%CIWzv+o;S^33kALZlF<7TL7d(Gp26`o2OmR9 z6*ERSBjmlppEx-we7-!9&3)z(BY)C=@Wp?SvRSE5*L$yx9T1hbb!J{{TIW)MP-p?I zVR$}^dV&+%-IR}N3NNJar2jPP8n#sCU!m2RA50ZTodPhp0YtC_mz9%yj<{6<%=9~& zWL7hVH4O}iWYTpq#xc@1$1DSO;w|&-nR-;4OQ;~6myFiIu$Ki<6t$9EZVX&^3%!z5 zI9(SMr&V92b{d+!lq*WuK+n%lsKAVcSy*3uynsSPJf;Yuw~r^Dx3TY#I% z3%1n9FK>l5Ntia@$=PqVQ)r1*Ab7|)3$bn8snRgqL4)zXhA+zh6VCBNj9qz7Y>vRkqTUufekLuP3A&t`FX27%&mV28n8+Mt{z zRegx{O1;-^!T;{YbeeF+NhDTqn}Bt?xPC!Ccx{I}xf$+~Q%ECudID_J#51QtEY<;3 zUic+gG?W|Uh0j4>VT-KCv-A+-s^P4fD$b@gGqGBO;5tcrR-GLs|C^ zuv*e7YaKsk=Cxa(dKVHE7bf(rJ?6?TM4CMi{$+}7*G4x1kkt|ELLaeD%!a56F8nZ$ z(~CH=>q;W?>L6PW=|tXNApZQ5Cp1| zr-uJuA%VT*YLdB0sAUfx^z86{%14Q^?$V+4W`m?Vr@OfT=RE_lb^czS5QqeuPf9=F z5(+WfgEm9hkfh!l6O>u3HdHZpat0_N1rgx61YF$^aWSAq*zZ|DNZ`7LD3#&dGR&cG zt(t;AxYJy@a#|qE#z1Ous33btfpo0;^)xqBUe7OzSH3bwz7|BLI~l1N;ifO3yI7<2 z;pvL!cp;~SuW<3JNJqQ^kq5;KmUGC|dVGSrE<zxSmGLzJ^ij1 z(?bJD8wd2x2dTQm0P9;JQoO0;H%m3{Zb`QvXd#2erQ^c#=Kw&=!5Ak*h&*mO*^3T( zk>SOC-v`)b-pbwokPiY91;S#4O; z2}F?%%HEBb06aR3qc#M7D2WiOliCRe-)aHx(x7K{d)%qwh`!-K;5pGUF}IT_?#s9b zg8j!gbJ&gEMjEPiCx{J#p$hwwhI8a66`Y7DGeC_WsRf5WS{FIciXO<#JXIg#R@cpp z>J`c=3_O|-x`avK*8Q^dWV}y9P{Y}gs`bmrTMwtwoH+-<{i0Gcq`T*t5oFX}MlR#4 zU@P)|XieL%PYUb?X0;6@Y`9e}8*vkaCB%5H|G~RKf#cjB-FG zSKVNs_1t<#*6JshHk_S&)E@f6=)Oj<7^KLRg4BL^_bzIx&cB0&sn$m z*Xh)++dY|Nn>=2T3>0Yw-vsyTEd1dC-}RGcJ5G|Dk+VM^PCuMek{xoXfgDN4wnc8J z+$SE2z_hpEyCxKNv_Q<7)@!z6r2LERJmjvQ3DTnGD@nEWk)Y}mNLBeY7E|T#&Q5hg zZy-IJ`U}-)ncfUbD(u|V8NY$O`}Ls?Q4Sa%XnpSof+?8)o522OL-i5Rap6@QH(@o@ zaZrH;(i7NO6Pm3|aTiJQ2g1(Ynl%UtA+lc9rlm6d+#hQH2Z9%NfIX$PTSzL`>b{{* zj6(9weJ+K@xO=|c{g>n$(IX=mgBkI<6k7T~y4Zu0m^MhsI}#v29JwO?}v!3ffpiVVq2NG+A6~j4fR(uKvpju@*87pc`$j6lj%2eul zJzpP(XQK_2~69UBUQ7XjuPB!g#Kz2a^<#AM7 zep9bdz^go~(aMLo`#Bl^WJlTb)6X8SqX{hxqv1OwgfY)^nZ8n%TYf!6m(3IcugsF;MkC%L@9UMmdt6 zF6Tf%?*I@$*BH{YF18AIiVkJ#o>h-EuxJ;RmRnVCN}7ry)rv=bbohi>!M>_7113yl zZ*R?g&N9y8#ZpvR?dYQGN;kp`~H zulboLaoxzslwyFQR+UlS3(Ws0O@D4}(v;I?gAM)Aye$<+!uc_*2>Y(>dAE;ns=+Gb zt|gOAWiPAsW0IZ~1D>h&w6F?SoWL24;;05hKu~Rl_*atzRL7-1MYM>OY}vgc^(L}n z|8~ou|EdV8lgAXntUp)s0?jEcC(AyLXc=gxp}taLPf8S36v~@8_<+bE6=+}^py;9K zmZdKo(OP?vWW1?w^E1wcVFgPXnaBc;pGnYf`xd$xGzq?5>Guh98MoZClI^HojB-Sq zAq`l*+{^lwehA|Y*RrPf$FNsB(X)6DyrxG;(z*~9llf72vV%-uX5tbm*Y=ImP|z~M z$k_a(Hw^m}hB|u2^Ym<$nE3D+(OP)sUBJM7)1SxU!LmQ4*9 z>=1IBZMu;zGhxFYu9H@I;r4H-Whp1)m>9j?er_xloPmL;_Y$(lB6Q+#=>O4r^4v8M z;S<=ia$JDky#sJeUwP!U-g~cPa%Oz&3#@YrH%jXZeHU8%3fI=lXFl?myl|);DaG&= zmCBUE)^rNcbl_iVi^qC}Tm)|gQ-_EkT>`w-E2zuD%aqCt%I=gm`jitzSi_b=-0me= z0}y(edKpv$g`@1!R`@p}^O2GU||q|Gxn&S&qLEaya>(hXy1I$+U=+e)`X6JX9HeXu+i zR&_Bys-~#iI*$YoUa5}GlI0m{-hK2%8?Z}aRwu1UkuyPR?d{onHcgv^!WZ$&Wb!^l z>igfXH((nL?jq{R-91))48!S_-2xClkZ1FT?kp>PdRlx zONFe`HTR25wO7U*9&MhaAb26*L*rgJnDaW?*tvHkPpJ5=59ING;Az z_Yc|cNPQxz8F}O^3+tMDYoj*z_Tkx}UMvmNS(1Hc5lH4l_(fbj*CYG?Ie*SJ+wwe|fZDb$fRa6NTcsWoTHZ|r8L z)@0JZREsWwE%~sVuRyN+fZ;Cd<3>AnxdhLCC-$fzk3DTSPi8}wbafr`pFR4gEst597MX&I(_oz6F7~lYa!H-u>_vfD%^J3~_a_8W&YshX?b=ZC6 z7%>`>W$9L(3Y>Xsgou=$9W8F%_S|Q&b(!f$^KcUBWHN`s$L5|9!BMp6|w}M z;(RG`z|7k#dvb+!n3*xodVXU_@+k*lr)H&kr#pv(m+WyA18;BWJV(|sz-Zzh2b2iM z5jS4e#h7}qu>Yt^*g>8l>K;(rjJBSxZf*L;=tx3?<8u-bOm)OO)EQ_?!k1t%Sf8Pz zA7G;|xN}fhB{^uhm6OVIPiPUm%hy zKDw)XgO}xN$O8A1j-8)>Pt<3|6aP8nV046q!#_F2(yZKccgRQ$if#e0tFWRdpnuW} zc;a{{ZSSzxw=bj<#vb5b-S!lv8WX+@FlvC^LeAgkjmaXiETWU%KbS8va%?JX*qy2D zWpro_rA3X++r;_~A8#04RVh9IE8YaihSa|(qc0mNYc0RdxK_Et6kU0*jHT@7-oS&O z^ZMxlT@%xVZ&{x|y$Prs*mV^t6=F1ajsEWQK>FYMbw+^bZV>xT``US#%i>E z2TjK)el{!$pM*?r`a0+#nKCD98K91yIMU=vCgE zEVf|msOD%X=By!W?GqPyGvZxCR+Zz}&mA0ZFEFG8ngRK~6t75wFZ_;gNh z@R6>S($CbHMSmP0EkfqZbZa)F&mB6C`IH3^;pGijgk2COIOT5O>RS`lZvlQak>ldC z9+R=2+~x*adfr67wyUawclVtu~i$0vOLH$2#A;Ob*eM-3hW)EEib zB;(`c%mU9T2h{6kYO&Heo#Vqq|7jK;gqrf(Ccf*8$^f`@oM$p&Js~}@u-c!hXCI)u zCqimHf6qi*E~BJl-u|Awz$Uvrqdj>$Bfy(P_%PZD?Wg@!-YoD7J0t4HKX-!ECRDrw zPYY0uXl|8}F>kyGsgQyJc)@^4C3tg(@;ylwT9&id$LzW@$?5KI;vD1?Gupbt+5z4L z7A1Y6fkb0ZgT3Ezq`X(^_I6om>Eho>>lp82P=VD5i3QpS?Hg>5ooDc9DNgDJfLyx( zBOv4vG>q}q^G?l&W4QvzFHHm}gxw>>oYr`E*j|-A^G_c12XAXLtOs)Q$5SVdFZ%=X zz8AhiW-%IJnWa*1p{-1Z6>S%go&*G0Ev_q;%_a@F!1zmRjtWjCL-iCCB;ac&GmaGV z%E^h5sC|KYDhgQ9R9JHuCLS*ONsev!Bz6P_QdEMS?>8d z%MCm#s^+)$?Gh3P$#Xr)utsssLEU0`ZUt_w8qJ^T+Uh}y4yf~1CJ~fFt)N4#raH1h z>=;}dv5q{AQ}bhJeYmAZJXI*$c9E5q)p$lm=aiuEr;+41xo)(TtA=_dPV2&EeCa-} z{VS2j*9dO6ley3HG92zha;RCd2O8{n$H{*HF!gt!u7tj*U5>2hxuw0^ zV0x`yYu!o6`Uil%*Bn$$t6daiRm{T7MBAjvusje^!vBpZGk#%pM1A1<)?uX`i{Wk{ zuJC5!9Y2gw!S^{yzEJ>7hZhDE?A?U8CalhaXSIhsqf`ZdkOfN6+}+j}>ZjHn zES2W>2oW?8Ff~h~xuwVzu%LD-CF1iXB*?5d*WDupzzEM^_VN7auje>rq9C-yZ|W-k zA`Y^cm~QUfynU5ajz7C$BoQN8$v`Vq`2wA{(E&}s6`vXT5cxU+Xgvw*{uJ?0P6pCx zt_;Kgm1NMhfa;^@_eip8exS>X_YWuh`JKqiB3(-CM6xEzkO}@aqD~kM-=lhEk`5Kqx z^gd*9P@7|+A=K={%z_@2VRbB*q#1+W4A7sX_(%4S#5$m{#_vruJN~& zX|f8haPaql-cZAUpMKuvjX@U!9UalcJx>N~38r8Zbp(c^>8EMpo-dDq=BOR@w^%L; zLoB(@mP3#A#{VqVV%lk?)thZUJt>TzJO1;!GI?5?zhws__?lby6pTcBAQEe}WH&kO zsk;_7z3nONtzPPxsl8-*aBn7jw#Pej7OkHidc`k(oHMK}lt-O?#jvL-7nBwXH~od^ ztfS+lWRX)RK8@yG3G0Zv+X*qz{KW-;Sm4Z`7XvyxPAITI^F zpDaYXfx4rms|EWwNhOU9ix8J3qR$;<>>md06(QoY$kiX{KDU~ibg1%gI}4&U+4wDq&sP0&W08Yi%bu@Ahf$RS+h7E zQak(pEUE~3i^w?Ne?g*!CHp1?kj<4Oev`kTOebs$B&s%SbXN|MW~XRu#UuvQtFV^=%=GB6WD4Y?G|;?Ve?Uuv8ngsTasbs zm2Y9Y5sBO=CkTB^?ic?;g^Y4Ytz4Yv278jRnznjSQy!>283*_+H@vE7eZ~S`kaZ~d zMIZfx{ipS;`!SV6q0gmFPCp*9Hyh#?7C0b&=dq9XRiaM!xCD2qqbjfC#3NOfh}==r@tggF>!{-z85t+`f1y6kiGFa7wW_yo-a z%LIq=8?Ok5n8@JtHy6nMVCi7N_tLLozznDjWWX3ZzWs#1HPsnV?f@CEZjHUCeKN{7 zVFTb^nGIg6g$=#l_`9HM8=1BLlO1?sV^eK zsYIsj-$M4pLrShbPeDY@rc6m{coE9~-Uy!F?V%s6f~0R6+aoc9@{Wg;!8_-$2Hkoy z@GeL`KEx0nHw>vn+xS9WE)wpr5k8YCz2rXwtW1oM$vZg0+5BaTdp3@V(?5_9<@&4N zV`+#f{~ld_T9XCzIh#+qUl!{dVmWN$akZ;q1=AanU}*i@U$n&zd9-66lum)%wyx## zRp>njF|l!c>gt0V-s>s$SpuYtRl4(lvvom+4Lc-mY@yiByNsx`D!zr|r7sH_84g$+ zZrOP##9B$@nm>Xz3y|Lp8pd?}mKV7>)qKP|*wg7|+<2qorlXHEaOV4CMpo4k$5!a- z)RPerMuxsk*9`|syz-qEq>h-Sq z9&Xc8lDKNM;|}n8YL&=`?`r^63nbs_to{FM=}Tx&(AkC-MxJ(*USw@nx4$0Po9E7# zD_5_zkd5`4pd`yf{sIf25=S<^qh`@kYM}Hb%zFg-CNel6a#m>5-d@a}vTJ?QX_GCK zGzmye`4<*^e+4|sdL*P2yyL>S>(|>-i}e6)380YUe=;4JKaOBBgK?0=T$>nqNj!=$ zMUa;f{X>%8wi|=dIH)~hRN6I!Gh|U_k#Ku-t+B3ALRf#0j{1C1N*N~e=)BFwrXx2q z8zo7K@Y&mqGfme;^i(&Aw(0NSHzjSuX%9a0SjOtj`y3n0p*41vuB|Asdt;vyoqNn2 z58ue#kyjh<6Pnk!%N**8cu~2mLN;H-WBJkl7uPx;nniKj&qrVX!e&I-wE08$T_8$0 zvt5VP-{Vu1=~5)svP#bHg!^7kYziMVdz^vQ@F6jj>?UwCDViENNA2Ub4EK5zM%h$S zwjQ&}jPOf2cM8p;zetOC%S`!<%6+}<;9JDMroi@4b~}Cm z|9-x{|4fJNPAJ`0!~R3+m2MXtU)aVQ$Gv)MW#yP!rbEqf(ky%~wGGQct#8a=&U$m9 zPmXvH!}AWpe3b@>66kpR|4{;cBpw*dwWLkdK40;)J$pWm;sW)Rl3wtlH#Ci#liTy2rH?Pw|KUeLoEW$9({LAD$`t z^3rPdTbKaTAHYANCLyKa6)8Ku|5uG5q~jn|YC?oPa!t9H4-3tKC{p?|6GJAnfbRN?H=mPN#d5|OiSb3!p45jd6gH9E6vEzg#@%Tm+WRVlP| zK7tiIqmcQB`(I%=qXSUDklrv&(WR?Eg_O0lg2e z<5TGhiX=HZB+nyY zijT2r#j8N#fEK6M#&VzTh`#k=f3=^V|NErV#jKch^_EXe0jtz>fKcoU-h($&`2Nvb;W{CChLKWt zQRvdcI6<9KjbwRRVGAeHK6?=q?>JOrbS+bvof{mYu|P@SHfzyTi)+Tcvnvv5bu-iv z0!QuQcM0839|6TAR41}L`^^W$y*s}P@-z5MdH}T>NAH`!9o>-1!TWW6=99!hM$rb> z8ae3SKC1q2%lx+>RDt4TG41|`JjK8t$dwWqRLw~suhf%kL$Qg(XQ#XF3jtJ&;zaEc zc1YD;@q7Aj6&~+5oj2A}=-&_D8(J7aXg3RUc4a6fv=7993zt%{zaRg9Z;^hBt6L!? z0FAIx>-2MkZsG^>wAsdhn_!3ndJ*gt*-OT<0R+9J!(0hAm_b-(`ul&c5kj?<3*WhJKT$R=e1 zQESy~QA%nAMLr}Iwd$l;uwX2J2kE5?F>W$mAtx10U#MsOap{`}X=b9e-F7;JofPq) zMq8~lX+0i;_52h_CLpZ$zv4cWCho9bo~BYwEhyOaXcYWHLxxOtmx=r>ReCM{GH8Syj~O{5a3p*FLI{s+kWo z4~qRUZeX2$|K$&-Cd|(UmGd1PU@U_S}o%lhm`J?1A$i@5*2n-Z`S}b7boKpLf zxM!pZYO(h>IV7$AeP*Qp&og6m&!XZ5)fO1Q5<>lAiJ_HO=>-R{^u&PDUT!1+vV>x; z>%GvJ1(ZsbBwv_Bth6~!hr$X$jw`0;S=LNp6O#|0@Est_nhI)9{ZB6dwdXB&8Ygy| z=iN+K(xsf{nqW)<0S$vPXa6{f#fNK5NfHbwX;=_{+vKm&R zm@QP(YKq+rl%Q03;)DwghEx>sHW0&p*6>~ziFtkAa?%mI0;YybwMRytf2bZ z;a||TpwBFDTU5QKBZ($8Dvk@;ys2O*Ht&7~o(8W>SSk-nwDj1VuE>g7cOSB9Nci=Y z?Ko8IB|fS~*mye(XSimty$G)KfeiG2w-Uf-zwadK$Fr|b#O$5F)v!^D0n8grI%>7~ zCeXs>&+O-3XP%Dc8=7VV;L2|8g+SYH@MU|jKBfz_EuaRGn+CLl0LGj-ql7lGdYiY` zb$LyCcLH|&dhbv4-fgrmA8+1raPkYC{Y)JuJxKho%N1nRLuKW4_a2JBB1;E0fZk_E&=(NcIt5Acq%w2J%Kl4X_*8!V}`{k0H7x&hlLVCq`yE|o7&sElyZ zMk6|Ui*+5oquX7TNCo~%bcMn9h4D~$?gbDlD9un06BxFwFuG5LPnd~>l#SP@=MAPNl_Z!rbI5M=Vw8(i`RD}(0PWby;r?fjV(Li-8 z9)c7w!r4x1P<0zAOA}N|VfDXB;jcN-&^wUxwnbk4<5u`Vaq(XnRmQWa*N=g3!fVz; z&ttEXA<-b%uDJYZa_8D?AlJxEsng#%m`L$CeJV!I?BwWahg#!mpgt*wEm<>3{!>Ow zpMwEuCq2z=-z@3yK!t8x?mJHc#zw7NAh#E22EM{^t7jxRY6a*3Kb8h7%U=JT4g>NN z@IM{6&yFpiqS@t}1`HfbSfULydRtO~&!ck~>ExeN{Ozz)D6o7A&@TG%XeK5BklSSctuOC!9ZaO*Z%k+gXQL5NEHiiOu>X~#>?n{AThH*i zhC=}rj0f+$rUU$qPL^0}$0h-45w?&3!x^FkeUaP4a{_?<#I&7Ku?iV=MFfi9Ofz`0 zjLHbSqr9g)2a3pEZX8zPQNV9W`me7LWu_+#`*z%(t`vB_SE^%t6iIw@(83Tb_%&Mo z)bg_!pyf5XaR#oSrhoYZj>LRJ_2LvB(OkiD}-$ z*Sc~3C$fTRG_@_tdR*cz?IU-D2X{J$k7u7mzrPaC(PqWq#{oWCEI?{4?|Yx9xAqu5 z{L#HbTsOvaTtVj6Jf3+^bibr&z@^3Y3>dVMlZI(Z0yyCBWJ+lRSfgEsf7ZLJhYe_P zyS$r&V}{)VI>tw*_udOVcpvq!Ih{YyPs1}a&^aMbDUvGk;!IZ>t7bPx8&{Hby`wJMhm;p8)f+?qFbN0;1mZxi!21aYjJ}SC6`0x%uU%{N!r` zPDC+dE^tI?SN+ebc&kAd1MbWD&X(1{;kd4KTHtF5=l|KE2Fc!OeMa&Wd_`_+exl?h zH6lt4bD*`4He0%!sdwY=HLEl#(u4fcft@s~iHJ94 zp_Rd`LFap*tx63tZDsMl?})b9IR#Z*nCpe`^|>-T?}_gV*3P(MB785e?PSe(%MG6|jZ9Yl6M2FVN|#T69Al5mO}tA-cW$XX z^u@xyY&0_Wy`1cV=Fm+GcfhEpyXXEGUVuhUCinKdmGJZK&8L;KP|LGB;aUa z=_;a2?fQJHqDz~CKQ5EIYwDiuK5dz8>=_oE$5YvK_bJT{hn(vVC`e$Rg&EL!X>rh< z0+MebmxqqeIL@MR!Xuw))_?g_U7H8%kUK;(mnRc>OB$Q0(R~~>qT~->ER8NzmV-CNLEDs`OM^Z5Ca=8r)F7c;5cPi%^+M7}Krpd2WF-Gy&xG=0%o@hb-7Cy;>QP9duLtPhCK ztH2d~!W)M>KrXnAoLD4O&9 z%U=Tf4%BF|GGfEZeAo3AfzCzftC_q%yph-Hb}L>lx%o!MAYa4)?@aMbFREqf+YSTs|e zwb&ATqgcxrPJ>OX(y%d|W$;p1(pv!?M^u|7`#~Qup`B!CpsJNa?1v&b=qlg3h5BjBZ zd}8nhLKP0lho4P_4)zE|uRr&5PRCC*PI&Yzu-g9OnaZ)ls+d$?<<#-ht}WG2J>CDV zH|Wj~-FjPaOZQKe#5n(Dyq<|cLZjH3P7}Z{3#k6dof>EP8M)!uHjF#SDR*134cx+f zR<8OdyLnh`3jaiwusLQDFs~wONxg-MKjNo$8A8AhG}$dZXuS!WhPET|EiR?!!Bg(x zM?3?N{hs2cCCs~5At4)pzmNmaPt~h<_;Gl_uyb}((TqUCk;f|EzWzHJEXFDy0itV= z(P?%U@o8b>W`z>8_n+Zzj6yYAWUlg|DR|#Z2NY}-!MN2Ob>DRqA5+Q}fG9{b$VDkqrneK@A23Mx1>dQFUz zjqc~j2`D5EfpyD0;P>4ODAO6$t?%g{k-b%yVjUyGqYQebQwpHZLJ3 zFY}1pUUJYZM70#dz7@R1OhoSYMnr0_fkeJJPNiiM_7iAU_DN$qsC+ z)^k_`-4zbMUGS<^HW%JL?l_++G6ycM9DQs4rBMGB)wHC2Hm$VC?kdULTl_JR$!2NZdrZ^S@R20paO4D*K_3gyr zWL3VQ7BIFV?GBs{1rH|=d5(b#-S?AY;iviBGE<*dL9Z#?bl|2r2fxv9RRPdEi(&ff zw1R(v>^0X@>NCuyg#9&pIs4F>$4SzDp3u%swoMKbd*;oTn{UD0X1Gf9*603zgYjjx zA$>srEAlHWv^i+980Rl_(ZAZsfsFP5&?0KR&#WeDF=oa=*Xwsl>{kh1+?g|=%l?xbP4 zv}MDF`IB?w2+jbcHkL#`*v-;IIja&652KN?wY}mVPWzjLR89JD6z0$-hYkSMsE6Ax zJaVMgH;_a$ybg~|+U9{H6)2?J6mbMG6Vux`y_Df8;L;;SQk+cARfND!&qkfEs|+m( zR!7y@w2AvF$ROe3n0j|)uAUVIYe=PAs7%hU8g}g0z5pp(OV^{tq;lT%BWlin>G|o- zgBoF5T6}Gpl8K-CkeZ(dYACp-|Hv2Uz~hciKdAX=pDj5&*prjFc zQ&guc`R7HgE+=#c;;yta`gCxx-)6Z& z@UsLwNgkRDa=_4f@?`HD$qvG%3pN+t5BcK*eZNH1;5lWR?^-&!#+f~kagf&j4ZRC_ z^#@@2-=(8Ui{-KX5qi+CPL_5-tsP<<@y`-j_g8X%gDysW;(v3Y-=PUh62Kv=UP<*H zzbX7fGftwn2aFPok2)B3seU^QBsnEu=FQk>$MX_-7rK|3)W=*%UV8WjbjRu$d?hOV zIFEOL7PnU#ok~Ts>6xTkAd>gE4m9Q<2b}+dvbTVW^8MC^DF@JzQUs(MX$Dj}l#(t9 z=@#kkMpC*Pq(lUi?hqt~kyZo|5E#0L7Vx`=-}#^SobR0Vp7XB7a_JziG|Y^ntxx7O+_`wKS4BJD;Z z$xNE@f?QwxoHAO*49vJr@5u>We?)bA$ll=?cm2rlF?(Pdu9j>I3O3cD#Be$mAE4D1 z_bvI+?<$Wt>FJ_%_)pO%}BS5JaecGQLM z_m;cz&R=GuaXcnu4j}o8*;X`?R~ZWEOOb5Oe`WomT(b415~aPWziQvF~&A+2%vIzEG zUXw?W8*}!(2+{_E5uy?5M^J)0dDQ#E;>gUNhF)$YY6?i2%$|adIR!3;p`>ft)`SgB z+di7@{LJw&J-B;7gSL6u{hD6^k|-%*M|nvtT*Xs_wYX+lIOYv0ZA`U>$xj57yjI~& z!4f0=Rv6h`qKcy#m}@AswLVEc0rgUF!9>6Lb89sk3~4aFX1V+(-8qf!9fTwfxfC}) zG?>5N4aya@k{gWWgtL!OxSOs5B5KNppfK)7Y??1$7Cx=!`QDRcrJfqa!nwWYwVWt- z@7;!%HAYO}L2`b|a79y>=vjP8Q1BBv&48}PKd&%u@14ddq#}3js7r+`=XL_j`)V6eR%LFTD zVPlXr-(dV_;NMF{-JKiJkLrU20i>v=@v&dyVP z`JmXJjno^KUZ(M^YDT(WN{=tV5sn98$CU57OH>wGk8T1V))uv(?tE+Xd8($Zi(XZS zjwH+u(l0tGr7w9q>>?ga4y~Dd(`g4EJEXi=l3xMDM*(`9*SmB zTfZ4~UMRt5+MpAhJ1jn&R+4dQ!C&iw<=(Pfl@cp5x~G@mNv$Dy^7$4IXCIMdI@zm6 zjOd7ncbTXI8O^-+Pu$!vbu4kYQ=djy0r3~7Qxm=mlG@8XABN!VL)Y?<)N0@P95%3t z*cl6;%Nu*wH5`z#bKF|PW80*A9Z_M6aep1NhmM;u?hxnbD}PYcLFG=}ZDfL{Y`)cH zzmj_1I2vx;T0@^5FE*D4TZgj=#MT}JHDkQ@w2yVhzk8(j2XktDP>`8$j0Ssh$Z?Ip zp~Cij{C92srJYUx_}E=^LF68@m-OKD%^LnWOvXVIC8 zh9^HAwn z-itG_i>X_xzbCs`ew>*N?J1e|n5`asFvZ>X19486E5v^W9=#Q77nP%w#gP@(gVV~j zN_I)4&%L4lkt^JvkLvZ06roP9htxT;a-TS#0eo0j(gplT37>`kHF^!Osz!~(ejTt= zbh^EPDQ&_oNhNuYP>1>UUKwMlImFKW=g`e2>^~SPl4`hB_=1coykvFb#3`k?r)VPz zmr8#XFKLAyY-0?wV7>%|Goe?4Ixgl#s>J@fe25wJZd-mgA0%3(0O3S$Z(|4Kc1T0v z#f2MN5nUwXZz#~^?iGAvCU&8 zX=%DNClC)vejCkFhW*nh1p=GKp6>h==C<(mggyK^_X^r!u_ zY1ZWo<$gNnou?9ddl-n6GLBdYkCh0iIaM8gvqha+1lI_r_Cu$vd{b5Ku!SzOP`s=b z&=7a8w3qh%CcA>0l1+1@d?~yeGwd;@XLN*jiaj>-h|cjzL<{Mp`>eo{fldqA(L2&T=hd7yp@!0 zn*N=kzWW@qk8}#^qFF>LnMbErf3$w?8>kwh`P$5?om9t8=WF#($3kCG(CV91bLAj0 z&{D--5vlUrOVfTfkU3z%Cly$@|7)*cKBOBaX|meFR7|`1eJ`6(*M!gnN@zK?1v10G zD}^6wOP3&Q`Uf)>kt-yKvAkfxJyp4pr}s@nfC?_Aam6dBW*DpK0Rc7k`b^pPlQ%?I zg1Ehdk56Y0)wF4BMDqJlZvufky#^~?J#&8dBN{jgH9EP!P>4u)t7-PE0i)mmLoFNG zck6k8yO)=EXryQnvKhai=jlv9$7+tN3T6P>T=eFeJvQ4=zE}XJ`Vj`~=1dQIto_Cp zPpG&F6UNPG*q&Rq8j+&d#N6COS|0%+av#HTbwa&8D**#XKjcN3%DGXRR~)|M2+7X9V*U~r@!|$L~^Dt zrs04_(VJ`^)u~l50-(!I?Lx8=ckltzjhwebpvO9KFVl{FGz87f^A-MRy{ZbZZ!DmF zHC~4QaqeidXU!3MZ%Sn3v`1Qp$NwS#w3S?{2~Eh~U?~NeUDWy`!|DSnv!8nhk9Q}l z{g52U-O{CQw{O;3@UPCVlW&Ny`<4#AvWqsoW5q9^7mHg1vpL*1e!Q`+L)J zLL(UCb_1rg)THe-RDg{h&AV;`#Wg+|`@saym-HrCRPHXZ$F}5el4K4#LhGW}ov59A ziN68AIz371E+{vqVY-3KGjF`?ZfE_?Ukc5m>G!TRaF?lXjE*M_jE|dsd|ZuG?&8BB9$3EpYQ#)ZsejDNa$$qbW=ez;I4VI|6Elhq8-4$2QM0aGt9ZR zV}NmAvZRPW8L`)>RPVChJF4nq59Zj@bal}Oz3T|xMe~l#5r1Y-t`; ztGG{6ge+&`HjIeoyH9#ip^4X}1GUm@iq~!MuUm;^+k7*G*eOlls7I{bNvOpn(tm$y z{YV2B^$0egAws)@C}!hSlzg+BhrW1YFykG9nemh#VuI#z38lhh{+y14i>}!^2!IHAA z�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%0DGwgN-Pzw!89M`sH44 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 literal 0 HcmV?d00001 diff --git a/docs/resources/cnab-primer.md b/docs/resources/cnab-primer.md new file mode 100644 index 0000000..5aee06c --- /dev/null +++ b/docs/resources/cnab-primer.md @@ -0,0 +1,86 @@ +# CNAB Primer + + +![desc graphic](cnab-spec-pack-dist-app.png) +--- + +## What's a CNAB Bundle? + + + +> The Cloud Native Application Bundle (CNAB) is a standard packaging format for multi-component distributed applications. It allows packages to target different runtimes and architectures. It empowers application distributors to package applications for deployment on a wide variety of cloud platforms, providers, and services. Furthermore, it provides necessary capabilities for delivering multi-container applications in disconnected (airgapped) environments. +> +> CNAB is not a platform-specific tool. While it uses containers for encapsulating installation logic, it remains un-opinionated about what cloud environment it runs in. CNAB developers can bundle applications targeting environments spanning IaaS (like OpenStack or Azure), container orchestrators (like Kubernetes or Nomad), container runtimes (like local Docker or ACI), and cloud platform services (like object storage or Database as a Service). +> +> CNAB can also be used for packaging other distributed applications, such as IoT or edge computing. + +## How is a CNAB bundle stored in an OCI image? + +![](cnab-oci-format.png) + +## Who created this? + +> ... [Microsoft][blog-ms], [Docker][blog-docker], HashiCorp, Bitnami, [Pivotal][blog-pivotal], and many others created Cloud Native Application Bundles (CNAB). CNAB is an open source cloud-agnostic package format specification for bundling and installing distributed applications. + +![cnab-contributors](cnab-contributors.png) + + + +## :balloon: :books: Start Here + +* **required** reading! the [original Pivotal dev blog][blog-pivotal] post. :bulb: +* [github.com/cnabio/cnab-spec](https://github.com/cnabio/cnab-spec) +* Microsoft + * +* Docker + * + * + * +* Tanzu (previously Pivotal Labs) + * + +| tool | what it is +| --------- | -------- +| format | [JSON file format](https://github.com/cnabio/cnab-spec/blob/main/101-bundle-json.md). +| [duffle.sh](https://duffle.sh) | CLI. Install and manage distributed app bundles. +| [porter.sh](https://porter.sh) | CLI. Package appartifact, client tools, configuration and deployment logic together as a versioned bundle that you can distribute, and then install with a single command. + +
+ TLDR: the CNAB JSON format + +> A bundle.json is broken down into the following categories of information: +> +> The schema version of the bundle, as a string with a v prefix. This schema is to be referenced as v1 or v1.2.0 +> * The top-level package information (name and version) +> * **name**: The bundle name, including namespacing. The namespace can have one or more elements separated by a dot (e.g. acme.tunnels.wordpress). The left most element of the namespace is the most general moving toward more specific elements on the right. +> * **version**: Semantic version of the bundle +> * **description**: Short description of the bundle +> * Information on the invocation images, as an array +> * A map of images included with this bundle, as a component name to image definition map +> * A specification of which parameters MAY be overridden, and a reference to a validation schema +> * A list of credentials (name and desired location) that the application needs +> * An OPTIONAL description of custom actions that this bundle implements +> * A list of outputs (name, type and location) that the application produces +> * A set of schema definitions used to validate user input + +
+ +[cnabspec]: https://github.com/cnabio/cnab-spec/blob/main/101-bundle-json.md + +[blog-ms]: https://cloudblogs.microsoft.com/opensource/2018/12/04/announcing-cnab-cloud-agnostic-format-packaging-running-distributed-applications +[blog-docker]: https://www.docker.com/blog/docker-app-and-cnab +[blog-docker-cnab-to-oci]: https://www.docker.com/blog/docker-donates-cnab-to-oci-library +[blog-docker-cnab-next-steps]: https://www.docker.com/blog/powering-docker-app-next-steps-for-cnab +[blog-pivotal]: https://tanzu.vmware.com/content/blog/cloud-native-application-bundles-a-simple-way-to-install-software-on-kubernetes-or-any-other-runtime + +### VS Code Extensions + + +``` +Name: Porter +Id: getporter.porter-vscode +Description: Package your application artifact, client tools, configuration and deployment logic together as a versioned bundle that you can distribute, and then install with a single command +Version: 0.0.3 +Publisher: Porter +VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=getporter.porter-vscode +``` diff --git a/docs/resources/cnab-spec-pack-dist-app.png b/docs/resources/cnab-spec-pack-dist-app.png new file mode 100644 index 0000000000000000000000000000000000000000..49bfe84e90aae0ae9684b4ce62b769ab789303d2 GIT binary patch literal 126278 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�d*r1#3`k{XCOJ%7VgsB_V%!49%i%z+H6C)Aw z_3d%!sob_G5FI6gmnzl83N+{n?YN4-tPz3Z2v}lh_-~sy?)H6vkmN%U${BzWS~!Y^N->lu$qAqKF0^3w*ZHoDwGIb!&~Ku&tI()S+cAbzQM31b$!4E zTIza2t--|~xnN8lVc*nrX(Mz3V*@*y->^iu&^L^`Rnt3^If5n}(&yiSl9tBv0b z80=Q`KTF`EePWQo)~Cp<#}JCLaT5@Rg+fW2W5x_`Bn39*7tHWC9G)K9{baY0 z1j6(au4Z8rtTg_RnywTu;&vT>ds_|@OsX#zA)iXzZ)vr;33?m!wW?jfG|rGYK}X@L za_WvH3>^Bdf5tDawS(jAu%IuXJ^#}#FgdkhR&fK{2)J@Urt*_ZT`({!pThhFK*bfZ zA3vV^N~yQ!p^F4v8qC8bj6DZM!oT-{O^Vr9u7D;tm&*KCJho?clQ?u2B9IEe1xjs8 zo>C7L8k{berizS8P-8&O3@^do=Yo(tCaMDwB`NdUn{GV;6;JTbwOYFuU-qU-q>2Z8zTF? zx~7Ln5c=7O4Ae%yo^{_p@ni+om3t!UU!uk728^gsCO3SfNUgbW3r7L0%xiyQ1X=W@ z>)Q5wWt)X~hWxMCRD~>RHBPdR^x%krt7(q-@ua2g!s`EK3+W)Vq-V z({caVpC09_;=iR_jRLK0GhThZRd#wRsvrOB`iqDh6t;ABi#fk?zl=GBidZPu0UQ@4 z%^am(36<9{n*jv`_1&qfND~flYL<1%)qQd?jRf|Y@jt+%)SbJ*i$JOM>6V}Ye&p8) z>=MdfmYMOgr2#>#pTIaWS?R!9Sls4o;fo*~$axxyD{k-l z6TiB@i6qcKXQwF$D%kS)no|5}{GO!xXi4);sK$t4-eb6ws^(jM4>{Lm7~Tt-u*$0F z>{N3eN52HjM|wjNHVYUCj$l|Yj!^0x?X6T=Goyb+pBrE1S)z^>8i*17?*p3`+FI?$ z%%bzRtB1AqQjpC3g6CIRI(f`okr2k(B3}7fep^I=#9wkiB+%n^<`fbz7=R{aqEp(m zw7!|!hg$l9(4el71zs{X^KKVlQoEwk>5oQES=N$v$Oy$kehN~iWAo7i{ak<$*4vLY zxtBFL`Z&0|(`?H_SA8_WS2t^f5zq-3>rR4dgpA8gKO8|z{J1(_9-e1#MvUj{1F{sc zQIr=W4rBpUtafIK?r?Gl>si93x<}w%&(})BGyHd$?R|7t&d;omMgbPox2HR@UxS~IU4i^?olWlNG%sS zN4V(M4Mq+JGTfIC@{USn-$*Lla(N+X+{NSR>B;FB0VIwMFc=)x;i)8??Qpm{ABw>8E2Tz?!7Dn7l{jFil8p*u_;^a1p(}c;@Q( z5mID>UWptq(f7zxm6pcyCXoXp?A#YR2(BuFslcuJm8VLYb z3MqXT;^>deBqe|9}c{D~!;h=dc?7pCBalBRckLSSLu{biG0UUo44XB|hD~Ikb)~2h)1vhDZ@* zLsbsofOj^>@0=vqhB(K`A_bpWk4CZ{@T38EAgvj8$Sb#P9uB?fBT*Aht#PbW_oH7d zwhqaawNVm?XE`&0Cl6+aFxwI~gM$XZRz1h%@AVsB`E&NNjJH_j^6cF7#5~aGHJy(a zmug!;y9x8ivbktYCl;aw#Zy?D)wo{tJmr z4hRkZd+r|`yFBqSCIAW7Aqj^xYI588u|K70HjIYi*K6PT+p??HRCaxGhoWrn{`eul z>S>n6>3*NU2_Rvdez)6|EKu&Jo?Db)j;3zfCjlE-}@t}BLKdatphzNf5>p7b73xYYdM68!bcT*Y4l@ZlfuP{x5 z@rk4k6=3Wg8`d!UB6C9p^inV$suToYt5)I3^1WKawKp7rWqW! zC{!a4+UOKGR{JJ~+19bfUECT6m8y(_!r_FJt55>N&pt6!Sxv=4hxe!uJ3&rVIwBed z5`K|CPU-QL&v+Q+`(<*0=yKp^2h*{)0q1A zGk3Qd)d(G*Y?-4rfH~|cq2^4Mt9wF#n0TfCY|Brmqz|z|VuIM~E!sb@7^DVtiJw;2 z#wiEpfv5--zrcDuUk)tn*K}9%B-?%e zEG#F_Nmz~Qjl^Hnwm<=ig>_Q=2| zkoFqud8|YGgytxty8WT0p*A96AHO#=msjU%N57aI+n2edM(Yu(WD$;_N$&WRTN&ta z>-R4Bvn#j0cU~5u*srk=yd-$$40k~?Q&vItG-9&3Dn$c!o{6f@fXx|bJQ2g$g)EVo z02z(lb;w7wWdL(OWootyzZuVKL_&u!I%H9V?`RvsL#{F9N>7&S;4QVkVJ7c|-!lI9 z7`FNwpYtO_40XLm1OFJV(QBKL#;36<+BXiICTJnL&HV=!x zJXoz@&FW(c_m$js9HVonNECtsOd4RrGu7w$$HipZHu26ggnr^0mI79yIqpz}Hacr# zQU*iGr^oJLshUFTo5LeU_gSv=*PkTzsy!Z-BJB3zDFCXYDB~&9pbB6W)4@RPpkZj` zCu-z7ef)6Q%PuP?Kz7%2uG}Zfe;zHoMm7<#^(cjCK@Z3C;5@aaDdW-fPve4$>`O8U z_bX*I#r+F8p;Ht|q_FYMgSv0Fq| zwaPA9Wi?Tzr}SF)j4hcFJgRfmo=fAIjQwsG4iHKSRUQ=Os z1C=)!6$s`?akoXEOtyB5KNCXD{rm^-yKlx`XRC0ype3YXZf>DWfu*}dLeGqHot<)Zt zNbCOrs2ARG=C^I=o)}^y--0JPho#ZkatXw=H+497LQq9bH;*{dI%kSy)jnx#k{An5 zlFHBT{V+J3lhg+`!f2N%WmTXHN?4U{{00sJ$rl%o6Xd1)o{i0jAm1Z-gH?`@EAtH;D+qdS1M*V(k})Yf}m{|2Lbgm~fLP*-)R+>z>?CVfWX@UEnzvq*SjnrpLJiyifN%%i>48(tZkuMxq= z!M7vJxlD1(wMcA;l{1f4i<9khvZz2TQ0|&0L(QkbpM3Ze2EXvl^VJR(s^2msuheOw z$daTTpp%kD+zJmmUgAwlw?)!@LR$Z-_t{C`M!cIvw)$<=DljduWtAo9#=&Br zKntY&r5coVp*8M>msMZ6laK#Ez|4q5E_;hKoUD$u%INr|bJoK1!~3W&iLn0~XrHvJ zCdx8_8ZxnybVCE1PxDpCxp@!KuEkwJCDQ|7CYy#t(Pj#P&T4;E%NStKTs&Cnn?pU*w9yhL+UHv+zQouOhNqV~9s_ z@r;hmPOPIMnfA&{8B4<6$a{O(YYd(lnd|%k+%V_3$URa?p2bsrRb*MfkH}$i$pa{I z`EA1{kf(oOJANqYaE7pe%UnyL_>xs7|Gfs|O z$SU|B7TN~?uF_O;NY>9U{)5wGv(&Lm3XsVWH_d2Op0=bmHgu1bFf>EVm|z{P?m&~{ z?}(e}`exGiEneOG)i=!e4d>N-iJQ+&jizw}kVyAyZYrX^^R7>ytd+Dg9N~XHUX8V9 zN`cb$l}Qyem!FlDbgp!PUbf|tP-N*_o#UU|Pec&mw*IEAd#gw+$4!d-n94t6O1fIj z#lpDeUSzJRrVHCwDDK4-*ECtB5JLsN(YYkAJsX64q5uau9=9Nx^Bi9l3-e(%y3gf2@<6Wg0QQz3lt%Z>m6V*N)QO1K@7==QjN zIlIGQ;q;LL09Z%a!ly8rRMpQyBDK`VTDa)jF}sclm`~z%?C;k(C(cmX%4`4T3(1D9 z55BhI`o(8$c4hnz%k#J4thLY~cqSbzU8?J!7sM&N$k<;v@fZ)Xcu&Wv6&dM=WYz$d zTc}lbM>y~M(!MkKOLypyu9nB+wdOs<+SY4tvp{N-=FvDiWCYrrBo(kW4afL=nh>1? z1!_oaVEpsK(St1OpBiBEwRThBX~P4L=~eT&W|dYC6~Zm$yF6j_Hl_ja=-18y%|wo5P^k z{%Ui1SflcNzrQq5U!#|GIq9|M_P@(>I(nhH2jY*=XR<$)&Q(uSg30hpHESQY=QgB{ zl;W9r11PY8NP&KI&hLE={U*OaVKXuP3%s^s>jVLEhm{)8kj9MkL zb?H;;zCr>pXb-{m{8P%~@-IBr{XI=XAlOJ>=KZ_XHv+-3Zy?PDOO=8Rv%P_;VOoRY zNvF`=06^I0el1@iR(&pe%>5lxe%L+m5zE-Jeyx^j&o%0CK-I;^bo;vxJEG-|VsR8Y zcP(bHm!zIBNVWgLH<_gPIKQ91ILi55z`C--r6vQ8{ZJP`7alo4D8n~3{Tcfk0Lzm| zaz?*f~B_cTfJ|E_7o^=7xLr}o|m*E^BD~&;w(P}xNl_C zdFBy+zWNkj=`nwDqoptGQI(667Gw8%rG`5>}zdX>@`P}V>KDI9$n?R>nHU) zc$q1-@KM3+k~765$n0c-a7@8gq$Gks#MJD6Xr&^{K93|Wo*s#skqsTe&((FF58;$fprJsC~8E7y!$b( zv>t^MSxD>0sD1mC8=NC!36uH!hBRI>EasaXHuM%J6A2fr5x3=EQ7op%oSGzRB?$z+ z@pQ`Mz@7;9bQ=`ACzNrmlnd)>0Z z7a3GD@TZK3d4$lQln*N>CTyoZ?Xgc}CHksv{CS-CkDrNS(C^7VgaGbd`)nvB+qc@KEW+G=TNf3C}uZi8{krgkA14m%Qfto;IT>y4t5|XE;ro z%|T!&z9=GXIyY=5F`1goHEd7Bh%q$D!qD(M8e0KNz z*N3(Vh{}?*J6u(LsFR3uSX*E{k?YNO%ic=nJqgS&YzgdB<7z6b?n`%p*KXm5C7~Op zOWIhfi6WzuwpBJfa$_4xD`y3#1q!M zW2l&mxo|u!=xo8M8yJzy3$mog>tPcoI*MQMgKtgHoE%0*WYMkbM>2_s=5Z@E56D=0qj3FP5VtJ(4~=XPi=~YQ={o5(5127g^zT&!Ckw33krCe8nRKgdgdEe$@eSKfr{^ zK@!plf=vnXQZZM}odW5c10y7D5)T4$H%A-*1{tOrG}TZ1FucBKC*JAto~q)%{`phq zhev}DY)8~M!o+Wt#21W0-^1n>@%IV-eOcDDNMqSdcii<(-34i#x+N&2F0Id2Sum#< zFpd41r57usz4C@oDrER&7DPJQ-zEFc!dI*OFX5ea_`GdAsQ&O^L$zP-atVRhwUHFd zao3n#TrsS&ktECEboF`0gP8~TaJ4p-N2LQ$j_<2`Rdqm6yUh-Oza9>ePJY1#$0KEem_1|+O?xq18#l{+l^Fr8+fu zyBD;SS+KUQ!+MzA0xP;OA|{=VdEh6N#Gs;9^#FH&$La~a7k8-j&-8ehsNI+>AufY5 zW~r&o_*#iZ@(W^}&dIF}6N}QLwM7Kv-mKtY`RE2-^QZ>H+~vXMN;H~h4B(Ww>=F4* z6z4sFTj8Ko=_miMidi8(eL)PINRjmm%{h&aI+mNvD1*$NwOO(nm z^t=Y+QrL8~#B2a;DHV6-g%&8!jTG4Tky#NIIgAViJ=X@{FIG#UnlKJy8*PiD`v!1D#u4yFNxTa@^m}QaZpTgM(mS>Z zMiV<{nQe^dDU~}o6`JxyS#~jM{`!L*^#u1!;pfHd=A%)h8t5+)amBqUO4lPK$u#t0 z0Sedlzo|A<^@ZZ51lTl&*_Gd~6L*39EWGV*BEv8v;$4nEF-#5+nohzXf7!^~3@&cB zQ1a|6ITx9ao4s=Kf;IA7zSilfy)mf(+51SGAgJ&QEnFNWFjBK+Kp- zFYLZ#{jE0tl^cMAb-A>bluUekyyDoWPheNi5abWpO|Y0PI$?N7g2f21 z3?7n@?-3MuoKDE^ke7#QAG{)oN+6#NfY>G}`+IVEFP#dF^Ty4$P38te4@9-0k!O7g z%?IjC2yY#wk`}o9h?C)CJ&f^~;7n;#&o87N84_sT63nN%SQa|lvmLhRcW+~D4!j5sXs2p)NXTC*giKbh*kcj;eIMUOH@G@|oToEOGkFNf4@(Z|uV z`)_)TZ14sO&ivfILS+#!r_Axonr}WrTb1@f9xNEQDbwuYqSM7Z_bycR0#;RK*ES+y z8(Y}DW4(69!*pVYDb)M4Vc_N>MG-_7{(2%w1;=GxLI|guJGEeo+d>Ujnj?P_dL>;? zbA<9aAf=$?_PN;M-TST%^&$ZddT92d$r)&x$@RiubC4LC$PjF9(nG^;dLr^-S40Ib z2*w3b zPAUX#UJwDsEEN2MdstZ>h~OeV+a4!k&QB&O(3T^d`zO>JNA9ckC%W8SdwSIerKbp3Npik4>i9v`#$&7%ut zKs>lKit{uOoZTWt0&8}IZf?{TF5BT|QK7+Rhe@q>#b!uJO&@agduvR;RkM@FC-GAa z_#gk|u#CeD^wHmCkpSgN;?`qF9q#r3=w0}G{`?Wj?QX^VLP)NdP+j;x^t+SyP9jOf!Mwb)T{+QcmahvFgtW0*VyqGU zCO z2FO+nt@WwcJq9X@EEw)$Q>@d`lQfVJd!b7qj^kWpyWg^@S2Bju5{}8oIc_KBZA44f zaSpMSM=DktOwzg1+)l!atFSin5Tkd&H->?M!osp)9)Af^Emh7 z&8e`emXz91x7gBMtE*==K0ooY818|-+EB@wRoAp*y8L=HdHe0RWbi++8u>4#iwq;+ zllh_kx`&9<6Pi{#i)acrTct!m>gR}-AKAmenCJvz6sdEczGVg*3!h8#R|H?{Zs%(kJ1Se8IKkq=riGsa@ia#c)|f z$Ev7->aj`xhz`@1DE<^?UbgKg-vRsM=XjEF`%|A_jXgw{!SQHA-o+O^5>%VgzMKAU z&MBM0wJvR6`7>jTXtE!m&6z7~+O%UTj;THNa5+|b*rAQGksmIMN!SmFOr`@p<{tGl z^X~QxYT6a9l}7IxD5scyDr(+Yi$Uq3$4ZfTytC@u+(Md71n)j0(lHO@ z*giH5yQHPj6sL%4)=7V~7my*M^915arL{jrU`S_yO`ss6{!sBSEr0+?${YMvx|{)5 z3Kjh&h{pH_(ruHqFR8o@w%7Unm9nQNcQ0kPN&2MvEmO#vko}8zpdceA*rJtSGGm#h zCmbd{zfEPR6;55vW9v&)S27kB8o67KgRBfHgw?xBddg_7G)mV}+ZAF9MNBv=;~Da! z?QjQ27ogvx>=)qDDy)7r=exxtSLuZnzTloa&ZfX0OJ{}hgFXO;PzS%NP^^od1eZU! zDHfXv#A55FoMj#_C)~$>M?{ozLi*3wHi|>&TQfYL^@-16OOKvKI#y(#TokwXCO8@mb}%X-AzfY2c*-pzeG(?LbXA$47QyW^ERh(z#9#+rSD88e?qB>J@P0% zPRNl(O7Hw9lOw%LZAJIUCIyO>Oel3M`9kcCgh#cNo65^fD#<-%p7gEZ20hUE_A#`5 z-7zGjL5EGYJ5dlBengvzIa#&V5%&ke*}yiWPgh)_>rswR%xx1mR6?)L9x&RgJ3`e*(9SkCs!AxPJrky>>9oiu3VeDN2AT6l;l0=MwgNy%!GDdzOZB zoE_f6VUn1Oz*uVzO0kKs7lIQ(fmG(-APGqwCaIUB$nszT8dk*D~4@W)(+V>?MXI?kqejk2;&Nb2IIdLCB|ZUP2p&D9cYP|7RN z3%J4>*$5>sFQE(yD!9z@o3~6cjjH`>7)|&N7Nyg`61L6ShZ7*vFenE!=Sg@17p%hx z?i!i~kd6DeZzzb(O6L9N6vUyL5FMYcDxqyk)tCS}JZfRhyjBBT4K>x+De1TPk|oLhBnAU&`e`K&L! zO~Yu2%ki%!>np`(^k58RbB4f8``7~qMa<}HFdSUq^xt>yKYXcG2tzuxA4XgCzJ9W^ z6NgRtWD8_9n&qG6)1LbZ8fQlquALeKv_u4-DlI!xYTfEpE><;=!9fq?Tlmt=zD?f_ z##*(msl2&pPQ_29LCT~<^tsARRi}EULb2wCuI*5tqu@FpvADERCc+wADV3Mo)_{An zPx3k4k9|wTcu|JJj(iyd0iAc-cGZxxg=WdITNk|xENOs|lT#^g{ybvMt<&otF`E~U zLF@$PlN3Xy$+x$bf`T>B+2rTnQxNa5Ob#uo)d1rQ!v4z-FygCUGSrpvHb&;ksdnJH zI%rY>p+{mWyZ-r9khvz}FBv+jpUZR01N{;faf6*$X16%vm_7^`rUnMbKY42f6fBeD zkrdL11SbB&ZG(9KVw`<*`Wsj1P2pf(4q$IE@MqS(68#wAs=}LVa?nXpJ`5Ue2(^di z@UZG1QElckQsitKKD@*nph-;pK=Rg=ic>A8DMw@Z0GF)Kj>3V(P3HBblDrSV z?TcJ^LaC5GR!w>5)dXc7f5gpsT(;oY8@K_oHPU1pDW#hS7>LLI^EeaND<{R{ZBJvW zyW+8`y>C8+6F^R9`_cb|o4-Lv+uokUA`Zq$W)x!p;aq^_F6M)WnTlp_t<3g$>%I#X zf*x~K9K0eT)8&ui+8(>zNuQID1ss8`@;DD^SUmL)8K2q*V#erFY(}}Ye|z?bJJmr(hc{v^iK1p z_q?|cNp*He^WO7ccSmXUoG1_h7x-xNcrh`W+}9|BEgppPnj%^`P#VtJ{ZESSC-Nf9(;5C6uZU+pQpd@f zajM1tTMM??$?W+K7)jmCiEGVKK{;{J&6FoY;AFFel0^Bd+Y28RKc=5lm{0pzXI~0# z_kYUiO!0qL=jcQCq|4IH zKUsV940}waThQ7u0*PFKiGowDPp3`9(pGgUc_p6(Fazc*H5uvu#BBYx7pR>>NcTzo zs!(HXf)JJDHe)St+%bM47Cq&aClf@gQzKAsNsVijItm2eShguIJV4(V`?^qV#DD&& z$vlp8V#snz@+)rI;G^^Ud5}Kdjv$eJ>)t~P zsm!rh!}F;ISCw9p~!h%Gw_|vy*}Bzo7E`mLF77zmAmKT zUOtKGzhL_4-7rBah~%;;%wvAUv1mNx_vg#QfFQGrh{c9vb6OQu_)2HVL2UA+`!9jq z;IC5KX>!9yKmyf)J8&5Wqdm8$5dzI)j2DaVqajDP%!w>NAfi3j&K#Not4DK7w=dmC z#g<{e{qI+S81=iS0aQKjG}<5MRYd@Kmwr zM4pz+r&7PuQfLki*q0|W{KQ&s9EmnN@|yCivz6f z9jPB2M<&fv%w+G=)^r6t&IUp8kV(j?p(Sku$-O;T^haBTGh>Eyff0L=G(H* zC*?ad**60 zyggm6_3httT_i1oF*N;&NWxT0g$f^GSf}!SxTvoaPy7Ke12psY#CM-ky8{95JuZJ| zV=caLI%22gIuPBY&3^jKP6A4eS+fdUmrGGa>9=B*M{=& z7Y!8K7lDV4mq_@-i}hEo45vz`yg@5q)=8yg%<`KA}t&PxM)JDlqtJ|L=cvCVkd&JllcZ_TOEEBMs#+} zmnpcz067`_=xAXw?^7~vfZB5A_Vv=)mWu$L#eahVZoi>c4KcnG_}lZV(B?>GkYmZI zgE&W=sHR$fz8|d)iq9z!XLs$tBnt#vjcceqAj1DXo{>Hg(o z;3TI??KJu{rAi4V-9(bm_`Rn)kB>&iwj?o+67mCJi%ppHP;vPDh`6~XPfOl&)Yxn{ z3^-q;H`mO)Uue z@wvIw`Oo-v(``KhpAyrg)a?PZ8rU|&W%B*^+64r}!13`hl)ZSb-7Kb?Rrhea()!bl z2IJ;Kl9fGx`8n4MS54h1K;M7ekfY*lj_Y^0vcH3@n-|g7H=6!0#c6gLWm*$LUOFw| zZHGGtV8ZV;SdkPfJAdk7cF5hDRcZl6`1cn~sUr`Qf*<^T?<278Bzn;7K0omx4$4!Dh5T6J28rupzPWRsKR59D+ zJ8xGWxb%xLXkO=~g&0C-kW#+_u#U%@#o_PB|fuJg$cvGXTV=;3FD z%;IlntQl1Hvoof$YG+vrhF=z|&WtvAp)d=!wU}7AMk)>R%0z~g*5sH%`8<&tu(tsB zi<9KBShUUESv0;>yxUFL*|@QQ*@8!KYh5YsV1=9M2|qBUXQX#qVkr(L3jG#j5W+;i zusqc0dlZDTFTJt29D%){HNaGC7*+>llVWDKHS_-EE(@T|2Ii{n15g5(p^MqQX?mFA zv~@bS{@9ci$YG5(`Zt#RHUDV|hk&tx?15d2HHjW!!sxk{En%)`GcSC! z;h}5bJ&|ra??t1|(yySbpKBJLqf+|r8>prr{sAx_<@)nk z#;sz2ri6TDzduG^_mKVX-Z;LfeIGHmum*!Qf%#RCIkNzg9|fE_gdp{!&EDom_xoap zL1e>?r$WOQeWn+jQUU1e5hU2n_LnMp;yu9bb-$>7mhz(S2aOciSjr=YsTy#Vqm>VY z-BpNCRXsJOUz^p+Zlrsr>0)h@e0Apt5zNrZ^eL}K8hwvnT6dW;vH=E$cGj<*Bu3NQ zcNrtjD^DcIZDX)_7<48ga|gP8ufNCS*iWb5r`h3cb%FySH%?CHJ%hs>HT)A^dDj9D zf1#0i$ZHdYXy*DE%#X47c<-5dUI~FSr45sM* zqbDpvGt}kmI9RdYRxp(S1_nooV&f#_-5}ZrWLLGZ7)8myc7@WSZ2;Gw_|&g?=y%7) zhqeEHcc?y%KIOva4NMeiN(tsje99Su69eyNobViHYOuMHWGtHdLBRyY_QX5#?G{#@ z<3qn5a4$+x&Nw-6OIYZ_dmS*aC~}Jt!DRey8l0wC-J6isBzk4V19kH|U`|i%pTu=EHS(NUy2-DAa>N>` z*1nDMoQK)Ib+_jS@Y@hTJj1^T!!g^Q8%Q4YZ9Ffw=ju-jG~U(El>gD64KOpP28=MR z;sx9X)ROsg!Sn=si74{XurQiFwqY`8xR@EU9L>rgm7eqA6A8_O@&NkJa{hIIZEVBg zi!CKb%OcFpp~YPq&v@Yxc-L6is*BrB_SxDwkf|Px)coHBbudJ|DhP$8*)Z#7v%orE zE3JneuPXNTIPF7~9=jt+g`sQh+t0El=+-CviPzfedT4)e%PD63mYdll{#4*I{N=jl z>Z(!(=-iF|j}zEy;yjKkOti(vp-}t>^Yp%RXC;wUCk?0h4p3A1=V$F>8_j299l#X^ zp#{_DeAlhmEW{juKY~sgTj0&6XXg#h_Uj%j074c%7>@G)W=J}NTjcfD%Q%w`FH`9h zxn$85E?Gs)FevRyJq?acv>dM%9Kbhv+(ZDI!;`0x9b%YF>*H2sJ)H{ z0#Tm_GQz|`Uo_j%)i1Yx4J@3q&Xoyx7qQhp7Rl_p0i%DlZY7s~u-|Y>iR$kR%?;su z7)BZpm>zqEK%W>zca55ICb_-+a;3%=0#jR=d;>xf}9C8ZxQnwgiU8($k!7x-!g z?@zP_?Bz19ji_FDgRZnW$C$8Yqj?teE#z@Sy+Uzvn9Y5|6LmwHW%nB`W=)Xscst%Gr6|JU&oyAImfviZ>CUaJIaz;eE_1c|jGz)}D%)Y{3 zq_Uu^B&H-JvC1HZ;^fWFu>RNbP>sm|T}JfkTPupP#f|b^K1rFW-dzHx68$l4Jgq^T zFyV8$M;iig=Sp4o!d$K}`J4fYrg;$%$-Mz$mjTM$w$AL(@j2Vg6JBo#Zg=;N^Q)~= zX}-NSqZpjMD=IH`o&(AM?So*t^~|AB`sc2M*za(#ke1Ml4rtm{_TELNl{PLIC9xeM zVjtwytI;rqp;;p!i0ILGRtKF+e;dox96@AL@OIlwWdxjZNq@zX0uWvF!$edkk<{Lj zQYj&31oa+6aXG5yiuAIBIkAnT;F|3oDu=`>-@wvCyG_NNQgW;ps#Li9qn9{%ZbDS{ zw0Zq8_M~e3Gi#+Y^mbjA2mUQ$DOSDm?9AUgfyU&AYq{wAl&?mhqTyFMnHsHzds$Oeaxfz=(P|nZ85XC^<^vI)8Ag5nFI2HX7VY% z*#IzNOA=3Zq}djRvpAMt7oGp{pUjBIfA9FBrlYQu{7&g3Co5}3K?`E!uy}=>wQSH1 zx>!pd4g4FEQvYz(vQS;*xVL|QO9D^Ta z0{<4?&{NM({MAvkz)Kb=@0cFLfiiC5hyy^E(&DDS1j^gpQtZ4G5=gqyN*0xj?A4`w`lGbk-;+T@t!b ziH|lY4fWfPH~HgbTl}1kuaQs2!hNi_%|ug8DpXju@XS>|%3`33v=elzu{%n!bOAd5 zcA2DLNsC7{@=f^v0>>#SzEeJmuv1lg($GirmNM39x|>!PkXS z$x>*pp#cIYPAM>Ub9M4loqs_uX4(YQT3t^=NPowMDQk3jFB+%f!FY?u-GwZzCW2Hd zEtMlR^NMh5AWjYi$qt+h^c~^6y_B-OU^6&#c57zEo<~ko(NFE!aszJTb}jB+5+U<@ z@I#UP%^t7xiljhx77ab3fHTfXG0X7 za|4<;gV%F;)-Uov7v9Ye>M4l&1ueX49_S0)4!v*~n2VXJ*?zP$Lz5~jYL*lc?97{b zq(xVuJg6V#^1X(i9kn}Uom76cupW;{pSpO=|?O3<_j zgOG@`_O%-mYx>*M^B`I;`C=)=GUJqNX2M#M;(+Uy4_?~{oc+c|4ph@QRyKIzT!fXA zhY!2-XXs?kuG?t2gGW{Ci2_W^m|dp(_Dz7&w1(9MniR2PbO2wcBq_TBZH9H^g^~pgq5&Jszy4o{xo37kM*HGmKVE9TDH{mkt?={h+s0*DqCw)!OBzY*C-8MSu4LL*f27gj# zj9_Br()tQqNAS(poCV;eEzf%c<1;z~Ux z&%i=M7TUgx@kY@HCMg<((DVj>q|w|#)<=;C0<^)xM^ao4OL@rhhKlJjRqo1jRlhp1 z`wheSrN47~)CZ;xao9J_GanW7Rj*Z{K z%iNeA%E+)$BG0UM122D%onLZ)`@q;_`w{z)V=6K29HgL->NwE!$E*&u>zQO453b$z2V2Fa~z21fOCETdR z;5n1i1{cB|`yEM;R1*vFOBaU$Q>FtaisK|ggFT#QZ28Rd*Kvw=)V9LXFvlC2`lqd6 zt^8kGl(Z42eKK2o%<@{CVsm#IJo2RsLO$ory`qAfzVXlN(_9wslK(JWjs>_Ear381v=*m{Lar~_B9~GNq;dyCaz-u7gW;s+8!!vd zc3bz`R+C*>p8Z|$ypBH{Bw!UCgYv&Ph3sMg#0VR>p1QNbI1-ogP7^I@s1fRpS6te> zA%l1kQ$4V?2Im*Wy|U&k>cYwrcd`3#daC&d=ev_K@~!Qb67t`oN%=3jb(irjz+>NV zHYLQ(kDmkw2HfFg%h>I}8!w{@&85O1g;Uj)Ahs|_r3G#4r7%bsOLaKl%y8D>0gpUC zL$unoLXeAn(l*SYbwoquW8ircrlO{ltlYMU4ZAFQ>T`E;_Pz3gh-r_HuJCOv@X7jY z>UoN!(m%p4-324oQ@Ydhr~7H{xF%o2hkG&2=j`i<`CZPiJ<+d`8nJnk=8O6?=O#He zU1Eu*`L=P2M(Mhwt+S00bXn8m+Po(C2&24gEQvESWY=pz(;>rW<#kJzq!JXc^&RhP z^oo}U`nJf-MnJn04mM&ejZIoY$Hu0AQN`IWzm#XUQv`ANSlnSQd%v(W{c%5nWw?@+ zUS2}wvs@kGR^GN5EPiv>pH0js$4vav!>iqrNCU15DtTDWvB)lG8ibL~Sij;Za($Ry z0XlhimgIt)g(-<`2j_tAZHk*(+9^JX#4Nt~LYos;O!PjbJH0v57j!YqdAi?rYAWze z_PQS_IXb~sn|W^AAh5gQ-Zs5bSv296eAk)4G+Dblj@8)yq_&8-bvX&~n+^{5!?kj! z-v{kb2d?LIO```KT}ov#%&Q@*kCOv)QCB5A6{#%fD%Q?F&Rndxy&Tz)Ik(+fA*r}iKlj2Ody|4LaJ88RDJGEz zP#eoL$mUQmc0UJ4O`&gu@21@PadE8QYBx1H^^SR&T3oGf?2WEr3lP_9;8IX-t!sk0 z4#LLEt1Qh?Y;KitJs_ac#`QjTV_vYE62HK3O@OO$>UOogLuN5z58qrjYANC(7~!?) zpX)euP8?((D>Zmc67l>#58D7DwPYXdYdUM=(jPI`QijSVaTR@MYMONibDP(h5HkZW z#tjO(){UHEA!p&93;SQQG!%9nUyqln<9gn&s-9^FL5gzZ>fOH&&{>nrcPuCHE>>Pv-Aix5S;t&0*ySwGQE3bz_sd(x924NxY0wC81V~!P$xd2 zUDT8s$u4cChPF6fDMditA*ZpTJVx&Mti`x zTH%27>I?C=3QvDqf5_A@ElbFLw!+D%tngqs7{LSRGI6kZ>#7(*%a_{dZk+3HQA*DA zV%f}Y<6VNi!bW@$#;AIqmnWs4k*T}hRh-^0s^;P0V8^pM<>}G_R@)w@1w^!P%W(lR z3#XboyB#$}CKgiW3m$4d=N|{J&20pJS_1}_SQw^p1%SW|_sOLp#*RwX0)BH);X3N` z*0(bW52j1=qx>11NY7{hoY;DY5_u2hfoH39?MS?(N81kW!|>?iIz3oD-a%`(Y&77} z;F9STDJelf7dL%}my`Xyw2Q}|>&7YJ-?n!46US0Y92l40TBB~^XUw~*Y^17b#zIzo zO_bx=mm9yTh=Yo{YSRb&N9L#O(gpeSi`0kW2hyBsCkfiPJ2e;LM{~SU1WmaN-G#cY zW?==?@bT!QzH4vM(yRHn;{lx_MoXkv8LaL+1^go8jd5Ty#{~r1XI&M>@5A%4m48n6 zb?72qoIO2P+DNPGF6x#&BT*d)wWQ| z=R^54fV1d29vF83&09p2Gh`up4k@^CC6Lht5p5Ad^Hs7H{K_C=l!#SwtJ*{)zmU`5 zF<7dN5lZ5*7kfWI8eXGo5iNY9qeD+-xL~+D*coNWW1p`@Pdh}ecM4Et;D$Y z9Mwt9_;sA2Eieq&Rn>}y%Pj4C=Zl0@><4%}w@ZySZaI+UK)8QMXn682_hcEr6+NKV zRUwaA`LjPYO$xUzzrvn+R-x*yHswHBd1j^yqvDr3zkDg>DHSyx@8@?^3N$B2c2qb-FQH0cAhIjBaY>H>D^G6(AybNG@<1i86GIyepoWUrRdKx!G+G_3E z^U~?>tG+8u1F-FtYK7`sTh|~ABJiSFHhW+1;?ClQ=?DA^%@)syTus8xw#b$}g7Z7- zo(7MKi2PIR1KD|vXx?hnp*5+2n3*e)%4ccl0F0_4wA1R;zz96vP%aFT(O`NutcLCL z0w3lH6%`%tBP!}d>NQoNFIS={v!J&&d-Ivi z3rjp@&fDm>q1Kxpwnaty!oM*4yFDzN2_VYq#&9W>neOdB$-P;f%!jUZ#vMxD%ey?@ z24UJ=*Jc-!7BL%eg#NhQZ-+-%>i&zvWV-C(8O*T?|di5j48+AvI9Jv+_E% zv&j1%;1ts#svj7-MmzDu{DaLIO6}yCHb!DZ(uWUj$x?o=QC_DXn7ro`$CC32FD*cdW6xsDn@aRsgLn0d>-q!S!Z(*Q zY>g6c{HDSK+&y{}eV|ADu`tL(k2g1Xk5jN3m7NsselZNvMhYxSS2obKy!JwQis6A* zJVBL;>IY!74iT~wADmXDAfB4pw9+fnlAK_ofC$d-aghCFC*k`AKg^?jrW@%$L|r(^ zBf)T~e3aSA$?5eogERhfZ~GMIOj^I!W@q%#>fObs2yE}LC7BxSj==J7J2=P{SDn7` zFYa`R#`5%mKbg=0YQ1w$Q{Q9e9R?hSo_6D;M5u9u0fr_e@az41G$YoJ;!|sQsHqMx zNoRVjf~od#?pewVnIFAhZ4hf4jtK%nV=yr-O}ktTY!xyXKfOrEZ1FHcC78VF zu7w{pPsn>2L_H*5Z{g7tP;1n_xAobdT{^4U$P9MOeJWU4F({9yY-Y7TA*!|!of$(Y zzB(H5za8Ei{m^UFU)QT8vDUuI&NC{^pV#zr$w1fnWDDvFP?5pZKaxl70FTd-N5QqbOZd=fsPJeA7Ky71z4 zR1e0BtZN+?6mgq`>a|ZIBxv&4g6ciEzLu5S(`v*%EdiI_-n*yhr#m!#FTDd`UhZ(F zb)EpH*e&)qu>A0-cQ2@L-4CravkKEW^O)%(sKOxkmh&>CnGyCt2ZCtrQ;lL-114-v28d2~Sn*-de|+eE5xy43QBeSYJ+J;khE zvy6SgRx3}xY>REYp=NgxBc8aja*keJXzewZcc%g4OJR}nq$-8ls(Y%nCDs;~qk(dQ zf@rWSY6vTaNrag{|l#}-JcQ?Z-vP|NE*Y+8E@lD1`ds_>(r*p+V}Ek-?heC zbIm%R7W!^FKqw1rL2+z`{$$nAB3ZDOdtT=5D}T)q3K$T~3d;*Vi| zJ6shyKp62aCoRfhLKaND`@tUf9=YDK9wR;d9uz8Re&ob*T8nzc(qsB_vZGgQwnk1( zHf$?@7*8%>b$-7oBo*`K8B5b;mxPj|KU*c`z@s<+a&BUJ_e+jf(JeS4W^0Pd=8tt-Wk?7g1*3=t8<*SW=?vBDZ6?U2#6ZYnn+zGjon>wPeNdJIlycaWeqbdD_91C9G*xM-7CB%QtaSIiM)D6=EB)DE_?Cn5i$mp1C*Jero)c}QsBInCu zPIpmv>N3@TM$dOTN-~+R@mCp`hT&R3?Tx+7B&o$kwIG%jhvqS>0JUeqt1RHWikDOd za&4nRweHg@0Uuv1%IJD9b*NkWtLP>ZCiledQXPV1FJI?)_D}Ut6cu(LPS@?fD$XVP zH;LS@`IkJBCcSSj4rg~>s?EWVWysXs;sdS;8{}`k6sE;k*gQpE_*SQEWE9b#3WM9p z%<|a>t)_XgyHzD-_<1nNAYUwo?8?fFNpk$0;9OFD6ksRk`der)6c9j@#Mi>2e>aknPTI|qR=fSJ>srLbGU89( zR0y%G)Xtay4ssxkD0@+99x{_W^ppR6(>)MT>wgq+g4C(fi0LZtSbX{Flg@gB`{}rc zFSK5L_<`1YEO&W0>bP?ciX&w-wXZLb&lCi6n=uuV^Be0eo2{(^lg|gh?UeBsoj@PI z1+zPGb6JllnUFHm1b0afUt2?EDM@$pIOj*u$%@lXZt@pW>(9MpBGa)K|>H$I%IiLg{8W=bQ z6^&z~?m06oYT?o8AhrQ?yauiRjt~%S- zv#v27_pk8&$DAHpQNlz8@$L?We;5#=ige)}9+kQ+@NA=P|3%~f_RlcLi$mv!N3&Iw|D*NruO;eF zko?6LbO3wG0^RD!S<1xo=CXwT?VWyNPzn&(8x@pqc^?v^NKW-vBxeV*AGQPdIv+@& z4;nu6-&Fexf&ZyWu@tc*-A=2+2a;zGW?lVLlG{5#Z$GcHqmQ(+xpCTEU*Ei&<0`rx z+1e*eP6Ugb7n-_icI;J2+-bcVhHq*{miC)t9hWk;XT`l82FF)gm0*ZyamT?DY_hoH z`jQ-?gc#>c+3zGwLJM`K!>fY%Pcau=fpR3Ujyflep+sZ2#-BhH4(X^CGClQ2i0hvw z2#2g4zCZ(vb`s%rGQY_gq4uX(C@beGnMwtIf9fb*${G0hU9*3V`$vQjaI0daTeN)i z9HLfpm>D3H6VsOS`=s>?8ol%B4VZFuM-3C@YDj5Y)nB<)yG@6*4UC;k8cw1&V#M z@*F|~oX32o9AsGSu7pEq?>X@OzQKPnCsEo0Cyo;(-S<^8rN0gUxu;^pa?0Rt@8;?;hgIsAIu?pu$toTWKc{ubeHE&Ppz1JC(?ObdT1 z>pbWMj5~)NCW1wa7x|r1Sa~k~+&}#T^wc4!JPeqtGsE)0zcTjT`2$z{bc*sMGp`c| zNbVFM2KDjJUVSHu!e^b+Zx1L{^zZc@l_6I!J z5~Dc`$Y4=DSd0E?Qvd!>W%g4CQ?~tk%7092e_Q!afQtgXzk&V7aP^zl{_V^Ep0EDP zxBvgq*PV6RDn`e|%kMQaGYk`r`F*S?S@g)aLw^otbpEt-DTz*$qPH^Z=f(bi*OLE_ zG@Lmca#`+>3j7qqe^~_nb(;Ruh~bb7@T084qY*lP;N+i9p|pf9AGD?Z%3TFg0tu7= z%Y9t-=f`_~y1}nY4}p}#wZk+(t!vAFYSHLm(gl>QMJX+`!0XF5e?9i^-@d@fyy~F+ z^%ty@l~d@*!|Sx#mc{aC761+;%*t`@QB)qT`4}$z`=b3;zx_No#XA507`7Lz2H!X( zj9*_x@7ku+AD#VkG4V&nS3sp=Ksfwo)l3zpOu=#3waq_`C`xAAtN2@#`Q!33U!i2w zFC#Pl_!Yn1g9bQx^w(JVcg{df;iV&0!+#pO%8#-rP3u2Nf|ND)EDED2p9#G1o78`J zp3DGyo}ZZQ51EqgG$q^azM=bvPX1~5gO>gu7Ve+@nlNe_;9;}npC0`9L!&4UzXAU{ zJN??Symu&-2rq-epJrJ~=~Tt^PpSWqga;O*ImQfNw9DrI({?{_zMl!~k4*M&=ldPp z{_ma7)#mPGRl-K!T3%HkUP-@tNnPI^$N26>Bz}A^yfp9f7K-Opf}lyWw+#r2x7)=F zHegqjdA09$Jb%3lx!-Y2zw-X}4);o>9e!0p*kG}jb=E`n*hOYPn+1Q9x0p7|-o*FM zSp$Q``57P`GUGS}ExqqBYK9WaM)kc<=|cd8@^Zsx-jmcIYKJGv$tOP}8G8F6c51&w zxv3)st!3h=&uP`D!Zvunk+FS?pA>DngIFB;co_CJN;j6qq~5GMO1#vuTHPjGl@zlpy#sCeKZ`eIG2=vz*<@IE^4YNL726)8In;ye7LCgz-j73o{qT>RpgNvkKDnQBdv zRV9of;VVtvo5kwsAsbG~ir{RyLJJQ$L-U%cHn6V78@`jO+0oelwr0m6~)S822Hi`dRE*NmY+kiBIX)trXroDlE#y zP8Yo00UCi$pY_uYhX~Vhxtj6zAnjZO^!o5?ee*E3H)zJe-d{GH?mRx2*Mr=OTj;3w zuP+N4Bz##Kv=V^r*U97QuqhH!i5wOlmn>2cF_L9({M9zEK6f48Azx8*w8Qy)d%>OL zp(_Yqk?zYbCr#Lc`nmv6cztu<#(Y^Q$+PlYsHJADPS9*R(KDQ7u%ctHh}FVElGD&d z6nPe*Cy5M>(BBoOPtiH6WFg$R%!RC39V-_GlX)=cuGA_@v#Z8#`V=KgH089~K9S

N>Ok*M2rj~{-f){cGs}5pt;W{IF7%9?la=vhh~+4491y$MS)?y zdXKVJni|GTmumScg0}?%y!)>OH0}dzB0px)$}WGN8p)m)_A;G!*FQg+b#E<%Wp39@ zcpK&ihB8TKCCcwi=;dS&Ucwab?+H7m5u)UJ%@l}lssq)PZj5qCXU(TNGc3F*%LQjH z=MHB2H#L^qyq2QuymWQ&tTThGc($WFUsa|fTxkD_kL6zI95O35jj z!!_lF4%;vDQ}T4&aI2iX1yZuNW2=Z%UJPr#ZO>J#MvS$pmMYWj|30sTV# z$l4abb}|@(zD3b-&_O2t4;?Rk^{-3k~iCv*0S3V59zwpZj9i^(H)MI2Tsz=h)=3F&M z2Ae*(F8Fd^V%ZDv=W;KirUGY2Z*g!{)lQ3)T)g5`)IR6acYdS@AA2vCmQXKp)}9kk z%af1l-!#IVC1M8VXT+V8X@Hn*rrMg( zrO-xgkG0bwajsUOyHzX~EbH9z05Wcmssq>2%~)Uh61p_a;mvAYl;+U7?X0uwlc;*K ze8`*f%w316QQ8esLGs325Ue|{`b-Z7%GswkfS!mb#S^iuyYVfq)T^Kv@>O5A5i0kX z6wXroV(%igU2`m@n5sKMspFz+KP6zZoFQG!wf8E82dm}DtJ__}=aD@hnLi0)5Lgm(Dmqe{ z!gS*JX zT72#StD5@$yzs=%a;^=8AY_I09-7vY&AcP>z?b62F0B2j9&fMYst;-d4cbLblCfVy zj=Hf*Gv%XpiNP0kZPJ!n66Dt1u4zaLwq`je#a^^qdZ9GCcut~|2I%^xG|Rb;g2&NW zg~wUW&pM`-d;Nw1@cG%Pif*3_bF+|kM#0Nv8yPD*E%OOSZLp-k=KZaCkaK{cCM{{> z96*SP-1eN+Ro@6XZyZ8g7xd9!UhG!1>X4t#3G%!*k{~R?w#1XmYGBo(mGI=dK;Ex-p9vR(oj|#$G0cI zmPSl$o`~tUo#(k87bhYD6xkU_s~nb(syDam7^l#F?3WxRlWxl1s_{)rWRCokfS6pv zxA*8$mIjlvoY$|3C+oLHKnBGwE6mBvv(6XqDIUaLc6q0!{_EL+r2_jSk8JPr^x-OX z?0cljm{i~+`u6ThZ#O@k3z(eQ5x4IR-nMPCIfXjXI3lpA$xkVq(wQ?+s-K@Ehu(&@ z8Z1({${Ft`?D2%#}Zvzg#)A1xFvcyv%a49?HJuO9^^fD1jJ#K;S?Y761RR!*`4 z#=h``7B#L_V-r3rRNO3Xs>8^PA zD*ltewRz;WW=25Z?Lw*tNi1l}&nPiGG9jWNPBzjm-fKEu;Bxhjh5}dLyKAl_cE(=#yz_X0P>oph`n5S9!NpFnhumA;OBt^${E#CcE@^X{v)4IK;9zN?^s|T zzCOk}j>C%xf_lGt#!$FbFo+)=_Nxl;eUpgtu+JM?|2k@_4Kr3 zixrSA;rhzQMQJ8IQn-C(mhdt)5a>hZnzOTLB+p%(A$rP*(Wl75_t51=UgPYx;Ct}< z!EcJITlC5;rJs*n-F`vw-$;0ZI~_b(M-=AJ9J|{uy47}6(c9$vNFOn2kbl%0nUsGb z9OCNd$^rl`h4!dnyB~kA)`}T@xAM>nrSK$aRX1+uV9`7iGnG+gED9yA>)sYpH)G04 zF#kf0r=W$`$szvK+l{f{m4~b7Fb<_F9JgRz=k zhlF(N^KU%0K-teIqq&$@B77me3b~a$^F656PXzSVS9JR8eaN9O168fp@a1p$v zQEQR79oq98W};Q=!ud{M&;vREc~E^EhRij7NObwnFC#Lqd+-_D*EfoH93EEX?_ z;4y>Hu z+^#&e&^=5l-V8GJEspQ_I)E_;RH?RthYtxFTIv=V&%S2|Y)CkfJ?!hs*EQtEO8L-> zg;e^AhV7e3aPyszefQ)Ydji_MzVw1`UHR+4v0YI%_wQd>#n4aGa^i${ck36c z)M8@n`h=tsF#}jlAzSl;Gpqn3@>QGN4B3z!heXfZ7=b))-ByFyqDmqsHgH+C+`N%* zOe;=K1r{*(1v(pev2DZtGIFwDK0G$Ri&-Jj2|f?=YZkJo)2Ea-^>4`3-f0Ni1P>di zXf|Yf;5HEo1Of*3edd$~&95OtVZ#dCtHiuLkFmU{$#EUQo5O&??}KLCD+Z>ia zL<#}OYdI~!QsZyuF{9;d?+8-6r6Y^u+a^+7s9EB~jm@3U9|td{s{x^siou+d0ZA@P z^^Ha6!2PkUL&xxZ&&q}46~kwoo3N#@kRH%C5H2zAc*s6DV0FSecd4_gJvOzcZrVsQ zJz9F+ej^359kX}De@H>XDey-A$@QG&m^(xAh!HTz@12~B#WZAyAQl^R&cO;vuvv7^tfs;**QYNwYzm`g+9*Sh16EURkZaTvI z{_c=-_Wd7zv>HK=F z-#|A^?_5LyVta{rcbqBOAT)I#wSHy?VxrB(RyRH$E~Drlip+(~2iHl4qP)N_yvKXU zMO}&I`Ta@TOFQb#2q~#tV<}xry>f;Ax|a1-;=(|sQd917CHbXly(o&0^LDhc+&e-j zN_D#E?GW@izG2BUF^wo9)-|_Shy*B{SQd3WjH?e$OB@Onc`6~v-FIkBJWDg>6*mS=u{u`o<*I`YI|sSV4oBNP9Nui=JaGm(5sKpCAuq`- z*V-De2?Q&YN;T4@tkUK?0FRPB91&rZ=3`YP!5HQeiOBtqbabfjjE0V)yB`sp7V8!P zX$t<4BO8Os^@)M_+~Vr~+N-ND!J9T3A`s0 znrDHk_9<_E`*I+fPkY%t@ce42ROlNMYZ7GiVidG}Ma_=!7!SP8qok-|&a>7+B!?*o zBez2SU})3uiF+McRNt(HOO$&DeG7?m!LK9r#`we;A6tSuXpm~-S?~S(93p~M7=qGA zps@XH$kGSQc;1n|#k$I3hNKj;7u@r6E2r6c&nkF93A4fLZ9m!4ziVxs@jk{VA(qWyvelgvvz{f(lT&z&&z4P ze+}eG$Jwlyc-AELQwL?k#3|Jy4X`s?x;{xl^tg3={84EVH`(p^7+zyo6WS->DAR z_?T8Rb#oAqZi1Ec98ADNA|3l>1|FHT`i5Ri`vNUzvuVma2lB{?CX<)AOjMKnW@XGa zA)+AZX}NxGKKalo_MoT6w!(J9faQ8UP|hf_Q!m#cknIx!tUaB6bKhZXxVauI?;N{{ zl^Y`xGl||958urbUhA|$si{M+XK&`hxwlq*0)i|xuZ(2WwJKpYXYqO@h}?u3rg=lyoS#G@L}Tnb<7>2gd^GdYawQja{S#v!D2|}ns$2%Lr=D9TK+$vUEKlgE z`4$PiU9wZ;w{w8&eKhGUtgf@Pbj!ohID}=;OL`p;&o}1>B8+dXyvKqn4=c*DGCs5n zz=t`vPqul#Kp;+}oZ#|IvkY0;GPJLfHW;qxAE@Ut7YIHDC{rj8J_3Z|MmP@x`n@q@ z*ycmgS&KLV+;%6X{v3x~cfq|UtwX?98l>Pa>DqSn##d~r>>@Ws5Ajg2+j2xQ!dx-V zZ*XS~8#Q+;r;j-IcqFdauk(8=->%29txb7D@QpRh*M4;A_jG$Wuw5`fuATL(#31%r z^*KVo1dwk5htt(sc-95;Iig7pENToxwd}94pl1Y7;j>9J_+wsCRcTfLvc0 zfWxqGMPM7ME6+`q=oH;=m@~{)`PhId3p$Z>u^;5w1Q|=hw%ERId?iF$QVNoVVihe@ zxRXOjk$dTVC{Z28%_F0!LBKbnp#Cb&3&>2L4G*s`9c1+rwibB|DN|$<#eYP$M=pNoW_DHhE|^Cr}oW}-Bylg5G1Cv3KcKxHPoqsar6u$E6VfzxrfWe z#)QP3Nz&b2nJyXeUDr^nA6_Zu;A#x4Bnx)ErxejnsY z3p^M*6*o+)M{^%UL}_{HiD$MITOI}CD&03ltGjrlu00if2+P7gF_x2S?n-6HXm9|~ zjz!~>M&d+{5~OXo6-_ zaj8d0=otyNLvY`6HG0C1jvXUQk0CQmvcn-9*GKLKkBonyc?J?apX&n@bhh!QG?9%y zet=|msef%GZXMo zj*ep%fn9wX^-}#1I8&2nTXH#=JFyTu#C7U}YlbRK)tO zw%3~v1F>KN(r)H-TA74Hwr7|&E9YmMW9WB@W;5vTHnTtQihT zUbpca{E=+A9R>@$-z6p*e(@u9fx(;K9jcIrED|{6O(?wvmk*mituOuyJgX?phLp>^ zxk(C#$a?urQJ&mJnGDY=vI>pY<;f*dYCQE6v^gB-`lM52%oyU6#r5D82Vg8qCpGtp zbhQ?A)z%jpS5_y#5sQ?&*R5gIez8ya2@Id#5PQZO2H(`OT56CC*Nl4Ginw zYpTPn-j>55C8yn8K3K7;2@1!A5>fBFZgrJr%%^(3Pc5_=O3GAV)rExOp2$0LUtR-P zF+m&HMkVJ8UX$OV`b5}mR`2H?q1BNCGfh_CV=QzCmt#1ybJ>8Bs*?L@E0nbB>wU%I z(5-9FKW|I7JLhE!b3I8qCgfzV%GkQr(zjHV9#FHCqZZnSa8M*o_>x6S$yivzrYPH| zafT~&X$v_HiV-I91G)V8uO;x!Pgw^2Bxzvr=1rp-LlD;X#sU1LzY!WT?FN+grK1;% z1xgeoPQw!Dry^_H2QG?BO=RU@=NX2AiVgG3p{8KtxF~%;RFQr$fv*tTah&DW*vpqt zus8dM!5@JEv^c<7dc6)AV(~0WUeKtBR~%Ricg)OFQTM95i(p)Pn>yME?8h?v zz{R;@P0UnkZ#hi(6=sf#)OaSBIi-i$V zCD6B$76?VZL!B*+o75vnN|~*B#1dHr9rk92IsG?-KkPBOfI?K8(kFR+UwjI1eX7o* zwEG^MnJ7DGX(v$WE5SNB{;;~;je=}KmFs&48}GHrTopzG=Rj3&>k4Un_iR>gNW>Fv zPLAcFuI(6);+}X^Q*_H`;-Xhvq0_Q^{oG0JenLj^vh+a#l<&iZ;ZhhYjT2OY48&I9 z$5SD5#ci&ttt^Z&Q<&N>7(2B49@pTWHnLn$#UN&6(T&hFrU_KElh4+*|k*7*Wj*AU$f8f zuW*G9*sqKvh`FzZzxTFaO~YuBImQYTlrm93jCXU;6nHo zF|7$$2ov$bV`*iXIDXl&r{jI8MR~}jan#P-{)RFSCNPZNS_ZiP9Z4?m$`4hvrZkOZ z%Xzf73US{r23L_)sm(kQy5(utKn5m;CyT^)-6|>$ZPD(XU7hAuBKPa!C%CsI1w!fQN zG1k)ngAR4juel_AsvhD%r{*6?ACw8jzGo=wODcVh(;nl+s!bK#Efc>-&dDVpxNPJ}P;a1#J+BzWBYXuF~oOk3d=@B|z&i6bq8p9Q8e$@IVF2Q0wk9 zXC)i^jkZcXW`$S6#qD&BY1po!|2|vea(F#BGu=b@Tjr$gkbamU*R6;yT}48q{QeB0 z)pJw&T~}^!jT?dzSJUiAD{7A9g@5!LfRV(I7(|i*M{z#(%&GzKt z6=*3iO7Un4xnG!teWc=U_k^oBF(srJ z(&(eKazDKA-arOoiY~?4ue~itiiJjk@#vh2J?6rrn{qKJIh8v6hI$7jP<-2RUuxEaKMr0??D4y}{A%4i+b|Rzp2F?8 zNgN;t8FhPCX4!j@ChyfzTJ|dhcCzIiRB851v9>)t%lIjd6M8atQSb2Vc{lgEcjP}Qd){L)K7k@P!7 zH}DmDUE3bqUXaBW>j&!=g?CzT);75UOlVtJIdlW6e@L7Q5;s$SduQ+-*ZPwxXkz@JEFj$T` z-@Y}ogo5J1n*e|Htb^D=4Oe(>KEW*P6CbZ%yDv`zI-d)5Wn)lB zVugU2rm#zypbGqk8)w(d-ri-(O59!TE@D(+YI5{YeRA}$99LA{BqGF`1#EN#|5n=Vqi1$Pp-Lid$XfYz`sr#yM2P-)N@kNPEw6kNDB zfs~ik8D^wZQ7&o6UdY0a2U=C$_gzhMtwTLKB5Ro)0oiYKvXR*yoee+p3BzVr$g>)A zD=^p06pm}pnC&8Eyw6s#*)6S3o%@(01%b*Cx<)ndt0qbLnXY<8MY(?RTqsHd7_4j7 zFujAxpOz_MUG)=2c1iD&O(Gz3)I~lw(v0|JU2#eqSe;+t zD1&SAPLRq(&GIjoODL;Ob{8qjeVhuNLh;n*lNy3M(xtv=t~`X$6KN2Rlp^dzA|i_y zAM0EUW}B!v*2W11^X& zYatKztXJsWqw~w!_nlBNAmbXa5?6ea8=n@&K~K0ojO>+GF-T7=v$$M6=a@p}mN4+u z$c51&s$wtMT6%<`j7i~JaF!L)oBER_9;NE;3+g=>|31T zl!6r*pOiOJ7PB8tyu%_}0>$&Kr~`Kb4jiYN;y7&lr*qmFc}UQi;Q1$0$u2Pixt7>Q zSkM04w$0|rye6bH5Tx(F{ORIhVvyrmly4fnxuvg~CSDObEFWx0?tbt>+~c*0+)m+q z=PYG!5z+Hc#`oO0jSEflU5AQas=%$ZzvX1oYn7Rh__f#u+&QX7u0x5h)`y6$_S~0S zBIRDx=W5O$YVCdJ8LHvKLGr%~)~={$wH@BfAjjTP2uC!hsmyA&az4zf?<Mh^d>d5fQSf+5Gm5DKjCaenvEhmwXp1Q`FA1gGKLz>9*7Sca%v80D?qEokpoU={BdS!cqKh~d5?e-9t4V_P~)V$%? zrvStX@My4=6P+LJcDb|8>+;wlwSbE@WvE4erHx&u5Hz3!xu^8)gx+bbg?s-vwUKC6 z*bCV5voueHJKyFc{=jN4vPg_v6hy zR{cN^rU)zrFWg9nT}tv~kwNK!E2S#w~xH8KF&_!@;Y|3&OXJ>WR*@(G(ON^a==7SLx1d4G90AVrNw z5SEU=j&U!Z48a!kp@-McmVPWhT)MV0;Wln5YT6p~*`-EzRoRlDED7c+Bv>%pm<@## z26et&PKSQKPQuvkXiAPlyPvDzYv%s2ysRDSvU-R|R_KnDVBv=v5|f3H2PlL^hwDME zP3}Q{1M(I%Pnys0>i9|W4JX9Mbz_cn20`}|QR;mMAFz4pyXp+z`QC_MgNTilmgt}n zHTwv<(<=955zN+o6N4dh~Za}naO$Axm?f{$Mblv)spaxms2Et3GMW9-gGSDopiZiy7s+4q&U{0y~U zmvZ;ASnS!hH zH`r?upPvqxlcf~5u5D7{ZqS{uvB4gC&U~tyR{gxDRb_RHZYN_BKyzDyTGF;6NBtM! z5x7m)lI7P&hZ$ZJkE{?45cb~K-M)j1GX{2t<1MsIr)^RK0Ke)YTt9EsPe}JiHHQ>^ zJ_D0T;5e4%Q^7Gi!`0k*vz9^`77sT|HZ!)y(l+6gc@~T}{)!2)2K2?zL_eP|Dt|jy zzWAyfye!Y6HK4!jY&1O>9A+tDSXZK_D52MTJG8ybf%^V=(1c5>V=zz7;U%u1dD&^~zz?mlMjL zH)Rr1RT8Ckz_SiO!&p@Os=8-B&1yrW7ZfU4ESC@pH=X5<`lZZv#t

ws{C_nNUGYN+RK7heqr_2iC(rP8&4w--l4bG~MK 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 y2P`?w#C_-clGZly0M