https
GET
api.github.com
None
/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=1
{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Wed, 08 Oct 2025 12:40:31 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"3abfee8249f9103269d3c489cbd2681770ecd0c882748d94e12a6d2972613972"'), ('Last-Modified', 'Thu, 28 Aug 2025 19:26:10 GMT'), ('github-authentication-token-expiration', '2025-11-13 21:31:56 +0100'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=2>; rel="next", <https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=3>; rel="last"'), ('x-accepted-github-permissions', 'contents=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4996'), ('X-RateLimit-Reset', '1759927422'), ('X-RateLimit-Used', '4'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'F773:B479C:23E6F40:21A7BDB:68E65BBF')]
{"sha":"e359b83a04e8f34bedab0f2180169012d238a135","node_id":"C_kwDOADYVqtoAKGUzNTliODNhMDRlOGYzNGJlZGFiMGYyMTgwMTY5MDEyZDIzOGExMzU","commit":{"author":{"name":"Matt Ball","email":"96152357+mball-agathos@users.noreply.github.com","date":"2025-08-28T19:26:10Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2025-08-28T19:26:10Z"},"message":"Add support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","tree":{"sha":"31a6407b7b342e651500eadc61bdf5d42cf72eed","url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees/31a6407b7b342e651500eadc61bdf5d42cf72eed"},"url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits/e359b83a04e8f34bedab0f2180169012d238a135","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJosK1jCRC1aQ7uu5UhlAAAmsoQABeT6niMpp83ZpDXpGsUqzFL\n9QJWQdwxttog7gefE5I6fgfE9z2PU1pWryhyOYVVpNEa4mAp9nvT69gOcpmFeUD6\nraCRselQPfQN+UFUcZWLhuYzq6Thq1/57XRfS4RfbTRDV2C0yy0qP9By1JlCWFmj\nqxxyWVRcLmONgbiUnhOXkLw1KDNfDiDFizh269R7yaZtYqsSZYa7o77iASPkqRLa\nDIh5nGN1Hfy9w53xi/I40jdJEjbaVB/rY7YmzCzZQs0QxNR2aiMXrVGdM9W+7MBN\nAoEOFqzLk5B9gPoK0EoCa+KKGYhp3uDgSRg1ibptkfNTSfJKsBXRwZDdIbO3kmvP\nkzkJY0j+k5FFzo+rku3gYLLTUez/AIBBxRrar2I7gCxMuK+dxTAYZLRMBFAkeNNP\nljJl0QW45iQgxZ8svbeekHyHnoAFJ1ppwFkPJ+vUxIdY0YAam4BkVEx48Vx3QAQm\ny6Ldq/bvvwCK65+ZTkjNMpjEjpTdoJcuHuzyOXp2Rw/APz87M7LB44OI3NvCJHG9\nFTpWHadum7PoRIJIWiU2z58jh7/1Ywi+iMD4PCJLGx5GC53AtPs5cxvuSl43r26W\nxf5lVQoQwHJw7x0rHtdjN5DOYcs9bn4+o2pCRo6HD0likzGh1ACBKC6/uic+QF/6\nipq9pXgShHmxsMHmMIfo\n=bspX\n-----END PGP SIGNATURE-----\n","payload":"tree 31a6407b7b342e651500eadc61bdf5d42cf72eed\nparent 4a6bba936282fc7faa3770cffa76197e67a3bc38\nauthor Matt Ball <96152357+mball-agathos@users.noreply.github.com> 1756409170 -0600\ncommitter GitHub <noreply@github.com> 1756409170 +0000\n\nAdd support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","verified_at":"2025-08-28T19:26:27Z"}},"url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135","html_url":"https://github.com/PyGithub/PyGithub/commit/e359b83a04e8f34bedab0f2180169012d238a135","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135/comments","author":{"login":"mball-agathos","id":96152357,"node_id":"U_kgDOBbsrJQ","avatar_url":"https://avatars.githubusercontent.com/u/96152357?v=4","gravatar_id":"","url":"https://api.github.com/users/mball-agathos","html_url":"https://github.com/mball-agathos","followers_url":"https://api.github.com/users/mball-agathos/followers","following_url":"https://api.github.com/users/mball-agathos/following{/other_user}","gists_url":"https://api.github.com/users/mball-agathos/gists{/gist_id}","starred_url":"https://api.github.com/users/mball-agathos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mball-agathos/subscriptions","organizations_url":"https://api.github.com/users/mball-agathos/orgs","repos_url":"https://api.github.com/users/mball-agathos/repos","events_url":"https://api.github.com/users/mball-agathos/events{/privacy}","received_events_url":"https://api.github.com/users/mball-agathos/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"4a6bba936282fc7faa3770cffa76197e67a3bc38","url":"https://api.github.com/repos/PyGithub/PyGithub/commits/4a6bba936282fc7faa3770cffa76197e67a3bc38","html_url":"https://github.com/PyGithub/PyGithub/commit/4a6bba936282fc7faa3770cffa76197e67a3bc38"}],"stats":{"total":153,"additions":152,"deletions":1},"files":[{"sha":"f821990c6fbc8180f26382685c9fb6025eae4ae9","filename":"github/GeneratedReleaseNotes.py","status":"added","additions":43,"deletions":0,"changes":43,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/github%2FGeneratedReleaseNotes.py","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/github%2FGeneratedReleaseNotes.py","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/github%2FGeneratedReleaseNotes.py?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -0,0 +1,43 @@\n+from __future__ import annotations\n+\n+from typing import Any\n+\n+from github.GithubObject import (\n+    Attribute,\n+    NonCompletableGithubObject,\n+    NotSet,\n+)\n+\n+\n+class GeneratedReleaseNotes(NonCompletableGithubObject):\n+    \"\"\"\n+    This class represents the release notes generated by the release/generate-notes REST API endpoint.\n+\n+    The reference can be found here:\n+    https://docs.github.com/en/rest/releases/releases#generate-release-notes-content-for-a-release\n+\n+    The OpenAPI schema can be found at\n+    - /components/schemas/release-notes-content\n+\n+    \"\"\"\n+\n+    def _initAttributes(self) -> None:\n+        self._body: Attribute[str] = NotSet\n+        self._name: Attribute[str] = NotSet\n+\n+    def __repr__(self) -> str:\n+        return self.get__repr__({\"name\": self._name.value, \"body\": self._body.value})\n+\n+    @property\n+    def body(self) -> str:\n+        return self._body.value\n+\n+    @property\n+    def name(self) -> str:\n+        return self._name.value\n+\n+    def _useAttributes(self, attributes: dict[str, Any]) -> None:\n+        if \"body\" in attributes:\n+            self._body = self._makeStringAttribute(attributes[\"body\"])\n+        if \"name\" in attributes:\n+            self._name = self._makeStringAttribute(attributes[\"name\"])"},{"sha":"88f60f546ebc64d1f448327f25b92ca814fb964a","filename":"github/Repository.py","status":"modified","additions":38,"deletions":0,"changes":38,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/github%2FRepository.py","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/github%2FRepository.py","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/github%2FRepository.py?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -248,6 +248,7 @@\n import github.WorkflowRun\n from github import Consts\n from github.Environment import Environment\n+from github.GeneratedReleaseNotes import GeneratedReleaseNotes\n from github.GithubObject import (\n     Attribute,\n     CompletableGithubObject,\n@@ -1549,6 +1550,43 @@ def create_git_release(\n         headers, data = self._requester.requestJsonAndCheck(\"POST\", f\"{self.url}/releases\", input=post_parameters)\n         return github.GitRelease.GitRelease(self._requester, headers, data, completed=True)\n \n+    def generate_release_notes(\n+        self,\n+        tag_name: str,\n+        previous_tag_name: Opt[str] = NotSet,\n+        target_commitish: Opt[str] = NotSet,\n+        configuration_file_path: Opt[str] = NotSet,\n+    ) -> GeneratedReleaseNotes:\n+        \"\"\"\n+        :calls: `POST /repos/{owner}/{repo}/releases/generate-notes <https://docs.github.com/en/rest/releases/releases#generate-release-notes-content-for-a-release>`\n+        :param tag_name: The tag name for the release. This can be an existing tag or a new one.\n+        :param previous_tag_name: The name of the previous tag to use as the starting point for the release notes. Use to manually specify the range for the set of changes considered as part this release.\n+        :param target_commitish: Specifies the commitish value that will be the target for the release's tag. Required if the supplied tag_name does not reference an existing tag. Ignored if the tag_name already exists.\n+        :param configuration_file_path: Specifies a path to a file in the repository containing configuration settings used for generating the release notes. If unspecified, the configuration file located in the repository at '.github/release.yml' or '.github/release.yaml' will be used. If that is not present, the default configuration will be used.\n+        :rytpe: :class:`GeneratedReleaseNotes`\n+        \"\"\"\n+        assert isinstance(tag_name, str), tag_name\n+        assert isinstance(previous_tag_name, str) or is_optional(previous_tag_name, str), previous_tag_name\n+        assert isinstance(target_commitish, str) or is_optional(target_commitish, str), target_commitish\n+        assert isinstance(configuration_file_path, str) or is_optional(\n+            configuration_file_path, str\n+        ), configuration_file_path\n+\n+        post_parameters = NotSet.remove_unset_items(\n+            {\n+                \"tag_name\": tag_name,\n+                \"previous_tag_name\": previous_tag_name,\n+                \"target_commitish\": target_commitish,\n+                \"configuration_file_path\": configuration_file_path,\n+            }\n+        )\n+\n+        headers, data = self._requester.requestJsonAndCheck(\n+            \"POST\", f\"{self.url}/releases/generate-notes\", input=post_parameters\n+        )\n+\n+        return GeneratedReleaseNotes(self._requester, headers, data)\n+\n     def create_git_tag(\n         self,\n         tag: str,"},{"sha":"ea6623890081c67fe3dbae69d7caf013e58afb75","filename":"pyproject.toml","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/pyproject.toml","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/pyproject.toml","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/pyproject.toml?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -82,7 +82,7 @@ quiet-level = 3\n #  https://github.com/codespell-project/codespell/issues/2839#issuecomment-1731601603\n # also adding links until they ignored by its: nature\n #  https://github.com/codespell-project/codespell/issues/2243#issuecomment-1732019960\n-ignore-words-list = \"bloaded,nto,pullrequest,pullrequests,thi,tim,wan,Wan,chang,chang,manuel\"\n+ignore-words-list = \"bloaded,nto,pullrequest,pullrequests,thi,tim,wan,Wan,chang,chang,manuel,commitish\"\n \n [tool.ruff]\n line-length = 120"}]}

https
GET
api.github.com
None
/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=3
{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Wed, 08 Oct 2025 12:40:31 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"548f7ba97dcae9b38721fd41fb367a82e90bd221fa220b9c0c5655c07a274f22"'), ('Last-Modified', 'Thu, 28 Aug 2025 19:26:10 GMT'), ('github-authentication-token-expiration', '2025-11-13 21:31:56 +0100'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=2>; rel="prev", <https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=1>; rel="first"'), ('x-accepted-github-permissions', 'contents=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4995'), ('X-RateLimit-Reset', '1759927422'), ('X-RateLimit-Used', '5'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'FB74:1FB8AC:26E7CD9:2488FD7:68E65BBF')]
{"sha":"e359b83a04e8f34bedab0f2180169012d238a135","node_id":"C_kwDOADYVqtoAKGUzNTliODNhMDRlOGYzNGJlZGFiMGYyMTgwMTY5MDEyZDIzOGExMzU","commit":{"author":{"name":"Matt Ball","email":"96152357+mball-agathos@users.noreply.github.com","date":"2025-08-28T19:26:10Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2025-08-28T19:26:10Z"},"message":"Add support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","tree":{"sha":"31a6407b7b342e651500eadc61bdf5d42cf72eed","url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees/31a6407b7b342e651500eadc61bdf5d42cf72eed"},"url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits/e359b83a04e8f34bedab0f2180169012d238a135","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJosK1jCRC1aQ7uu5UhlAAAmsoQABeT6niMpp83ZpDXpGsUqzFL\n9QJWQdwxttog7gefE5I6fgfE9z2PU1pWryhyOYVVpNEa4mAp9nvT69gOcpmFeUD6\nraCRselQPfQN+UFUcZWLhuYzq6Thq1/57XRfS4RfbTRDV2C0yy0qP9By1JlCWFmj\nqxxyWVRcLmONgbiUnhOXkLw1KDNfDiDFizh269R7yaZtYqsSZYa7o77iASPkqRLa\nDIh5nGN1Hfy9w53xi/I40jdJEjbaVB/rY7YmzCzZQs0QxNR2aiMXrVGdM9W+7MBN\nAoEOFqzLk5B9gPoK0EoCa+KKGYhp3uDgSRg1ibptkfNTSfJKsBXRwZDdIbO3kmvP\nkzkJY0j+k5FFzo+rku3gYLLTUez/AIBBxRrar2I7gCxMuK+dxTAYZLRMBFAkeNNP\nljJl0QW45iQgxZ8svbeekHyHnoAFJ1ppwFkPJ+vUxIdY0YAam4BkVEx48Vx3QAQm\ny6Ldq/bvvwCK65+ZTkjNMpjEjpTdoJcuHuzyOXp2Rw/APz87M7LB44OI3NvCJHG9\nFTpWHadum7PoRIJIWiU2z58jh7/1Ywi+iMD4PCJLGx5GC53AtPs5cxvuSl43r26W\nxf5lVQoQwHJw7x0rHtdjN5DOYcs9bn4+o2pCRo6HD0likzGh1ACBKC6/uic+QF/6\nipq9pXgShHmxsMHmMIfo\n=bspX\n-----END PGP SIGNATURE-----\n","payload":"tree 31a6407b7b342e651500eadc61bdf5d42cf72eed\nparent 4a6bba936282fc7faa3770cffa76197e67a3bc38\nauthor Matt Ball <96152357+mball-agathos@users.noreply.github.com> 1756409170 -0600\ncommitter GitHub <noreply@github.com> 1756409170 +0000\n\nAdd support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","verified_at":"2025-08-28T19:26:27Z"}},"url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135","html_url":"https://github.com/PyGithub/PyGithub/commit/e359b83a04e8f34bedab0f2180169012d238a135","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135/comments","author":{"login":"mball-agathos","id":96152357,"node_id":"U_kgDOBbsrJQ","avatar_url":"https://avatars.githubusercontent.com/u/96152357?v=4","gravatar_id":"","url":"https://api.github.com/users/mball-agathos","html_url":"https://github.com/mball-agathos","followers_url":"https://api.github.com/users/mball-agathos/followers","following_url":"https://api.github.com/users/mball-agathos/following{/other_user}","gists_url":"https://api.github.com/users/mball-agathos/gists{/gist_id}","starred_url":"https://api.github.com/users/mball-agathos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mball-agathos/subscriptions","organizations_url":"https://api.github.com/users/mball-agathos/orgs","repos_url":"https://api.github.com/users/mball-agathos/repos","events_url":"https://api.github.com/users/mball-agathos/events{/privacy}","received_events_url":"https://api.github.com/users/mball-agathos/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"4a6bba936282fc7faa3770cffa76197e67a3bc38","url":"https://api.github.com/repos/PyGithub/PyGithub/commits/4a6bba936282fc7faa3770cffa76197e67a3bc38","html_url":"https://github.com/PyGithub/PyGithub/commit/4a6bba936282fc7faa3770cffa76197e67a3bc38"}],"stats":{"total":153,"additions":152,"deletions":1},"files":[{"sha":"cf33e804ef4c854486b356fb130bef6c2f0ea5d6","filename":"tests/test_release_notes.yml","status":"added","additions":13,"deletions":0,"changes":13,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/tests%2Ftest_release_notes.yml","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/tests%2Ftest_release_notes.yml","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/tests%2Ftest_release_notes.yml?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -0,0 +1,13 @@\n+# This file is needed for generating release notes for the Repository::testGenerateReleaseNotesWithAllArguments test\n+# See https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes\n+\n+# This is used to generate the ReplayData as used by Repository::testGenerateReleaseNotesWithAllArguments.\n+# If you need to regenerate this ReplayData files, you will need to copy this yaml file\n+# into the `.github` directory on the main branch of your forked repository.\n+# The GitHub API expects to see this file in the `.github` directory when generating release notes.\n+\n+changelog:\n+  categories:\n+    - title: Features\n+      labels:\n+        - '*'"}]}

https
GET
api.github.com
None
/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=2
{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Wed, 08 Oct 2025 12:40:32 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"6ba1dd93c9bbf4f0036fad1cf68de4926be6bc0c92d622f3585c89c4a7b640dc"'), ('Last-Modified', 'Thu, 28 Aug 2025 19:26:10 GMT'), ('github-authentication-token-expiration', '2025-11-13 21:31:56 +0100'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=1>; rel="prev", <https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=3>; rel="next", <https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=3>; rel="last", <https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=1>; rel="first"'), ('x-accepted-github-permissions', 'contents=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4994'), ('X-RateLimit-Reset', '1759927422'), ('X-RateLimit-Used', '6'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'FBB7:2C202C:2529E6A:22E93B2:68E65BBF')]
{"sha":"e359b83a04e8f34bedab0f2180169012d238a135","node_id":"C_kwDOADYVqtoAKGUzNTliODNhMDRlOGYzNGJlZGFiMGYyMTgwMTY5MDEyZDIzOGExMzU","commit":{"author":{"name":"Matt Ball","email":"96152357+mball-agathos@users.noreply.github.com","date":"2025-08-28T19:26:10Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2025-08-28T19:26:10Z"},"message":"Add support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","tree":{"sha":"31a6407b7b342e651500eadc61bdf5d42cf72eed","url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees/31a6407b7b342e651500eadc61bdf5d42cf72eed"},"url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits/e359b83a04e8f34bedab0f2180169012d238a135","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJosK1jCRC1aQ7uu5UhlAAAmsoQABeT6niMpp83ZpDXpGsUqzFL\n9QJWQdwxttog7gefE5I6fgfE9z2PU1pWryhyOYVVpNEa4mAp9nvT69gOcpmFeUD6\nraCRselQPfQN+UFUcZWLhuYzq6Thq1/57XRfS4RfbTRDV2C0yy0qP9By1JlCWFmj\nqxxyWVRcLmONgbiUnhOXkLw1KDNfDiDFizh269R7yaZtYqsSZYa7o77iASPkqRLa\nDIh5nGN1Hfy9w53xi/I40jdJEjbaVB/rY7YmzCzZQs0QxNR2aiMXrVGdM9W+7MBN\nAoEOFqzLk5B9gPoK0EoCa+KKGYhp3uDgSRg1ibptkfNTSfJKsBXRwZDdIbO3kmvP\nkzkJY0j+k5FFzo+rku3gYLLTUez/AIBBxRrar2I7gCxMuK+dxTAYZLRMBFAkeNNP\nljJl0QW45iQgxZ8svbeekHyHnoAFJ1ppwFkPJ+vUxIdY0YAam4BkVEx48Vx3QAQm\ny6Ldq/bvvwCK65+ZTkjNMpjEjpTdoJcuHuzyOXp2Rw/APz87M7LB44OI3NvCJHG9\nFTpWHadum7PoRIJIWiU2z58jh7/1Ywi+iMD4PCJLGx5GC53AtPs5cxvuSl43r26W\nxf5lVQoQwHJw7x0rHtdjN5DOYcs9bn4+o2pCRo6HD0likzGh1ACBKC6/uic+QF/6\nipq9pXgShHmxsMHmMIfo\n=bspX\n-----END PGP SIGNATURE-----\n","payload":"tree 31a6407b7b342e651500eadc61bdf5d42cf72eed\nparent 4a6bba936282fc7faa3770cffa76197e67a3bc38\nauthor Matt Ball <96152357+mball-agathos@users.noreply.github.com> 1756409170 -0600\ncommitter GitHub <noreply@github.com> 1756409170 +0000\n\nAdd support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","verified_at":"2025-08-28T19:26:27Z"}},"url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135","html_url":"https://github.com/PyGithub/PyGithub/commit/e359b83a04e8f34bedab0f2180169012d238a135","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135/comments","author":{"login":"mball-agathos","id":96152357,"node_id":"U_kgDOBbsrJQ","avatar_url":"https://avatars.githubusercontent.com/u/96152357?v=4","gravatar_id":"","url":"https://api.github.com/users/mball-agathos","html_url":"https://github.com/mball-agathos","followers_url":"https://api.github.com/users/mball-agathos/followers","following_url":"https://api.github.com/users/mball-agathos/following{/other_user}","gists_url":"https://api.github.com/users/mball-agathos/gists{/gist_id}","starred_url":"https://api.github.com/users/mball-agathos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mball-agathos/subscriptions","organizations_url":"https://api.github.com/users/mball-agathos/orgs","repos_url":"https://api.github.com/users/mball-agathos/repos","events_url":"https://api.github.com/users/mball-agathos/events{/privacy}","received_events_url":"https://api.github.com/users/mball-agathos/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"4a6bba936282fc7faa3770cffa76197e67a3bc38","url":"https://api.github.com/repos/PyGithub/PyGithub/commits/4a6bba936282fc7faa3770cffa76197e67a3bc38","html_url":"https://github.com/PyGithub/PyGithub/commit/4a6bba936282fc7faa3770cffa76197e67a3bc38"}],"stats":{"total":153,"additions":152,"deletions":1},"files":[{"sha":"71c53ad1b6acb3291b60a42493c295f6f6a398d9","filename":"tests/ReplayData/Repository.testGenerateReleaseNotes.txt","status":"added","additions":10,"deletions":0,"changes":10,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/tests%2FReplayData%2FRepository.testGenerateReleaseNotes.txt","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/tests%2FReplayData%2FRepository.testGenerateReleaseNotes.txt","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/tests%2FReplayData%2FRepository.testGenerateReleaseNotes.txt?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -0,0 +1,10 @@\n+https\n+POST\n+api.github.com\n+None\n+/repos/PyGithub/PyGithub/releases/generate-notes\n+{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}\n+{\"tag_name\": \"vX.Y.Z-by-PyGithub-acctest\"}\n+200\n+[('Date', 'Sun, 18 Aug 2024 23:56:45 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/\"f05115701836368bcab805d829f1453234af1eea7b25bf97c3effa382838f562\"'), ('X-OAuth-Scopes', 'repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-11-14 21:03:22 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4982'), ('X-RateLimit-Reset', '1724025644'), ('X-RateLimit-Used', '18'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', \"default-src 'none'\"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('X-GitHub-Request-Id', '86EA:313F29:56B6E84:A55D123:66C28A3C'), ('Server', 'github.com')]\n+{\"name\":\"vX.Y.Z-by-PyGithub-acctest\",\"body\":\"**Full Changelog**: https://github.com/PyGithub/PyGithub/commits/vX.Y.Z-by-PyGithub-acctest\"}"},{"sha":"405365135a982d3e906c465c23056cd03e18b0b4","filename":"tests/ReplayData/Repository.testGenerateReleaseNotesWithAllArguments.txt","status":"added","additions":21,"deletions":0,"changes":21,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/tests%2FReplayData%2FRepository.testGenerateReleaseNotesWithAllArguments.txt","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/tests%2FReplayData%2FRepository.testGenerateReleaseNotesWithAllArguments.txt","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/tests%2FReplayData%2FRepository.testGenerateReleaseNotesWithAllArguments.txt?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -0,0 +1,21 @@\n+https\n+POST\n+api.github.com\n+None\n+/repos/PyGithub/PyGithub/releases\n+{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}\n+{\"tag_name\": \"vX.Y.Z-by-PyGithub-acctest-previous\", \"draft\": false, \"prerelease\": false, \"generate_release_notes\": false, \"name\": \"vX.Y.Z: PyGithub acctest\", \"body\": \"This release is created by PyGithub\", \"make_latest\": \"true\"}\n+201\n+[('Date', 'Mon, 19 Aug 2024 00:34:07 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Content-Length', '1900'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', '\"060006433f9b7748cbf7198d4f0d820482591704be702c1169dd21489da95c5d\"'), ('X-OAuth-Scopes', 'repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-11-14 21:03:22 UTC'), ('Location', 'https://api.github.com/repos/PyGithub/PyGithub/releases/170779796'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4965'), ('X-RateLimit-Reset', '1724029435'), ('X-RateLimit-Used', '35'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', \"default-src 'none'\"), ('X-GitHub-Request-Id', 'D6C0:2B9908:1D4A719:37A4849:66C292FE'), ('Server', 'github.com')]\n+{\"url\":\"https://api.github.com/repos/PyGithub/PyGithub/releases/170779796\",\"assets_url\":\"https://api.github.com/repos/PyGithub/PyGithub/releases/170779796/assets\",\"upload_url\":\"https://uploads.github.com/repos/PyGithub/PyGithub/releases/170779796/assets{?name,label}\",\"html_url\":\"https://github.com/PyGithub/PyGithub/releases/tag/vX.Y.Z-by-PyGithub-acctest-previous\",\"id\":170779796,\"author\":{\"login\":\"PyGithub\",\"id\":96152357,\"node_id\":\"U_kgDOBbsrJQ\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/96152357?v=4\",\"gravatar_id\":\"\",\"url\":\"https://api.github.com/users/PyGithub\",\"html_url\":\"https://github.com/PyGithub\",\"followers_url\":\"https://api.github.com/users/PyGithub/followers\",\"following_url\":\"https://api.github.com/users/PyGithub/following{/other_user}\",\"gists_url\":\"https://api.github.com/users/PyGithub/gists{/gist_id}\",\"starred_url\":\"https://api.github.com/users/PyGithub/starred{/owner}{/repo}\",\"subscriptions_url\":\"https://api.github.com/users/PyGithub/subscriptions\",\"organizations_url\":\"https://api.github.com/users/PyGithub/orgs\",\"repos_url\":\"https://api.github.com/users/PyGithub/repos\",\"events_url\":\"https://api.github.com/users/PyGithub/events{/privacy}\",\"received_events_url\":\"https://api.github.com/users/PyGithub/received_events\",\"type\":\"User\",\"site_admin\":false},\"node_id\":\"RE_kwDOMlKsTM4KLeSU\",\"tag_name\":\"vX.Y.Z-by-PyGithub-acctest-previous\",\"target_commitish\":\"main\",\"name\":\"vX.Y.Z: PyGithub acctest\",\"draft\":false,\"prerelease\":false,\"created_at\":\"2024-08-19T00:25:59Z\",\"published_at\":\"2024-08-19T00:34:06Z\",\"assets\":[],\"tarball_url\":\"https://api.github.com/repos/PyGithub/PyGithub/tarball/vX.Y.Z-by-PyGithub-acctest-previous\",\"zipball_url\":\"https://api.github.com/repos/PyGithub/PyGithub/zipball/vX.Y.Z-by-PyGithub-acctest-previous\",\"body\":\"This release is created by PyGithub\"}\n+\n+https\n+POST\n+api.github.com\n+None\n+/repos/PyGithub/PyGithub/releases/generate-notes\n+{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}\n+{\"tag_name\": \"vX.Y.Z-by-PyGithub-acctest\", \"previous_tag_name\": \"vX.Y.Z-by-PyGithub-acctest-previous\", \"target_commitish\": \"main\", \"configuration_file_path\": \"tests/test_release_notes.yml\"}\n+200\n+[('Date', 'Mon, 19 Aug 2024 00:34:07 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/\"9cdecc62d8152adc4ab619d18dd9f194f4f76d5dba91ba53c92c9def3856f620\"'), ('X-OAuth-Scopes', 'repo'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-11-14 21:03:22 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4964'), ('X-RateLimit-Reset', '1724029435'), ('X-RateLimit-Used', '36'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', \"default-src 'none'\"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('X-GitHub-Request-Id', 'D6C4:4388A:1BF3BE3:3510B09:66C292FF'), ('Server', 'github.com')]\n+{\"name\":\"vX.Y.Z-by-PyGithub-acctest\",\"body\":\"<!-- Release notes generated using configuration in tests/test_release_notes.yml at main -->\\n\\n\\n\\n**Full Changelog**: https://github.com/PyGithub/PyGithub/compare/vX.Y.Z-by-PyGithub-acctest-previous...vX.Y.Z-by-PyGithub-acctest\"}"},{"sha":"56f166cff6326e38855c137610cf977dc79548e6","filename":"tests/Repository.py","status":"modified","additions":26,"deletions":0,"changes":26,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/tests%2FRepository.py","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/tests%2FRepository.py","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/tests%2FRepository.py?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -537,6 +537,32 @@ def testCreateGitReleaseWithAllArguments(self):\n         tag = [tag for tag in self.repo.get_tags() if tag.name == \"vX.Y.Z-by-PyGithub-acctest2\"].pop()\n         self.assertEqual(tag.commit.sha, \"da9a285fd8b782461e56cba39ae8d2fa41ca7cdc\")\n \n+    def testGenerateReleaseNotes(self):\n+        notes = self.repo.generate_release_notes(\"vX.Y.Z-by-PyGithub-acctest\")\n+        self.assertEqual(notes.name, \"vX.Y.Z-by-PyGithub-acctest\")\n+        self.assertEqual(\n+            notes.body, \"**Full Changelog**: https://github.com/PyGithub/PyGithub/commits/vX.Y.Z-by-PyGithub-acctest\"\n+        )\n+        self.assertEqual(\n+            repr(notes),\n+            'GeneratedReleaseNotes(name=\"vX.Y.Z-by-PyGithub-acctest\", body=\"**Full Changelog**: https://github.com/PyGithub/PyGithub/commits/vX.Y.Z-by-PyGithub-acctest\")',\n+        )\n+\n+    def testGenerateReleaseNotesWithAllArguments(self):\n+        self.repo.create_git_release(\n+            tag=\"vX.Y.Z-by-PyGithub-acctest-previous\",\n+            name=\"vX.Y.Z: PyGithub acctest\",\n+            message=\"This release is created by PyGithub\",\n+        )\n+        notes = self.repo.generate_release_notes(\n+            tag_name=\"vX.Y.Z-by-PyGithub-acctest\",\n+            previous_tag_name=\"vX.Y.Z-by-PyGithub-acctest-previous\",\n+            target_commitish=\"main\",\n+            configuration_file_path=\"tests/test_release_notes.yml\",\n+        )\n+        self.assertEqual(notes.name, \"vX.Y.Z-by-PyGithub-acctest\")\n+        self.assertIn(\"Release notes generated using configuration in tests/test_release_notes.yml at main\", notes.body)\n+\n     def testCreateGitTag(self):\n         tag = self.repo.create_git_tag(\n             \"TaggedByPyGithub\","}]}

https
GET
api.github.com
None
/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=1
{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
None
200
[('Date', 'Wed, 08 Oct 2025 12:40:32 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('Cache-Control', 'private, max-age=60, s-maxage=60'), ('Vary', 'Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With'), ('ETag', 'W/"3abfee8249f9103269d3c489cbd2681770ecd0c882748d94e12a6d2972613972"'), ('Last-Modified', 'Thu, 28 Aug 2025 19:26:10 GMT'), ('github-authentication-token-expiration', '2025-11-13 21:31:56 +0100'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=2>; rel="next", <https://api.github.com/repositories/3544490/commits/e359b83a04e8f34bedab0f2180169012d238a135?per_page=3&page=3>; rel="last"'), ('x-accepted-github-permissions', 'contents=read'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4993'), ('X-RateLimit-Reset', '1759927422'), ('X-RateLimit-Used', '7'), ('X-RateLimit-Resource', 'core'), ('Access-Control-Expose-Headers', 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset'), ('Access-Control-Allow-Origin', '*'), ('Strict-Transport-Security', 'max-age=31536000; includeSubdomains; preload'), ('X-Frame-Options', 'deny'), ('X-Content-Type-Options', 'nosniff'), ('X-XSS-Protection', '0'), ('Referrer-Policy', 'origin-when-cross-origin, strict-origin-when-cross-origin'), ('Content-Security-Policy', "default-src 'none'"), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', 'EB7F:3EC15F:24A06D3:2250DC5:68E65BC0')]
{"sha":"e359b83a04e8f34bedab0f2180169012d238a135","node_id":"C_kwDOADYVqtoAKGUzNTliODNhMDRlOGYzNGJlZGFiMGYyMTgwMTY5MDEyZDIzOGExMzU","commit":{"author":{"name":"Matt Ball","email":"96152357+mball-agathos@users.noreply.github.com","date":"2025-08-28T19:26:10Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2025-08-28T19:26:10Z"},"message":"Add support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","tree":{"sha":"31a6407b7b342e651500eadc61bdf5d42cf72eed","url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees/31a6407b7b342e651500eadc61bdf5d42cf72eed"},"url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits/e359b83a04e8f34bedab0f2180169012d238a135","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJosK1jCRC1aQ7uu5UhlAAAmsoQABeT6niMpp83ZpDXpGsUqzFL\n9QJWQdwxttog7gefE5I6fgfE9z2PU1pWryhyOYVVpNEa4mAp9nvT69gOcpmFeUD6\nraCRselQPfQN+UFUcZWLhuYzq6Thq1/57XRfS4RfbTRDV2C0yy0qP9By1JlCWFmj\nqxxyWVRcLmONgbiUnhOXkLw1KDNfDiDFizh269R7yaZtYqsSZYa7o77iASPkqRLa\nDIh5nGN1Hfy9w53xi/I40jdJEjbaVB/rY7YmzCzZQs0QxNR2aiMXrVGdM9W+7MBN\nAoEOFqzLk5B9gPoK0EoCa+KKGYhp3uDgSRg1ibptkfNTSfJKsBXRwZDdIbO3kmvP\nkzkJY0j+k5FFzo+rku3gYLLTUez/AIBBxRrar2I7gCxMuK+dxTAYZLRMBFAkeNNP\nljJl0QW45iQgxZ8svbeekHyHnoAFJ1ppwFkPJ+vUxIdY0YAam4BkVEx48Vx3QAQm\ny6Ldq/bvvwCK65+ZTkjNMpjEjpTdoJcuHuzyOXp2Rw/APz87M7LB44OI3NvCJHG9\nFTpWHadum7PoRIJIWiU2z58jh7/1Ywi+iMD4PCJLGx5GC53AtPs5cxvuSl43r26W\nxf5lVQoQwHJw7x0rHtdjN5DOYcs9bn4+o2pCRo6HD0likzGh1ACBKC6/uic+QF/6\nipq9pXgShHmxsMHmMIfo\n=bspX\n-----END PGP SIGNATURE-----\n","payload":"tree 31a6407b7b342e651500eadc61bdf5d42cf72eed\nparent 4a6bba936282fc7faa3770cffa76197e67a3bc38\nauthor Matt Ball <96152357+mball-agathos@users.noreply.github.com> 1756409170 -0600\ncommitter GitHub <noreply@github.com> 1756409170 +0000\n\nAdd support to generate release notes (#3022)\n\nResolves: #2794\n\nContext:\nhttps://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release\n\n---------\n\nCo-authored-by: Enrico Minack <github@enrico.minack.dev>","verified_at":"2025-08-28T19:26:27Z"}},"url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135","html_url":"https://github.com/PyGithub/PyGithub/commit/e359b83a04e8f34bedab0f2180169012d238a135","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/commits/e359b83a04e8f34bedab0f2180169012d238a135/comments","author":{"login":"mball-agathos","id":96152357,"node_id":"U_kgDOBbsrJQ","avatar_url":"https://avatars.githubusercontent.com/u/96152357?v=4","gravatar_id":"","url":"https://api.github.com/users/mball-agathos","html_url":"https://github.com/mball-agathos","followers_url":"https://api.github.com/users/mball-agathos/followers","following_url":"https://api.github.com/users/mball-agathos/following{/other_user}","gists_url":"https://api.github.com/users/mball-agathos/gists{/gist_id}","starred_url":"https://api.github.com/users/mball-agathos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mball-agathos/subscriptions","organizations_url":"https://api.github.com/users/mball-agathos/orgs","repos_url":"https://api.github.com/users/mball-agathos/repos","events_url":"https://api.github.com/users/mball-agathos/events{/privacy}","received_events_url":"https://api.github.com/users/mball-agathos/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"4a6bba936282fc7faa3770cffa76197e67a3bc38","url":"https://api.github.com/repos/PyGithub/PyGithub/commits/4a6bba936282fc7faa3770cffa76197e67a3bc38","html_url":"https://github.com/PyGithub/PyGithub/commit/4a6bba936282fc7faa3770cffa76197e67a3bc38"}],"stats":{"total":153,"additions":152,"deletions":1},"files":[{"sha":"f821990c6fbc8180f26382685c9fb6025eae4ae9","filename":"github/GeneratedReleaseNotes.py","status":"added","additions":43,"deletions":0,"changes":43,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/github%2FGeneratedReleaseNotes.py","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/github%2FGeneratedReleaseNotes.py","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/github%2FGeneratedReleaseNotes.py?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -0,0 +1,43 @@\n+from __future__ import annotations\n+\n+from typing import Any\n+\n+from github.GithubObject import (\n+    Attribute,\n+    NonCompletableGithubObject,\n+    NotSet,\n+)\n+\n+\n+class GeneratedReleaseNotes(NonCompletableGithubObject):\n+    \"\"\"\n+    This class represents the release notes generated by the release/generate-notes REST API endpoint.\n+\n+    The reference can be found here:\n+    https://docs.github.com/en/rest/releases/releases#generate-release-notes-content-for-a-release\n+\n+    The OpenAPI schema can be found at\n+    - /components/schemas/release-notes-content\n+\n+    \"\"\"\n+\n+    def _initAttributes(self) -> None:\n+        self._body: Attribute[str] = NotSet\n+        self._name: Attribute[str] = NotSet\n+\n+    def __repr__(self) -> str:\n+        return self.get__repr__({\"name\": self._name.value, \"body\": self._body.value})\n+\n+    @property\n+    def body(self) -> str:\n+        return self._body.value\n+\n+    @property\n+    def name(self) -> str:\n+        return self._name.value\n+\n+    def _useAttributes(self, attributes: dict[str, Any]) -> None:\n+        if \"body\" in attributes:\n+            self._body = self._makeStringAttribute(attributes[\"body\"])\n+        if \"name\" in attributes:\n+            self._name = self._makeStringAttribute(attributes[\"name\"])"},{"sha":"88f60f546ebc64d1f448327f25b92ca814fb964a","filename":"github/Repository.py","status":"modified","additions":38,"deletions":0,"changes":38,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/github%2FRepository.py","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/github%2FRepository.py","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/github%2FRepository.py?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -248,6 +248,7 @@\n import github.WorkflowRun\n from github import Consts\n from github.Environment import Environment\n+from github.GeneratedReleaseNotes import GeneratedReleaseNotes\n from github.GithubObject import (\n     Attribute,\n     CompletableGithubObject,\n@@ -1549,6 +1550,43 @@ def create_git_release(\n         headers, data = self._requester.requestJsonAndCheck(\"POST\", f\"{self.url}/releases\", input=post_parameters)\n         return github.GitRelease.GitRelease(self._requester, headers, data, completed=True)\n \n+    def generate_release_notes(\n+        self,\n+        tag_name: str,\n+        previous_tag_name: Opt[str] = NotSet,\n+        target_commitish: Opt[str] = NotSet,\n+        configuration_file_path: Opt[str] = NotSet,\n+    ) -> GeneratedReleaseNotes:\n+        \"\"\"\n+        :calls: `POST /repos/{owner}/{repo}/releases/generate-notes <https://docs.github.com/en/rest/releases/releases#generate-release-notes-content-for-a-release>`\n+        :param tag_name: The tag name for the release. This can be an existing tag or a new one.\n+        :param previous_tag_name: The name of the previous tag to use as the starting point for the release notes. Use to manually specify the range for the set of changes considered as part this release.\n+        :param target_commitish: Specifies the commitish value that will be the target for the release's tag. Required if the supplied tag_name does not reference an existing tag. Ignored if the tag_name already exists.\n+        :param configuration_file_path: Specifies a path to a file in the repository containing configuration settings used for generating the release notes. If unspecified, the configuration file located in the repository at '.github/release.yml' or '.github/release.yaml' will be used. If that is not present, the default configuration will be used.\n+        :rytpe: :class:`GeneratedReleaseNotes`\n+        \"\"\"\n+        assert isinstance(tag_name, str), tag_name\n+        assert isinstance(previous_tag_name, str) or is_optional(previous_tag_name, str), previous_tag_name\n+        assert isinstance(target_commitish, str) or is_optional(target_commitish, str), target_commitish\n+        assert isinstance(configuration_file_path, str) or is_optional(\n+            configuration_file_path, str\n+        ), configuration_file_path\n+\n+        post_parameters = NotSet.remove_unset_items(\n+            {\n+                \"tag_name\": tag_name,\n+                \"previous_tag_name\": previous_tag_name,\n+                \"target_commitish\": target_commitish,\n+                \"configuration_file_path\": configuration_file_path,\n+            }\n+        )\n+\n+        headers, data = self._requester.requestJsonAndCheck(\n+            \"POST\", f\"{self.url}/releases/generate-notes\", input=post_parameters\n+        )\n+\n+        return GeneratedReleaseNotes(self._requester, headers, data)\n+\n     def create_git_tag(\n         self,\n         tag: str,"},{"sha":"ea6623890081c67fe3dbae69d7caf013e58afb75","filename":"pyproject.toml","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/PyGithub/PyGithub/blob/e359b83a04e8f34bedab0f2180169012d238a135/pyproject.toml","raw_url":"https://github.com/PyGithub/PyGithub/raw/e359b83a04e8f34bedab0f2180169012d238a135/pyproject.toml","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/pyproject.toml?ref=e359b83a04e8f34bedab0f2180169012d238a135","patch":"@@ -82,7 +82,7 @@ quiet-level = 3\n #  https://github.com/codespell-project/codespell/issues/2839#issuecomment-1731601603\n # also adding links until they ignored by its: nature\n #  https://github.com/codespell-project/codespell/issues/2243#issuecomment-1732019960\n-ignore-words-list = \"bloaded,nto,pullrequest,pullrequests,thi,tim,wan,Wan,chang,chang,manuel\"\n+ignore-words-list = \"bloaded,nto,pullrequest,pullrequests,thi,tim,wan,Wan,chang,chang,manuel,commitish\"\n \n [tool.ruff]\n line-length = 120"}]}
