Skip to main content

This version of GitHub Enterprise Server was discontinued on 2024-07-09. No patch releases will be made, even for critical security issues. For better performance, improved security, and new features, upgrade to the latest version of GitHub Enterprise Server. For help with the upgrade, contact GitHub Enterprise support.

Interfaces serve as parent objects from which other objects can inherit.

About interfaces

Interfaces serve as parent objects from which other objects can inherit.

For example, Lockable is an interface because both Issue and PullRequest objects can be locked. An interface has its own list of named fields that are shared by implementing objects.

For more information, see "Introduction to GraphQL."

Actor

Represents an object which can take actions on GitHub. Typically a User or Bot.

Actor is implemented by

Fields for Actor

NameDescription

avatarUrl (URI!)

A URL pointing to the actor's public avatar.

Arguments for avatarUrl

  • size (Int)

    The size of the resulting square image.

login (String!)

The username of the actor.

resourcePath (URI!)

The HTTP path for this actor.

url (URI!)

The HTTP URL for this actor.

AnnouncementBanner

Represents an announcement banner.

AnnouncementBanner is implemented by

Fields for AnnouncementBanner

NameDescription

announcement (String)

The text of the announcement.

announcementExpiresAt (DateTime)

The expiration date of the announcement, if any.

announcementUserDismissible (Boolean)

Whether the announcement can be dismissed by the user.

Assignable

An object that can have users assigned to it.

Assignable is implemented by

Fields for Assignable

NameDescription

assignees (UserConnection!)

A list of Users assigned to this object.

Arguments for assignees

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

AuditEntry

An entry in the audit log.

AuditEntry is implemented by

Fields for AuditEntry

NameDescription

action (String!)

The action name.

actor (AuditEntryActor)

The user who initiated the action.

actorIp (String)

The IP address of the actor.

actorLocation (ActorLocation)

A readable representation of the actor's location.

actorLogin (String)

The username of the user who initiated the action.

actorResourcePath (URI)

The HTTP path for the actor.

actorUrl (URI)

The HTTP URL for the actor.

createdAt (PreciseDateTime!)

The time the action was initiated.

operationType (OperationType)

The corresponding operation type for the action.

user (User)

The user affected by the action.

userLogin (String)

For actions involving two users, the actor is the initiator and the user is the affected user.

userResourcePath (URI)

The HTTP path for the user.

userUrl (URI)

The HTTP URL for the user.

Closable

An object that can be closed.

Closable is implemented by

Fields for Closable

NameDescription

closed (Boolean!)

Indicates if the object is closed (definition of closed may depend on type).

closedAt (DateTime)

Identifies the date and time when the object was closed.

viewerCanClose (Boolean!)

Indicates if the object can be closed by the viewer.

viewerCanReopen (Boolean!)

Indicates if the object can be reopened by the viewer.

Comment

Represents a comment.

Comment is implemented by

Fields for Comment

NameDescription

author (Actor)

The actor who authored the comment.

authorAssociation (CommentAuthorAssociation!)

Author's association with the subject of the comment.

body (String!)

The body as Markdown.

bodyHTML (HTML!)

The body rendered to HTML.

bodyText (String!)

The body rendered to text.

createdAt (DateTime!)

Identifies the date and time when the object was created.

createdViaEmail (Boolean!)

Check if this comment was created via an email reply.

editor (Actor)

The actor who edited the comment.

id (ID!)

N/A

includesCreatedEdit (Boolean!)

Check if this comment was edited and includes an edit with the creation data.

lastEditedAt (DateTime)

The moment the editor made the last edit.

publishedAt (DateTime)

Identifies when the comment was published at.

updatedAt (DateTime!)

Identifies the date and time when the object was last updated.

userContentEdits (UserContentEditConnection)

A list of edits to this content.

Arguments for userContentEdits

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

viewerDidAuthor (Boolean!)

Did the viewer author this comment.

Contribution

Represents a contribution a user made on GitHub, such as opening an issue.

Contribution is implemented by

Fields for Contribution

NameDescription

isRestricted (Boolean!)

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.

occurredAt (DateTime!)

When this contribution was made.

resourcePath (URI!)

The HTTP path for this contribution.

url (URI!)

The HTTP URL for this contribution.

user (User!)

The user who made this contribution.

Deletable

Entities that can be deleted.

Deletable is implemented by

Fields for Deletable

NameDescription

viewerCanDelete (Boolean!)

