openapi: 3.2.0
info:
version: 1.1.4
title: GitHub Notifications Thread API
description: 'This GitHub REST API allows you to programmatically manage your GitHub notifications, which include updates on issues, pull requests, and commits. The API requires authentication via a personal access token (classic) and needs either the notifications or repo scope to function. '
license:
name: MIT
url: https://spdx.org/licenses/MIT
termsOfService: https://docs.github.com/articles/github-terms-of-service
contact:
name: Support
url: https://support.github.com/contact?tags=dotcom-rest-api
x-github-plan: ghes
x-github-release: 3.9
servers:
- url: '{protocol}://{hostname}/api/v3'
variables:
hostname:
description: Self-hosted Enterprise Server hostname
default: HOSTNAME
protocol:
description: Self-hosted Enterprise Server protocol
default: http
tags:
- name: Thread
paths:
/notifications/threads/{thread_id}:
get:
summary: GitHub Get Thread
description: Returns detailed information about a specific notification thread identified by the thread_id parameter. This endpoint retrieves the complete thread data including the notification subject, reason for the notification, repository information, and the current read/unread status. The operation requires authentication and will only return threads that belong to the authenticated user. The response includes metadata about when the thread was last updated and provides URLs for related operations such as marking the thread as read or accessing the associated subscription.
tags:
- Thread
operationId: getThread
externalDocs:
description: API method documentation
url: https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#get-a-thread
parameters:
- $ref: '#/components/parameters/thread-id'
responses:
'200':
description: Response
content:
application/json:
schema:
$ref: '#/components/schemas/thread'
examples:
default:
$ref: '#/components/examples/thread'
'304':
$ref: '#/components/responses/not_modified'
'401':
$ref: '#/components/responses/requires_authentication'
'403':
$ref: '#/components/responses/forbidden'
x-github:
githubCloudOnly: false
enabledForGitHubApps: false
category: activity
subcategory: notifications
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
patch:
summary: GitHub Mark Thread as Read
description: 'Marks a thread as "read." Marking a thread as "read" is equivalent to clicking a notification in your notification inbox on GitHub Enterprise Server: https://github.com/notifications.'
tags:
- Thread
operationId: markThreadAsRead
externalDocs:
description: API method documentation
url: https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#mark-a-thread-as-read
parameters:
- $ref: '#/components/parameters/thread-id'
responses:
'205':
description: Reset Content
'304':
$ref: '#/components/responses/not_modified'
'403':
$ref: '#/components/responses/forbidden'
x-github:
githubCloudOnly: false
enabledForGitHubApps: false
category: activity
subcategory: notifications
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/notifications/threads/{thread_id}/subscription:
get:
summary: GitHub Get Thread Subscription for the Authenticated User
description: 'This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://docs.github.com/enterprise-server@3.9/rest/activity/watching#get-a-repository-subscription).
Note that subscriptions are only generated if a user is participating in a conversation--for example, they''ve replied to the thread, were **@mentioned**, or manually subscribe to a thread.'
tags:
- Thread
operationId: getThreadSubscriptionForTheAuthenticatedUser
externalDocs:
description: API method documentation
url: https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#get-a-thread-subscription-for-the-authenticated-user
parameters:
- $ref: '#/components/parameters/thread-id'
responses:
'200':
description: Response
content:
application/json:
schema:
$ref: '#/components/schemas/thread-subscription'
examples:
default:
$ref: '#/components/examples/thread-subscription'
'304':
$ref: '#/components/responses/not_modified'
'401':
$ref: '#/components/responses/requires_authentication'
'403':
$ref: '#/components/responses/forbidden'
x-github:
githubCloudOnly: false
enabledForGitHubApps: false
category: activity
subcategory: notifications
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
put:
summary: GitHub Set Thread Subscription
description: 'If you are watching a repository, you receive notifications for all threads by default. Use this endpoint to ignore future notifications for threads until you comment on the thread or get an **@mention**.
You can also use this endpoint to subscribe to threads that you are currently not receiving notifications for or to subscribed to threads that you have previously ignored.
Unsubscribing from a conversation in a repository that you are not watching is functionally equivalent to the [Delete a thread subscription](https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#delete-a-thread-subscription) endpoint.'
tags:
- Thread
operationId: setThreadSubscription
externalDocs:
description: API method documentation
url: https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#set-a-thread-subscription
parameters:
- $ref: '#/components/parameters/thread-id'
requestBody:
required: false
content:
application/json:
schema:
properties:
ignored:
description: Whether to block all notifications from a thread.
default: false
type: boolean
type: object
examples:
default:
value:
ignored: false
responses:
'200':
description: Response
content:
application/json:
schema:
$ref: '#/components/schemas/thread-subscription'
examples:
default:
$ref: '#/components/examples/thread-subscription'
'304':
$ref: '#/components/responses/not_modified'
'401':
$ref: '#/components/responses/requires_authentication'
'403':
$ref: '#/components/responses/forbidden'
x-github:
githubCloudOnly: false
enabledForGitHubApps: false
category: activity
subcategory: notifications
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
summary: GitHub Delete Thread Subscription
description: Mutes all future notifications for a conversation until you comment on the thread or get an **@mention**. If you are watching the repository of the thread, you will still receive notifications. To ignore future notifications for a repository you are watching, use the [Set a thread subscription](https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#set-a-thread-subscription) endpoint and set `ignore` to `true`.
tags:
- Thread
operationId: deleteThreadSubscription
externalDocs:
description: API method documentation
url: https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#delete-a-thread-subscription
parameters:
- $ref: '#/components/parameters/thread-id'
responses:
'204':
description: Response
'304':
$ref: '#/components/responses/not_modified'
'401':
$ref: '#/components/responses/requires_authentication'
'403':
$ref: '#/components/responses/forbidden'
x-github:
githubCloudOnly: false
enabledForGitHubApps: false
category: activity
subcategory: notifications
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
thread:
title: Thread
description: Thread
type: object
properties:
id:
type: string
example: '12345678'
repository:
$ref: '#/components/schemas/minimal-repository'
subject:
type: object
properties:
title:
type: string
url:
type: string
latest_comment_url:
type: string
type:
type: string
required:
- title
- url
- latest_comment_url
- type
reason:
type: string
example: example_value
unread:
type: boolean
example: true
updated_at:
type: string
example: '2026-04-17T12:00:00Z'
last_read_at:
type:
- string
- 'null'
example: '2026-04-17T12:00:00Z'
url:
type: string
example: https://api.github.com/repos/octocat/Hello-World
subscription_url:
type: string
example: https://api.github.com/notifications/threads/2/subscription
required:
- id
- unread
- reason
- updated_at
- last_read_at
- subject
- repository
- url
- subscription_url
simple-user:
title: Simple User
description: A GitHub user.
type: object
properties:
name:
type:
- string
- 'null'
example: octocat
email:
type:
- string
- 'null'
example: octocat@github.com
login:
type: string
example: octocat
id:
type: integer
example: 1
node_id:
type: string
example: MDQ6VXNlcjE=
avatar_url:
type: string
format: uri
example: https://github.com/images/error/octocat_happy.gif
gravatar_id:
type:
- string
- 'null'
example: 41d064eb2195891e12d0413f63227ea7
url:
type: string
format: uri
example: https://api.github.com/users/octocat
html_url:
type: string
format: uri
example: https://github.com/octocat
followers_url:
type: string
format: uri
example: https://api.github.com/users/octocat/followers
following_url:
type: string
example: https://api.github.com/users/octocat/following{/other_user}
gists_url:
type: string
example: https://api.github.com/users/octocat/gists{/gist_id}
starred_url:
type: string
example: https://api.github.com/users/octocat/starred{/owner}{/repo}
subscriptions_url:
type: string
format: uri
example: https://api.github.com/users/octocat/subscriptions
organizations_url:
type: string
format: uri
example: https://api.github.com/users/octocat/orgs
repos_url:
type: string
format: uri
example: https://api.github.com/users/octocat/repos
events_url:
type: string
example: https://api.github.com/users/octocat/events{/privacy}
received_events_url:
type: string
format: uri
example: https://api.github.com/users/octocat/received_events
type:
type: string
example: User
site_admin:
type: boolean
example: true
starred_at:
type: string
example: '"2020-07-09T00:17:55Z"'
required:
- avatar_url
- events_url
- followers_url
- following_url
- gists_url
- gravatar_id
- html_url
- id
- node_id
- login
- organizations_url
- received_events_url
- repos_url
- site_admin
- starred_url
- subscriptions_url
- type
- url
code-of-conduct:
title: Code Of Conduct
description: Code Of Conduct
type: object
properties:
key:
type: string
example: contributor_covenant
name:
type: string
example: Contributor Covenant
url:
type: string
format: uri
example: https://api.github.com/codes_of_conduct/contributor_covenant
body:
type: string
example: "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response\n to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address,\n posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and\nclarified by project maintainers.\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [EMAIL]. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.4, available at [http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4/).\n"
html_url:
type:
- string
- 'null'
format: uri
example: https://api.github.com/repos/octocat/Hello-World
required:
- url
- html_url
- key
- name
minimal-repository:
title: Minimal Repository
description: Minimal Repository
type: object
properties:
id:
type: integer
example: 1296269
node_id:
type: string
example: MDEwOlJlcG9zaXRvcnkxMjk2MjY5
name:
type: string
example: Hello-World
full_name:
type: string
example: octocat/Hello-World
owner:
$ref: '#/components/schemas/simple-user'
private:
type: boolean
example: true
html_url:
type: string
format: uri
example: https://github.com/octocat/Hello-World
description:
type:
- string
- 'null'
example: This your first repo!
fork:
type: boolean
example: true
url:
type: string
format: uri
example: https://api.github.com/repos/octocat/Hello-World
archive_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}
assignees_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/assignees{/user}
blobs_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}
branches_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/branches{/branch}
collaborators_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}
comments_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/comments{/number}
commits_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/commits{/sha}
compare_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}
contents_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/contents/{+path}
contributors_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/contributors
deployments_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/deployments
downloads_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/downloads
events_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/events
forks_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/forks
git_commits_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/git/commits{/sha}
git_refs_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/git/refs{/sha}
git_tags_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/git/tags{/sha}
git_url:
type: string
issue_comment_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/issues/comments{/number}
issue_events_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/issues/events{/number}
issues_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/issues{/number}
keys_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/keys{/key_id}
labels_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/labels{/name}
languages_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/languages
merges_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/merges
milestones_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/milestones{/number}
notifications_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}
pulls_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/pulls{/number}
releases_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/releases{/id}
ssh_url:
type: string
stargazers_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/stargazers
statuses_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/statuses/{sha}
subscribers_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/subscribers
subscription_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/subscription
tags_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/tags
teams_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/teams
trees_url:
type: string
example: http://api.github.com/repos/octocat/Hello-World/git/trees{/sha}
clone_url:
type: string
mirror_url:
type:
- string
- 'null'
hooks_url:
type: string
format: uri
example: http://api.github.com/repos/octocat/Hello-World/hooks
svn_url:
type: string
homepage:
type:
- string
- 'null'
language:
type:
- string
- 'null'
forks_count:
type: integer
stargazers_count:
type: integer
watchers_count:
type: integer
size:
description: The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0.
type: integer
default_branch:
type: string
open_issues_count:
type: integer
is_template:
type: boolean
topics:
type: array
items:
type: string
has_issues:
type: boolean
has_projects:
type: boolean
has_wiki:
type: boolean
has_pages:
type: boolean
has_downloads:
type: boolean
has_discussions:
type: boolean
archived:
type: boolean
disabled:
type: boolean
visibility:
type: string
pushed_at:
type:
- string
- 'null'
format: date-time
example: '2011-01-26T19:06:43Z'
created_at:
type:
- string
- 'null'
format: date-time
example: '2011-01-26T19:01:12Z'
updated_at:
type:
- string
- 'null'
format: date-time
example: '2011-01-26T19:14:43Z'
permissions:
type: object
properties:
admin:
type: boolean
maintain:
type: boolean
push:
type: boolean
triage:
type: boolean
pull:
type: boolean
role_name:
type: string
example: admin
temp_clone_token:
type: string
delete_branch_on_merge:
type: boolean
subscribers_count:
type: integer
network_count:
type: integer
code_of_conduct:
$ref: '#/components/schemas/code-of-conduct'
license:
type:
- object
- 'null'
properties:
key:
type: string
name:
type: string
spdx_id:
type: string
url:
type: string
node_id:
type: string
forks:
type: integer
example: 0
open_issues:
type: integer
example: 0
watchers:
type: integer
example: 0
allow_forking:
type: boolean
web_commit_signoff_required:
type: boolean
example: false
security_and_analysis:
$ref: '#/components/schemas/security-and-analysis'
required:
- archive_url
- assignees_url
- blobs_url
- branches_url
- collaborators_url
- comments_url
- commits_url
- compare_url
- contents_url
- contributors_url
- deployments_url
- description
- downloads_url
- events_url
- fork
- forks_url
- full_name
- git_commits_url
- git_refs_url
- git_tags_url
- hooks_url
- html_url
- id
- node_id
- issue_comment_url
- issue_events_url
- issues_url
- keys_url
- labels_url
- languages_url
- merges_url
- milestones_url
- name
- notifications_url
- owner
- private
- pulls_url
- releases_url
- stargazers_url
- statuses_url
- subscribers_url
- subscription_url
- tags_url
- teams_url
- trees_url
- url
security-and-analysis:
type:
- object
- 'null'
properties:
advanced_security:
type: object
properties:
status:
type: string
enum:
- enabled
- disabled
secret_scanning:
type: object
properties:
status:
type: string
enum:
- enabled
- disabled
secret_scanning_push_protection:
type: object
properties:
status:
type: string
enum:
- enabled
- disabled
basic-error:
title: Basic Error
description: Basic Error
type: object
properties:
message:
type: string
example: Example body text
documentation_url:
type: string
example: https://api.github.com/repos/octocat/Hello-World
url:
type: string
example: https://api.github.com/repos/octocat/Hello-World
status:
type: string
example: open
thread-subscription:
title: Thread Subscription
description: Thread Subscription
type: object
properties:
subscribed:
type: boolean
example: true
ignored:
type: boolean
example: true
reason:
type:
- string
- 'null'
example: example_value
created_at:
type:
- string
- 'null'
format: date-time
example: '2012-10-06T21:34:12Z'
url:
type: string
format: uri
example: https://api.github.com/notifications/threads/1/subscription
thread_url:
type: string
format: uri
example: https://api.github.com/notifications/threads/1
repository_url:
type: string
format: uri
example: https://api.github.com/repos/1
required:
- created_at
- ignored
- reason
- url
- subscribed
responses:
forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/basic-error'
not_modified:
description: Not modified
requires_authentication:
description: Requires authentication
content:
application/json:
schema:
$ref: '#/components/schemas/basic-error'
parameters:
thread-id:
name: thread_id
description: The unique identifier of the notification thread. This corresponds to the value returned in the `id` field when you retrieve notifications (for example with the [`GET /notifications` operation](https://docs.github.com/enterprise-server@3.9/rest/activity/notifications#list-notifications-for-the-authenticated-user)).
in: path
required: true
schema:
type: integer
examples:
thread:
value:
id: '1'
repository:
id: 1296269
node_id: MDEwOlJlcG9zaXRvcnkxMjk2MjY5
name: Hello-World
full_name: octocat/Hello-World
owner:
login: octocat
id: 1
node_id: MDQ6VXNlcjE=
avatar_url: https://github.com/images/error/octocat_happy.gif
gravatar_id: ''
url: https://api.github.com/users/octocat
html_url: https://github.com/octocat
followers_url: https://api.github.com/users/octocat/followers
following_url: https://api.github.com/users/octocat/following{/other_user}
gists_url: https://api.github.com/users/octocat/gists{/gist_id}
starred_url: https://api.github.com/users/octocat/starred{/owner}{/repo}
subscriptions_url: https://api.github.com/users/octocat/subscriptions
organizations_url: https://api.github.com/users/octocat/orgs
repos_url: https://api.github.com/users/octocat/repos
events_url: https://api.github.com/users/octocat/events{/privacy}
received_events_url: https://api.github.com/users/octocat/received_events
type: User
site_admin: false
private: false
html_url: https://github.com/octocat/Hello-World
description: This your first repo!
fork: false
url: https://api.github.com/repos/octocat/Hello-World
archive_url: https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}
assignees_url: https://api.github.com/repos/octocat/Hello-World/assignees{/user}
blobs_url: https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}
branches_url: https://api.github.com/repos/octocat/Hello-World/branches{/branch}
collaborators_url: https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}
comments_url: https://api.github.com/repos/octocat/Hello-World/comments{/number}
commits_url: https://api.github.com/repos/octocat/Hello-World/commits{/sha}
compare_url: https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}
contents_url: https://api.github.com/repos/octocat/Hello-World/contents/{+path}
contributors_url: https://api.github.com/repos/octocat/Hello-World/contributors
deployments_url: https://api.github.com/repos/octocat/Hello-World/deployments
downloads_url: https://api.github.com/repos/octocat/Hello-World/downloads
events_url: https://api.github.com/repos/octocat/Hello-World/events
forks_url: http
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/github/refs/heads/main/openapi/github-thread-api-openapi.yml