Check if the current viewer can delete this object.

EnterpriseAuditEntryData

Metadata for an audit entry containing enterprise account information.

EnterpriseAuditEntryData is implemented by

Fields for EnterpriseAuditEntryData

NameDescription

enterpriseResourcePath (URI)

The HTTP path for this enterprise.

enterpriseSlug (String)

The slug of the enterprise.

enterpriseUrl (URI)

The HTTP URL for this enterprise.

GitObject

Represents a Git object.

GitObject is implemented by

Fields for GitObject

NameDescription

abbreviatedOid (String!)

An abbreviated version of the Git object ID.

commitResourcePath (URI!)

The HTTP path for this Git object.

commitUrl (URI!)

The HTTP URL for this Git object.

id (ID!)

N/A

oid (GitObjectID!)

The Git object ID.

repository (Repository!)

The Repository the Git object belongs to.

GitSignature

Information about a signature (GPG or S/MIME) on a Commit or Tag.

GitSignature is implemented by

Fields for GitSignature

NameDescription

email (String!)

Email used to sign this object.

isValid (Boolean!)

True if the signature is valid and verified by GitHub.

payload (String!)

Payload for GPG signing object. Raw ODB object without the signature header.

signature (String!)

ASCII-armored signature header from object.

signer (User)

GitHub user corresponding to the email signing this commit.

state (GitSignatureState!)

The state of this signature. VALID if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid.

wasSignedByGitHub (Boolean!)

True if the signature was made with GitHub's signing key.

HovercardContext

An individual line of a hovercard.

HovercardContext is implemented by

Fields for HovercardContext

NameDescription

message (String!)

A string describing this context.

octicon (String!)

An octicon to accompany this context.

Labelable

An object that can have labels assigned to it.

Labelable is implemented by

Fields for Labelable

NameDescription

labels (LabelConnection)

A list of labels associated with the object.

Arguments for labels

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • orderBy (LabelOrder)

    Ordering options for labels returned from the connection.

Lockable

An object that can be locked.

Lockable is implemented by

Fields for Lockable

NameDescription

activeLockReason (LockReason)

Reason that the conversation was locked.

locked (Boolean!)

true if the object is locked.

MemberStatusable

Entities that have members who can set status messages.

MemberStatusable is implemented by

Fields for MemberStatusable

NameDescription

memberStatuses (UserStatusConnection!)

Get the status messages members of this entity have set that are either public or visible only to the organization.

Arguments for memberStatuses

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • orderBy (UserStatusOrder)

    Ordering options for user statuses returned from the connection.

Migration

Represents a GitHub Enterprise Importer (GEI) migration.

Migration is implemented by

Fields for Migration

NameDescription

continueOnError (Boolean!)

The migration flag to continue on error.

createdAt (DateTime!)

Identifies the date and time when the object was created.

databaseId (String)

Identifies the primary key from the database.

failureReason (String)

The reason the migration failed.

id (ID!)

N/A

migrationLogUrl (URI)

The URL for the migration log (expires 1 day after migration completes).

migrationSource (MigrationSource!)

The migration source.

repositoryName (String!)

The target repository name.

sourceUrl (URI!)

The migration source URL, for example https://github.com or https://monalisa.ghe.com.

state (MigrationState!)

The migration state.

Minimizable

Entities that can be minimized.

Minimizable is implemented by

Fields for Minimizable

NameDescription

isMinimized (Boolean!)

Returns whether or not a comment has been minimized.

minimizedReason (String)

Returns why the comment was minimized. One of abuse, off-topic, outdated, resolved, duplicate and spam. Note that the case and formatting of these values differs from the inputs to the MinimizeComment mutation.

viewerCanMinimize (Boolean!)

Check if the current viewer can minimize this object.

Node

An object with an ID.

Node is implemented by

Fields for Node

NameDescription

id (ID!)

ID of the object.

OauthApplicationAuditEntryData

Metadata for an audit entry with action oauth_application.*.

OauthApplicationAuditEntryData is implemented by

Fields for OauthApplicationAuditEntryData

NameDescription

oauthApplicationName (String)

The name of the OAuth Application.

oauthApplicationResourcePath (URI)

The HTTP path for the OAuth Application.

oauthApplicationUrl (URI)

The HTTP URL for the OAuth Application.

OrganizationAuditEntryData

Metadata for an audit entry with action org.*.

OrganizationAuditEntryData is implemented by

Fields for OrganizationAuditEntryData

NameDescription

organization (Organization)

The Organization associated with the Audit Entry.

organizationName (String)

The name of the Organization.

organizationResourcePath (URI)

The HTTP path for the organization.

organizationUrl (URI)

The HTTP URL for the organization.

PackageOwner

Represents an owner of a package.

PackageOwner is implemented by

Fields for PackageOwner

NameDescription

id (ID!)

N/A

packages (PackageConnection!)

A list of packages under the owner.

Arguments for packages

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • names ([String])

    Find packages by their names.

  • packageType (PackageType)

    Filter registry package by type.

  • repositoryId (ID)

    Find packages in a repository by ID.

ProfileOwner

Represents any entity on GitHub that has a profile page.

ProfileOwner is implemented by

Fields for ProfileOwner

NameDescription

anyPinnableItems (Boolean!)

Determine if this repository owner has any items that can be pinned to their profile.

Arguments for anyPinnableItems

email (String)

The public profile email.

id (ID!)

N/A

itemShowcase (ProfileItemShowcase!)

Showcases a selection of repositories and gists that the profile owner has either curated or that have been selected automatically based on popularity.

location (String)

The public profile location.

login (String!)

The username used to login.

name (String)

The public profile name.

pinnableItems (PinnableItemConnection!)

A list of repositories and gists this profile owner can pin to their profile.

Arguments for pinnableItems

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

pinnedItems (PinnableItemConnection!)

A list of repositories and gists this profile owner has pinned to their profile.

Arguments for pinnedItems

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

pinnedItemsRemaining (Int!)

Returns how many more items this profile owner can pin to their profile.

viewerCanChangePinnedItems (Boolean!)

Can the viewer pin repositories and gists to the profile?.

websiteUrl (URI)

The public profile website URL.

ProjectOwner

Represents an owner of a Project.

ProjectOwner is implemented by

Fields for ProjectOwner

NameDescription

id (ID!)

N/A

project (Project)

Find project by number.

Arguments for project

  • number (Int!)

    The project number to find.

projects (ProjectConnection!)

A list of projects under the owner.

Arguments for projects

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • orderBy (ProjectOrder)

    Ordering options for projects returned from the connection.

  • search (String)

    Query to search projects by, currently only searching by name.

projectsResourcePath (URI!)

The HTTP path listing owners projects.

projectsUrl (URI!)

The HTTP URL listing owners projects.

viewerCanCreateProjects (Boolean!)

Can the current viewer create new projects on this owner.

ProjectV2FieldCommon

Common fields across different project field types.

ProjectV2FieldCommon is implemented by

Fields for ProjectV2FieldCommon

NameDescription

createdAt (DateTime!)

Identifies the date and time when the object was created.

dataType (ProjectV2FieldType!)

The field's type.

databaseId (Int)

Identifies the primary key from the database.

id (ID!)

N/A

name (String!)

The project field's name.

project (ProjectV2!)

The project that contains this field.

updatedAt (DateTime!)

Identifies the date and time when the object was last updated.

ProjectV2ItemFieldValueCommon

Common fields across different project field value types.

ProjectV2ItemFieldValueCommon is implemented by

Fields for ProjectV2ItemFieldValueCommon

NameDescription

createdAt (DateTime!)

Identifies the date and time when the object was created.

creator (Actor)

The actor who created the item.

databaseId (Int)

Identifies the primary key from the database.

field (ProjectV2FieldConfiguration!)

The project field that contains this value.

id (ID!)

N/A

item (ProjectV2Item!)

The project item that contains this value.

updatedAt (DateTime!)

Identifies the date and time when the object was last updated.

ProjectV2Owner

Represents an owner of a project (beta).

ProjectV2Owner is implemented by

Fields for ProjectV2Owner

NameDescription

id (ID!)

N/A

projectV2 (ProjectV2)

Find a project by number.

Arguments for projectV2

  • number (Int!)

    The project number.

projectsV2 (ProjectV2Connection!)

A list of projects under the owner.

Arguments for projectsV2

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • query (String)

    A project to search for under the the owner.

ProjectV2Recent

Recent projects for the owner.

ProjectV2Recent is implemented by

Fields for ProjectV2Recent

NameDescription

recentProjects (ProjectV2Connection!)

Recent projects that this user has modified in the context of the owner.

Arguments for recentProjects

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

Reactable

Represents a subject that can be reacted on.

Reactable is implemented by

Fields for Reactable

NameDescription

databaseId (Int)

Identifies the primary key from the database.

id (ID!)

N/A

reactionGroups ([ReactionGroup!])

A list of reactions grouped by content left on the subject.

reactions (ReactionConnection!)

A list of Reactions left on the Issue.

Arguments for reactions

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • orderBy (ReactionOrder)

    Allows specifying the order in which reactions are returned.

viewerCanReact (Boolean!)

Can user react to this subject.

RepositoryAuditEntryData

Metadata for an audit entry with action repo.*.

RepositoryAuditEntryData is implemented by

Fields for RepositoryAuditEntryData

NameDescription

repository (Repository)

The repository associated with the action.

repositoryName (String)

The name of the repository.

repositoryResourcePath (URI)

The HTTP path for the repository.

repositoryUrl (URI)

The HTTP URL for the repository.

RepositoryDiscussionAuthor

Represents an author of discussions in repositories.

RepositoryDiscussionAuthor is implemented by

Fields for RepositoryDiscussionAuthor

NameDescription

repositoryDiscussions (DiscussionConnection!)

Discussions this user has started.

Arguments for repositoryDiscussions

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • answered (Boolean)

    Filter discussions to only those that have been answered or not. Defaults to including both answered and unanswered discussions.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • orderBy (DiscussionOrder)

    Ordering options for discussions returned from the connection.

  • repositoryId (ID)

    Filter discussions to only those in a specific repository.

RepositoryDiscussionCommentAuthor

Represents an author of discussion comments in repositories.

RepositoryDiscussionCommentAuthor is implemented by

Fields for RepositoryDiscussionCommentAuthor

NameDescription

repositoryDiscussionComments (DiscussionCommentConnection!)

Discussion comments this user has authored.

Arguments for repositoryDiscussionComments

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

  • onlyAnswers (Boolean)

    Filter discussion comments to only those that were marked as the answer.

    The default value is false.

  • repositoryId (ID)

    Filter discussion comments to only those in a specific repository.

RepositoryInfo

A subset of repository info.

RepositoryInfo is implemented by

Fields for RepositoryInfo

NameDescription

createdAt (DateTime!)

Identifies the date and time when the object was created.

description (String)

The description of the repository.

descriptionHTML (HTML!)

The description of the repository rendered to HTML.

forkCount (Int!)

Returns how many forks there are of this repository in the whole network.

hasAnonymousAccessEnabled (Boolean!)

Indicates if the repository has anonymous Git read access feature enabled.

hasDiscussionsEnabled (Boolean!)

Indicates if the repository has the Discussions feature enabled.

hasIssuesEnabled (Boolean!)

Indicates if the repository has issues feature enabled.

hasProjectsEnabled (Boolean!)

Indicates if the repository has the Projects feature enabled.

hasWikiEnabled (Boolean!)

Indicates if the repository has wiki feature enabled.

homepageUrl (URI)

The repository's URL.

isArchived (Boolean!)

Indicates if the repository is unmaintained.

isFork (Boolean!)

Identifies if the repository is a fork.

isInOrganization (Boolean!)

Indicates if a repository is either owned by an organization, or is a private fork of an organization repository.

isLocked (Boolean!)

Indicates if the repository has been locked or not.

isMirror (Boolean!)

Identifies if the repository is a mirror.

isPrivate (Boolean!)

Identifies if the repository is private or internal.

isTemplate (Boolean!)

Identifies if the repository is a template that can be used to generate new repositories.

licenseInfo (License)

The license associated with the repository.

lockReason (RepositoryLockReason)

The reason the repository has been locked.

mirrorUrl (URI)

The repository's original mirror URL.

name (String!)

The name of the repository.

nameWithOwner (String!)

The repository's name with owner.

openGraphImageUrl (URI!)

The image used to represent this repository in Open Graph data.

owner (RepositoryOwner!)

The User owner of the repository.

pushedAt (DateTime)

Identifies when the repository was last pushed to.

resourcePath (URI!)

The HTTP path for this repository.

shortDescriptionHTML (HTML!)

A description of the repository, rendered to HTML without any links in it.

Arguments for shortDescriptionHTML

  • limit (Int)

    How many characters to return.

    The default value is 200.

updatedAt (DateTime!)

Identifies the date and time when the object was last updated.

url (URI!)

The HTTP URL for this repository.

usesCustomOpenGraphImage (Boolean!)

Whether this repository has a custom image to use with Open Graph as opposed to being represented by the owner's avatar.

visibility (RepositoryVisibility!)

Indicates the repository's visibility level.

RepositoryNode

Represents a object that belongs to a repository.

RepositoryOwner

Represents an owner of a Repository.

RepositoryOwner is implemented by

Fields for RepositoryOwner

NameDescription

avatarUrl (URI!)

A URL pointing to the owner's public avatar.

Arguments for avatarUrl

  • size (Int)

    The size of the resulting square image.

id (ID!)

N/A

login (String!)

The username used to login.

repositories (RepositoryConnection!)

A list of repositories that the user owns.

Arguments for repositories

  • affiliations ([RepositoryAffiliation])

    Array of viewer's affiliation options for repositories returned from the connection. For example, OWNER will include only repositories that the current viewer owns.

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • isFork (Boolean)

    If non-null, filters repositories according to whether they are forks of another repository.

  • isLocked (Boolean)

    If non-null, filters repositories according to whether they have been locked.

  • last (Int)

    Returns the last n elements from the list.

  • orderBy (RepositoryOrder)

    Ordering options for repositories returned from the connection.

  • ownerAffiliations ([RepositoryAffiliation])

    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.

repository (Repository)

Find Repository.

Arguments for repository

  • followRenames (Boolean)

    Follow repository renames. If disabled, a repository referenced by its old name will return an error.

    The default value is true.

  • name (String!)

    Name of Repository to find.

resourcePath (URI!)

The HTTP URL for the owner.

url (URI!)

The HTTP URL for the owner.

RequirableByPullRequest

Represents a type that can be required by a pull request for merging.

RequirableByPullRequest is implemented by

Fields for RequirableByPullRequest

NameDescription

isRequired (Boolean!)

Whether this is required to pass before merging for a specific pull request.

Arguments for isRequired

  • pullRequestId (ID)

    The id of the pull request this is required for.

  • pullRequestNumber (Int)

    The number of the pull request this is required for.

Starrable

Things that can be starred.

Starrable is implemented by

Fields for Starrable

NameDescription

id (ID!)

N/A

stargazerCount (Int!)

Returns a count of how many stargazers there are on this object.

stargazers (StargazerConnection!)

A list of users who have starred this starrable.

Arguments for stargazers

  • after (String)

    Returns the elements in the list that come after the specified cursor.

  • before (String)

    Returns the elements in the list that come before the specified cursor.

  • first (Int)

    Returns the first n elements from the list.

  • last (Int)

    Returns the last n elements from the list.

viewerHasStarred (Boolean!)

Returns a boolean indicating whether the viewing user has starred this starrable.

Subscribable

Entities that can be subscribed to for web and email notifications.

Subscribable is implemented by

Fields for Subscribable

NameDescription

id (ID!)

N/A

viewerCanSubscribe (Boolean!)

Check if the viewer is able to change their subscription status for the repository.

viewerSubscription (SubscriptionState)

Identifies if the viewer is watching, not watching, or ignoring the subscribable entity.

TeamAuditEntryData

Metadata for an audit entry with action team.*.

TeamAuditEntryData is implemented by

Fields for TeamAuditEntryData

NameDescription

team (Team)

The team associated with the action.

teamName (String)

The name of the team.

teamResourcePath (URI)

The HTTP path for this team.

teamUrl (URI)

The HTTP URL for this team.

TopicAuditEntryData

Metadata for an audit entry with a topic.

TopicAuditEntryData is implemented by

Fields for TopicAuditEntryData

NameDescription

topic (Topic)

The name of the topic added to the repository.

topicName (String)

The name of the topic added to the repository.

UniformResourceLocatable

Represents a type that can be retrieved by a URL.

Updatable

Entities that can be updated.

Updatable is implemented by

Fields for Updatable

NameDescription

viewerCanUpdate (Boolean!)

Check if the current viewer can update this object.

UpdatableComment

Comments that can be updated.

UpdatableComment is implemented by

Fields for UpdatableComment

NameDescription

viewerCannotUpdateReasons ([CommentCannotUpdateReason!]!)

Reasons why the current viewer can not update this comment.

Votable

A subject that may be upvoted.

Votable is implemented by

Fields for Votable

NameDescription

upvoteCount (Int!)

Number of upvotes that this subject has received.

viewerCanUpvote (Boolean!)

Whether or not the current user can add or remove an upvote on this subject.

viewerHasUpvoted (Boolean!)

Whether or not the current user has already upvoted this subject.