Repository: PyGithub/PyGithub (language: python)

Issue:
Support GraphQL Repository Discussions
Is there a plan to support repository discussions? So not teams but repositories.

Example: https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions


Discussion / hints:
Looks like this project has never called into the GraphQL API, and the REST API does not seem to provide this feature yet.
PyGithub now has its first GraphQL call, see https://github.com/PyGithub/PyGithub/commit/232df79a2947dc96363bdc6f51a6f446ff2b241f#diff-90017b18548bd848900b7cffd7fe86a610dc20e5d228663dfb429a47cdf65a20R767-R772 for reference.

Fix patch:
diff --git a/github/DiscussionBase.py b/github/DiscussionBase.py
new file mode 100644
index 000000000..f299de2cc
--- /dev/null
+++ b/github/DiscussionBase.py
@@ -0,0 +1,117 @@
+############################ Copyrights and license ############################
+#                                                                              #
+# Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
+#                                                                              #
+# This file is part of PyGithub.                                               #
+# http://pygithub.readthedocs.io/                                              #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+################################################################################
+
+from __future__ import annotations
+
+from datetime import datetime
+from typing import Any
+
+import github.GithubObject
+import github.NamedUser
+from github.GithubObject import Attribute, CompletableGithubObject, NotSet
+
+
+class DiscussionBase(CompletableGithubObject):
+    """
+    This class represents a the shared attributes between RepositoryDiscussion and TeamDiscussion
+    https://docs.github.com/en/graphql/reference/objects#discussion
+    https://docs.github.com/en/rest/reference/teams#discussions
+    """
+
+    def _initAttributes(self) -> None:
+        self._author: Attribute[github.NamedUser.NamedUser | None] = NotSet
+        self._body: Attribute[str] = NotSet
+        self._body_html: Attribute[str] = NotSet
+        self._created_at: Attribute[datetime] = NotSet
+        self._last_edited_at: Attribute[datetime] = NotSet
+        self._number: Attribute[int] = NotSet
+        self._title: Attribute[str] = NotSet
+        self._updated_at: Attribute[datetime] = NotSet
+        self._url: Attribute[str] = NotSet
+
+    def __repr__(self) -> str:
+        return self.get__repr__({"number": self._number.value, "title": self._title.value})
+
+    @property
+    def author(self) -> github.NamedUser.NamedUser | None:
+        self._completeIfNotSet(self._author)
+        return self._author.value
+
+    @property
+    def body(self) -> str:
+        self._completeIfNotSet(self._body)
+        return self._body.value
+
+    @property
+    def body_html(self) -> str:
+        self._completeIfNotSet(self._body_html)
+        return self._body_html.value
+
+    @property
+    def created_at(self) -> datetime:
+        self._completeIfNotSet(self._created_at)
+        return self._created_at.value
+
+    @property
+    def last_edited_at(self) -> datetime:
+        self._completeIfNotSet(self._last_edited_at)
+        return self._last_edited_at.value
+
+    @property
+    def number(self) -> int:
+        self._completeIfNotSet(self._number)
+        return self._number.value
+
+    @property
+    def title(self) -> str:
+        self._completeIfNotSet(self._title)
+        return self._title.value
+
+    @property
+    def updated_at(self) -> datetime:
+        self._completeIfNotSet(self._updated_at)
+        return self._updated_at.value
+
+    @property
+    def url(self) -> str:
+        self._completeIfNotSet(self._url)
+        return self._url.value
+
+    def _useAttributes(self, attributes: dict[str, Any]) -> None:
+        if "author" in attributes:  # pragma no branch
+            self._author = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["author"])
+        if "body" in attributes:  # pragma no branch
+            self._body = self._makeStringAttribute(attributes["body"])
+        if "body_html" in attributes:  # pragma no branch
+            self._body_html = self._makeStringAttribute(attributes["body_html"])
+        if "created_at" in attributes:  # pragma no branch
+            self._created_at = self._makeDatetimeAttribute(attributes["created_at"])
+        if "last_edited_at" in attributes:  # pragma no branch
+            self._last_edited_at = self._makeDatetimeAttribute(attributes["last_edited_at"])
+        if "number" in attributes:  # pragma no branch
+            self._number = self._makeIntAttribute(attributes["number"])
+        if "title" in attributes:
+            self._title = self._makeStringAttribute(attributes["title"])
+        if "updated_at" in attributes:  # pragma no branch
+            self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"])
+        if "url" in attributes:  # pragma no branch
+            self._url = self._makeStringAttribute(attributes["url"])
diff --git a/github/DiscussionCommentBase.py b/github/DiscussionCommentBase.py
new file mode 100644
index 000000000..1acad9878
--- /dev/null
+++ b/github/DiscussionCommentBase.py
@@ -0,0 +1,117 @@
+############################ Copyrights and license ############################
+#                                                                              #
+# Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
+#                                                                              #
+# This file is part of PyGithub.                                               #
+# http://pygithub.readthedocs.io/                                              #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+################################################################################
+
+from __future__ import annotations
+
+from datetime import datetime
+from typing import Any
+
+import github.GithubObject
+import github.NamedUser
+from github.GithubObject import Attribute, CompletableGithubObject, NotSet
+
+
+class DiscussionCommentBase(CompletableGithubObject):
+    """
+    This class represents a the shared attributes between RepositoryDiscussionComment and TeamDiscussionComment
+    https://docs.github.com/en/graphql/reference/objects#discussioncomment
+    https://docs.github.com/de/rest/teams/discussion-comments
+    """
+
+    def _initAttributes(self) -> None:
+        self._author: Attribute[github.NamedUser.NamedUser | None] = NotSet
+        self._body: Attribute[str] = NotSet
+        self._body_html: Attribute[str] = NotSet
+        self._created_at: Attribute[datetime] = NotSet
+        self._html_url: Attribute[str] = NotSet
+        self._last_edited_at: Attribute[datetime] = NotSet
+        self._node_id: Attribute[str] = NotSet
+        self._updated_at: Attribute[datetime] = NotSet
+        self._url: Attribute[str] = NotSet
+
+    def __repr__(self) -> str:
+        return self.get__repr__({"node_id": self._node_id.value})
+
+    @property
+    def author(self) -> github.NamedUser.NamedUser | None:
+        self._completeIfNotSet(self._author)
+        return self._author.value
+
+    @property
+    def body(self) -> str:
+        self._completeIfNotSet(self._body)
+        return self._body.value
+
+    @property
+    def body_html(self) -> str:
+        self._completeIfNotSet(self._body_html)
+        return self._body_html.value
+
+    @property
+    def created_at(self) -> datetime:
+        self._completeIfNotSet(self._created_at)
+        return self._created_at.value
+
+    @property
+    def html_url(self) -> str:
+        self._completeIfNotSet(self._html_url)
+        return self._html_url.value
+
+    @property
+    def last_edited_at(self) -> datetime:
+        self._completeIfNotSet(self._last_edited_at)
+        return self._last_edited_at.value
+
+    @property
+    def node_id(self) -> str:
+        self._completeIfNotSet(self._node_id)
+        return self._node_id.value
+
+    @property
+    def updated_at(self) -> datetime:
+        self._completeIfNotSet(self._updated_at)
+        return self._updated_at.value
+
+    @property
+    def url(self) -> str:
+        self._completeIfNotSet(self._url)
+        return self._url.value
+
+    def _useAttributes(self, attributes: dict[str, Any]) -> None:
+        if "author" in attributes:  # pragma no branch
+            self._author = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["author"])
+        if "body" in attributes:  # pragma no branch
+            self._body = self._makeStringAttribute(attributes["body"])
+        if "body_html" in attributes:  # pragma no branch
+            self._body_html = self._makeStringAttribute(attributes["body_html"])
+        if "created_at" in attributes:  # pragma no branch
+            self._created_at = self._makeDatetimeAttribute(attributes["created_at"])
+        if "html_url" in attributes:  # pragma no branch
+            self._html_url = self._makeStringAttribute(attributes["html_url"])
+        if "last_edited_at" in attributes:  # pragma no branch
+            self._last_edited_at = self._makeDatetimeAttribute(attributes["last_edited_at"])
+        if "node_id" in attributes:  # pragma no branch
+            self._node_id = self._makeStringAttribute(attributes["node_id"])
+        if "updated_at" in attributes:  # pragma no branch
+            self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"])
+        if "url" in attributes:  # pragma no branch
+            self._url = self._makeStringAttribute(attributes["url"])
diff --git a/github/GithubIntegration.py b/github/GithubIntegration.py
index c15db303c..0d2106dbd 100644
--- a/github/GithubIntegration.py
+++ b/github/GithubIntegration.py
@@ -255,8 +255,10 @@ def get_installation(self, owner: str, repo: str) -> Installation:
         """
         Deprecated by get_repo_installation.
 
-        :calls: `GET /repos/{owner}/{repo}/installation
-        <https://docs.github.com/en/rest/reference/apps#get-a-repository-installation-for-the-authenticated-app>`
+        :calls:`GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-
+        installation-for-the-authenticated-app>`
+        :calls:`GET /repos/{owner}/{repo}/installation <https://docs.github.com/en/rest/reference/apps#get-a-repository-
+        installation-for-the-authenticated-app>`
 
         """
         owner = urllib.parse.quote(owner)
diff --git a/github/GithubObject.py b/github/GithubObject.py
index 14b0a5695..5517d87f5 100644
--- a/github/GithubObject.py
+++ b/github/GithubObject.py
@@ -48,11 +48,12 @@
 ################################################################################
 
 import email.utils
+import re
 import typing
 from datetime import datetime, timezone
 from decimal import Decimal
 from operator import itemgetter
-from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Type, Union
+from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Type, Union, overload
 
 from typing_extensions import Protocol, TypeGuard
 
@@ -139,6 +140,62 @@ def is_optional_list(v: Any, type: Union[Type, Tuple[Type, ...]]) -> bool:
     return isinstance(v, _NotSetType) or isinstance(v, list) and all(isinstance(element, type) for element in v)
 
 
+camel_to_snake_case_regexp = re.compile(r"(?<!^)(?=[A-Z])")
+
+
+@overload
+def as_rest_api_attributes(graphql_attributes: Dict[str, Any]) -> Dict[str, Any]:
+    ...
+
+
+@overload
+def as_rest_api_attributes(graphql_attributes: None) -> None:
+    ...
+
+
+def as_rest_api_attributes(graphql_attributes: Optional[Dict[str, Any]]) -> Optional[Dict[str, Any]]:
+    """
+    Converts attributes from GraphQL schema to REST API schema.
+
+    The GraphQL API uses lower camel case (e.g. createdAt), whereas REST API uses snake case (created_at). Initializing
+    REST API GithubObjects from GraphQL API attributes requires transformation provided by this method.
+
+    Further renames GraphQL attributes to REST API attributes where the case conversion is not sufficient. For example,
+    GraphQL attribute 'id' is equivalent to REST API attribute 'node_id'.
+
+    """
+    if graphql_attributes is None:
+        return None
+
+    attribute_translation = {
+        "id": "node_id",
+        "databaseId": "id",  # must be after 'id': 'node_id'!
+        "url": "html_url",
+    }
+
+    def translate(attr: str) -> str:
+        def un_capitalize(match: re.Match) -> str:
+            return match.group(1) + match.group(2).lower()
+
+        attr = attribute_translation.get(attr, attr)
+        attr = re.sub(r"([A-Z])([A-Z]+)", un_capitalize, attr)
+        attr = camel_to_snake_case_regexp.sub("_", attr)
+        attr = attr.lower()
+
+        return attr
+
+    return {
+        translate(k): as_rest_api_attributes(v)
+        if isinstance(v, dict)
+        else (as_rest_api_attributes_list(v) if isinstance(v, list) else v)
+        for k, v in graphql_attributes.items()
+    }
+
+
+def as_rest_api_attributes_list(graphql_attributes: List[Optional[Dict[str, Any]]]) -> List[Optional[Dict[str, Any]]]:
+    return [as_rest_api_attributes(v) if isinstance(v, dict) else v for v in graphql_attributes]
+
+
 class _ValuedAttribute(Attribute[T]):
     def __init__(self, value: T):
         self._value = value
@@ -172,6 +229,14 @@ class GithubObject:
     CHECK_AFTER_INIT_FLAG = False
     _url: Attribute[str]
 
+    @classmethod
+    def is_rest(cls) -> bool:
+        return not cls.is_graphql()
+
+    @classmethod
+    def is_graphql(cls) -> bool:
+        return False
+
     @classmethod
     def setCheckAfterInitFlag(cls, flag: bool) -> None:
         cls.CHECK_AFTER_INIT_FLAG = flag
@@ -397,6 +462,12 @@ def _completeIfNeeded(self) -> None:
         raise NotImplementedError("BUG: Not Implemented _completeIfNeeded")
 
 
+class GraphQlObject:
+    @classmethod
+    def is_graphql(cls) -> bool:
+        return True
+
+
 class NonCompletableGithubObject(GithubObject):
     def _completeIfNeeded(self) -> None:
         pass
diff --git a/github/MainClass.py b/github/MainClass.py
index 711d8b10a..01b3377d8 100644
--- a/github/MainClass.py
+++ b/github/MainClass.py
@@ -143,6 +143,7 @@
     from github.Project import Project
     from github.ProjectColumn import ProjectColumn
     from github.Repository import Repository
+    from github.RepositoryDiscussion import RepositoryDiscussion
     from github.Topic import Topic
 
 TGithubObject = TypeVar("TGithubObject", bound=GithubObject)
@@ -326,8 +327,7 @@ def get_rate_limit(self) -> RateLimit:
         """
         Rate limit status for different resources (core/search/graphql).
 
-        :calls: `GET /rate_limit
-        <https://docs.github.com/en/rest/reference/rate-limit>`_
+        :calls:`GET /rate_limit <https://docs.github.com/en/rest/reference/rate-limit>`_
 
         """
         headers, data = self.__requester.requestJsonAndCheck("GET", "/rate_limit")
@@ -468,6 +468,11 @@ def get_repos(
             url_parameters,
         )
 
+    def get_repository_discussion(self, node_id: str, discussion_graphql_schema: str) -> RepositoryDiscussion:
+        return self.__requester.graphql_node_class(
+            node_id, discussion_graphql_schema, github.RepositoryDiscussion.RepositoryDiscussion, "Discussion"
+        )
+
     def get_project(self, id: int) -> Project:
         """
         :calls: `GET /projects/{project_id} <https://docs.github.com/en/rest/reference/projects#get-a-project>`_
diff --git a/github/Repository.py b/github/Repository.py
index 6a44a371c..b41a8aef1 100644
--- a/github/Repository.py
+++ b/github/Repository.py
@@ -214,6 +214,7 @@
 import github.PullRequestComment
 import github.Referrer
 import github.RepositoryAdvisory
+import github.RepositoryDiscussion
 import github.RepositoryKey
 import github.RepositoryPreferences
 import github.Secret
@@ -293,6 +294,7 @@
     from github.PullRequest import PullRequest
     from github.PullRequestComment import PullRequestComment
     from github.Referrer import Referrer
+    from github.RepositoryDiscussion import RepositoryDiscussion
     from github.RepositoryKey import RepositoryKey
     from github.RepositoryPreferences import RepositoryPreferences
     from github.SecurityAndAnalysis import SecurityAndAnalysis
@@ -1047,6 +1049,8 @@ def updated_at(self) -> datetime:
 
     @property
     def url(self) -> str:
+        if is_undefined(self._url) and is_defined(self._owner) and is_defined(self._name):
+            self._url = self._makeStringAttribute(self._requester.base_url + f"/repos/{self.owner.login}/{self.name}")
         self._completeIfNotSet(self._url)
         return self._url.value
 
@@ -2332,6 +2336,51 @@ def create_deployment(
 
         return github.Deployment.Deployment(self._requester, headers, data, completed=True)
 
+    def get_discussions(
+        self,
+        discussion_graphql_schema: str,
+        *,
+        answered: bool | None = None,
+        category_id: str | None = None,
+        states: list[str] | None = None,
+    ) -> PaginatedList[RepositoryDiscussion]:
+        if not discussion_graphql_schema.startswith("\n"):
+            discussion_graphql_schema = f" {discussion_graphql_schema} "
+        query = (
+            """
+            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {
+              repository(name: $repo, owner: $owner) {
+                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {
+                  totalCount
+                  pageInfo {
+                    startCursor
+                    endCursor
+                    hasNextPage
+                    hasPreviousPage
+                  }
+                  nodes {"""
+            + discussion_graphql_schema
+            + """}
+                }
+              }
+            }
+            """
+        )
+        variables = {
+            "repo": self.name,
+            "owner": self.owner.login,
+            "answered": answered,
+            "category_id": category_id,
+            "states": states,
+        }
+        return PaginatedList(
+            github.RepositoryDiscussion.RepositoryDiscussion,
+            self._requester,
+            graphql_query=query,
+            graphql_variables=variables,
+            list_item=["repository", "discussions"],
+        )
+
     def get_top_referrers(self) -> None | list[Referrer]:
         """
         :calls: `GET /repos/{owner}/{repo}/traffic/popular/referrers <https://docs.github.com/en/rest/reference/repos#traffic>`_
diff --git a/github/RepositoryDiscussion.py b/github/RepositoryDiscussion.py
new file mode 100644
index 000000000..5c7624f86
--- /dev/null
+++ b/github/RepositoryDiscussion.py
@@ -0,0 +1,213 @@
+############################ Copyrights and license ############################
+#                                                                              #
+# Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
+#                                                                              #
+# This file is part of PyGithub.                                               #
+# http://pygithub.readthedocs.io/                                              #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+################################################################################
+
+from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any
+
+import github
+import github.Label
+import github.NamedUser
+import github.Reaction
+import github.Repository
+import github.RepositoryDiscussionCategory
+import github.RepositoryDiscussionComment
+from github.DiscussionBase import DiscussionBase
+from github.GithubObject import (
+    Attribute,
+    GraphQlObject,
+    NotSet,
+    as_rest_api_attributes,
+    as_rest_api_attributes_list,
+    is_undefined,
+)
+from github.PaginatedList import PaginatedList
+
+if TYPE_CHECKING:
+    from github.Label import Label
+    from github.NamedUser import NamedUser
+    from github.Reaction import Reaction
+    from github.Repository import Repository
+    from github.RepositoryDiscussionCategory import RepositoryDiscussionCategory
+    from github.RepositoryDiscussionComment import RepositoryDiscussionComment
+
+
+class RepositoryDiscussion(GraphQlObject, DiscussionBase):
+    """
+    This class represents GraphQL Discussion.
+
+    The reference can be found here
+    https://docs.github.com/en/graphql/reference/objects#discussion
+
+    """
+
+    def _initAttributes(self) -> None:
+        super()._initAttributes()
+        self._answer: Attribute[RepositoryDiscussionComment | None] = NotSet
+        self._body_text: Attribute[str] = NotSet
+        self._category: Attribute[RepositoryDiscussionCategory] = NotSet
+        self._comments_page = None
+        self._database_id: Attribute[int] = NotSet
+        self._editor: Attribute[NamedUser] = NotSet
+        self._id: Attribute[str] = NotSet
+        self._labels_page = None
+        self._reactions_page = None
+        self._repository: Attribute[Repository] = NotSet
+
+    @property
+    def answer(self) -> RepositoryDiscussionComment | None:
+        return self._answer.value
+
+    @property
+    def body_text(self) -> str:
+        return self._body_text.value
+
+    @property
+    def category(self) -> RepositoryDiscussionCategory:
+        return self._category.value
+
+    @property
+    def database_id(self) -> int:
+        return self._database_id.value
+
+    @property
+    def editor(self) -> NamedUser:
+        return self._editor.value
+
+    @property
+    def id(self) -> str:
+        return self._id.value
+
+    @property
+    def node_id(self) -> str:
+        return self.id
+
+    @property
+    def repository(self) -> Repository:
+        return self._repository.value
+
+    def get_comments(self, comment_graphql_schema: str) -> PaginatedList[RepositoryDiscussionComment]:
+        if self._comments_page is not None:
+            return PaginatedList(
+                github.RepositoryDiscussionComment.RepositoryDiscussionComment,
+                self._requester,
+                firstData=self._comments_page,
+                firstHeaders={},
+            )
+
+        if is_undefined(self._id):
+            raise RuntimeError("Retrieving discussion comments requires the discussion field 'id'")
+        if not comment_graphql_schema.startswith("\n"):
+            comment_graphql_schema = f" {comment_graphql_schema} "
+
+        query = (
+            """
+            query Q($discussionId: ID!, $first: Int, $last: Int, $before: String, $after: String) {
+              node(id: $discussionId) {
+                ... on Discussion {
+                  comments(first: $first, last: $last, before: $before, after: $after) {
+                    totalCount
+                    pageInfo {
+                      startCursor
+                      endCursor
+                      hasNextPage
+                      hasPreviousPage
+                    }
+                    nodes {"""
+            + comment_graphql_schema
+            + """}
+                  }
+                }
+              }
+            }"""
+        )
+        variables = {"discussionId": self.node_id}
+        return PaginatedList(
+            github.RepositoryDiscussionComment.RepositoryDiscussionComment,
+            self._requester,
+            graphql_query=query,
+            graphql_variables=variables,
+            list_item=["node", "comments"],
+        )
+
+    def get_labels(self) -> PaginatedList[Label]:
+        if self._labels_page is None:
+            raise RuntimeError("Fetching labels not implemented")
+        return PaginatedList(github.Label.Label, self._requester, firstData=self._labels_page, firstHeaders={})
+
+    def get_reactions(self) -> PaginatedList[Reaction]:
+        if self._reactions_page is None:
+            raise RuntimeError("Fetching reactions not implemented")
+        return PaginatedList(github.Reaction.Reaction, self._requester, firstData=self._reactions_page, firstHeaders={})
+
+    def add_comment(
+        self, body: str, reply_to: RepositoryDiscussionComment | str | None = None, output_schema: str = "id"
+    ) -> RepositoryDiscussionComment:
+        reply_to_id = (
+            reply_to.id
+            if isinstance(reply_to, github.RepositoryDiscussionComment.RepositoryDiscussionComment)
+            else reply_to
+        )
+        if not output_schema.startswith("\n"):
+            output_schema = f" {output_schema} "
+
+        variables = {"body": body, "discussionId": self.id, "replyToId": reply_to_id}
+        return self._requester.graphql_named_mutation_class(
+            "addDiscussionComment",
+            NotSet.remove_unset_items(variables),
+            f"comment {{{output_schema}}}",
+            "comment",
+            github.RepositoryDiscussionComment.RepositoryDiscussionComment,
+        )
+
+    def _useAttributes(self, attributes: dict[str, Any]) -> None:
+        # super class is a REST API GithubObject, attributes are coming from GraphQL
+        super()._useAttributes(as_rest_api_attributes(attributes))
+        if "answer" in attributes:  # pragma no branch
+            self._answer = self._makeClassAttribute(
+                github.RepositoryDiscussionComment.RepositoryDiscussionComment, attributes["answer"]
+            )
+        if "bodyText" in attributes:  # pragma no branch
+            self._body_text = self._makeStringAttribute(attributes["bodyText"])
+        if "category" in attributes:  # pragma no branch
+            self._category = self._makeClassAttribute(
+                github.RepositoryDiscussionCategory.RepositoryDiscussionCategory, attributes["category"]
+            )
+        if "comments" in attributes:  # pragma no branch
+            # comments are GraphQL API objects
+            self._comments_page = attributes["comments"]["nodes"]
+        if "databaseId" in attributes:  # pragma no branch
+            self._database_id = self._makeIntAttribute(attributes["databaseId"])
+        if "editor" in attributes:  # pragma no branch
+            self._editor = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["editor"])
+        if "id" in attributes:  # pragma no branch
+            self._id = self._makeStringAttribute(attributes["id"])
+        if "labels" in attributes:  # pragma no branch
+            # labels are REST API objects
+            self._labels_page = as_rest_api_attributes_list(attributes["labels"]["nodes"])  # type: ignore
+        if "reactions" in attributes:  # pragma no branch
+            # reactions are REST API objects
+            self._reactions_page = as_rest_api_attributes_list(attributes["reactions"]["nodes"])  # type: ignore
+        if "repository" in attributes:  # pragma no branch
+            self._repository = self._makeClassAttribute(
+                github.Repository.Repository, as_rest_api_attributes(attributes["repository"])
+            )
diff --git a/github/RepositoryDiscussionCategory.py b/github/RepositoryDiscussionCategory.py
new file mode 100644
index 000000000..5f7833166
--- /dev/null
+++ b/github/RepositoryDiscussionCategory.py
@@ -0,0 +1,123 @@
+############################ Copyrights and license ############################
+#                                                                              #
+# Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
+#                                                                              #
+# This file is part of PyGithub.                                               #
+# http://pygithub.readthedocs.io/                                              #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+################################################################################
+
+from __future__ import annotations
+
+from datetime import datetime
+from typing import TYPE_CHECKING, Any
+
+import github.Reaction
+from github.GithubObject import Attribute, GraphQlObject, NonCompletableGithubObject, NotSet, as_rest_api_attributes
+
+if TYPE_CHECKING:
+    from github.Repository import Repository
+
+
+class RepositoryDiscussionCategory(GraphQlObject, NonCompletableGithubObject):
+    """
+    This class represents GraphQL DiscussionCategory.
+
+    The reference can be found here
+    https://docs.github.com/en/graphql/reference/objects#discussioncategory
+
+    """
+
+    def _initAttributes(self) -> None:
+        self._created_at: Attribute[datetime] = NotSet
+        self._description: Attribute[str] = NotSet
+        self._emoji: Attribute[str] = NotSet
+        self._emoji_html: Attribute[str] = NotSet
+        self._id: Attribute[str] = NotSet
+        self._is_answerable: Attribute[bool] = NotSet
+        self._name: Attribute[str] = NotSet
+        self._repository: Attribute[Repository] = NotSet
+        self._slug: Attribute[str] = NotSet
+        self._updated_at: Attribute[datetime] = NotSet
+
+    @property
+    def created_at(self) -> datetime:
+        return self._created_at.value
+
+    @property
+    def description(self) -> str:
+        return self._description.value
+
+    @property
+    def emoji(self) -> str:
+        return self._emoji.value
+
+    @property
+    def emoji_html(self) -> str:
+        return self._emoji_html.value
+
+    @property
+    def id(self) -> str:
+        return self._id.value
+
+    @property
+    def node_id(self) -> str:
+        return self.id
+
+    @property
+    def is_answerable(self) -> bool:
+        return self._is_answerable.value
+
+    @property
+    def name(self) -> str:
+        return self._name.value
+
+    @property
+    def repository(self) -> Repository:
+        return self._repository.value
+
+    @property
+    def slug(self) -> str:
+        return self._slug.value
+
+    @property
+    def updated_at(self) -> datetime:
+        return self._updated_at.value
+
+    def _useAttributes(self, attributes: dict[str, Any]) -> None:
+        if "createdAt" in attributes:  # pragma no branch
+            self._created_at = self._makeDatetimeAttribute(attributes["createdAt"])
+        if "description" in attributes:  # pragma no branch
+            self._description = self._makeStringAttribute(attributes["description"])
+        if "emoji" in attributes:  # pragma no branch
+            self._emoji = self._makeStringAttribute(attributes["emoji"])
+        if "emojiHTML" in attributes:  # pragma no branch
+            self._emoji_html = self._makeStringAttribute(attributes["emojiHTML"])
+        if "id" in attributes:  # pragma no branch
+            self._id = self._makeStringAttribute(attributes["id"])
+        if "isAnswerable" in attributes:  # pragma no branch
+            self._is_answerable = self._makeBoolAttribute(attributes["isAnswerable"])
+        if "name" in attributes:  # pragma no branch
+            self._name = self._makeStringAttribute(attributes["name"])
+        if "repository" in attributes:  # pragma no branch
+            # repository is a REST API object
+            self._repository = self._makeClassAttribute(
+                github.Repository.Repository, as_rest_api_attributes(attributes["repository"])
+            )
+        if "slug" in attributes:  # pragma no branch
+            self._slug = self._makeStringAttribute(attributes["slug"])
+        if "updatedAt" in attributes:  # pragma no branch
+            self._updated_at = self._makeDatetimeAttribute(attributes["updatedAt"])
diff --git a/github/RepositoryDiscussionComment.py b/github/RepositoryDiscussionComment.py
new file mode 100644
index 000000000..ef33a5abd
--- /dev/null
+++ b/github/RepositoryDiscussionComment.py
@@ -0,0 +1,149 @@
+############################ Copyrights and license ############################
+#                                                                              #
+# Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
+#                                                                              #
+# This file is part of PyGithub.                                               #
+# http://pygithub.readthedocs.io/                                              #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+################################################################################
+
+from __future__ import annotations
+
+from typing import TYPE_CHECKING, Any
+
+import github.NamedUser
+import github.Reaction
+from github.DiscussionCommentBase import DiscussionCommentBase
+from github.GithubObject import (
+    Attribute,
+    GraphQlObject,
+    NotSet,
+    as_rest_api_attributes,
+    as_rest_api_attributes_list,
+    is_defined,
+)
+from github.PaginatedList import PaginatedList
+
+if TYPE_CHECKING:
+    from github.NamedUser import NamedUser
+    from github.Reaction import Reaction
+    from github.RepositoryDiscussion import RepositoryDiscussion
+
+
+class RepositoryDiscussionComment(GraphQlObject, DiscussionCommentBase):
+    """
+    This class represents GraphQL DiscussionComment.
+
+    The reference can be found here
+    https://docs.github.com/en/graphql/reference/objects#discussioncomment
+
+    """
+
+    def _initAttributes(self) -> None:
+        super()._initAttributes()
+        self._body_text: Attribute[str] = NotSet
+        self._database_id: Attribute[int] = NotSet
+        self._discussion: Attribute[RepositoryDiscussion]
+        self._editor: Attribute[NamedUser] = NotSet
+        self._id: Attribute[str] = NotSet
+        self._reactions_page = None
+        self._replies_page = None
+
+    @property
+    def body_text(self) -> str:
+        return self._body_text.value
+
+    @property
+    def database_id(self) -> int:
+        return self._database_id.value
+
+    @property
+    def discussion(self) -> RepositoryDiscussion:
+        return self._discussion.value
+
+    @property
+    def editor(self) -> NamedUser:
+        return self._editor.value
+
+    @property
+    def id(self) -> str:
+        return self._id.value
+
+    @property
+    def node_id(self) -> str:
+        if is_defined(self._node_id):
+            return super().node_id
+        return self.id
+
+    def get_reactions(self) -> PaginatedList[Reaction]:
+        if self._reactions_page is None:
+            raise RuntimeError("Fetching reactions not implemented")
+        return PaginatedList(github.Reaction.Reaction, self._requester, firstData=self._reactions_page, firstHeaders={})
+
+    def get_replies(self) -> PaginatedList[RepositoryDiscussionComment]:
+        if self._replies_page is None:
+            raise RuntimeError("Fetching replies not implemented")
+        return PaginatedList(
+            RepositoryDiscussionComment, self._requester, firstData=self._replies_page, firstHeaders={}
+        )
+
+    def edit(self, body: str, output_schema: str = "id") -> RepositoryDiscussionComment:
+        if not output_schema.startswith("\n"):
+            output_schema = f" {output_schema} "
+        return self._requester.graphql_named_mutation_class(
+            "updateDiscussionComment",
+            {"commentId": self.node_id, "body": body},
+            f"comment {{{output_schema}}}",
+            "comment",
+            github.RepositoryDiscussionComment.RepositoryDiscussionComment,
+        )
+
+    def delete(self, output_schema: str = "id") -> RepositoryDiscussionComment:
+        if not output_schema.startswith("\n"):
+            output_schema = f" {output_schema} "
+        return self._requester.graphql_named_mutation_class(
+            "deleteDiscussionComment",
+            {"id": self.id},
+            f"comment {{{output_schema}}}",
+            "comment",
+            github.RepositoryDiscussionComment.RepositoryDiscussionComment,
+        )
+
+    def _useAttributes(self, attributes: dict[str, Any]) -> None:
+        # super class is a REST API GithubObject, attributes are coming from GraphQL
+        super()._useAttributes(as_rest_api_attributes(attributes))
+        if "bodyText" in attributes:  # pragma no branch
+            self._body_text = self._makeStringAttribute(attributes["bodyText"])
+        if "databaseId" in attributes:  # pragma no branch
+            self._database_id = self._makeIntAttribute(attributes["databaseId"])
+        if "discussion" in attributes:  # pragma no branch
+            # RepositoryDiscussion is a GraphQL API object
+            self._discussion = self._makeClassAttribute(
+                github.RepositoryDiscussion.RepositoryDiscussion, attributes["discussion"]
+            )
+        if "editor" in attributes:  # pragma no branch
+            # NamedUser is a REST API object
+            self._editor = self._makeClassAttribute(
+                github.NamedUser.NamedUser, as_rest_api_attributes(attributes["editor"])
+            )
+        if "id" in attributes:  # pragma no branch
+            self._id = self._makeStringAttribute(attributes["id"])
+        if "reactions" in attributes:  # pragma no branch
+            # reactions are REST API objects
+            self._reactions_page = as_rest_api_attributes_list(attributes["reactions"]["nodes"])  # type: ignore
+        if "replies" in attributes:  # pragma no branch
+            # replies are GraphQL API objects
+            self._replies_page = attributes["replies"]["nodes"]
diff --git a/github/Requester.py b/github/Requester.py
index 01327378d..b9fea9b5a 100644
--- a/github/Requester.py
+++ b/github/Requester.py
@@ -110,7 +110,9 @@
 from urllib3 import Retry
 
 import github.Consts as Consts
+import github.GithubException
 import github.GithubException as GithubException
+from github.GithubObject import as_rest_api_attributes
 
 if TYPE_CHECKING:
     from .AppAuthentication import AppAuthentication
@@ -119,6 +121,7 @@
     from .InstallationAuthorization import InstallationAuthorization
 
 T = TypeVar("T")
+T_gh = TypeVar("T_gh", bound="GithubObject")
 
 # For App authentication, time remaining before token expiration to request a new one
 ACCESS_TOKEN_REFRESH_THRESHOLD_SECONDS = 20
@@ -628,9 +631,78 @@ def graphql_query(self, query: str, variables: Dict[str, Any]) -> Tuple[Dict[str
 
         response_headers, data = self.requestJsonAndCheck("POST", self.graphql_url, input=input_)
         if "errors" in data:
+            if len(data["errors"]) == 1:
+                error = data["errors"][0]
+                if error.get("type") == "NOT_FOUND":
+                    raise github.UnknownObjectException(404, data, response_headers, error.get("message"))
             raise self.createException(400, response_headers, data)
         return response_headers, data
 
+    @classmethod
+    def paths_of_dict(cls, d: dict) -> dict:
+        return {key: cls.paths_of_dict(val) if isinstance(val, dict) else None for key, val in d.items()}
+
+    def data_as_class(
+        self, headers: Dict[str, Any], data: Dict[str, Any], data_path: List[str], klass: Type[T_gh]
+    ) -> T_gh:
+        for item in data_path:
+            if item not in data:
+                raise RuntimeError(f"GraphQL path {data_path} not found in data: {self.paths_of_dict(data)}")
+            data = data[item]
+        if klass.is_rest():
+            data = as_rest_api_attributes(data)
+        return klass(self, headers, data, completed=False)
+
+    def graphql_node(self, node_id: str, graphql_schema: str, node_type: str) -> Tuple[Dict[str, Any], Dict[str, Any]]:
+        """
+        :calls: `POST /graphql <https://docs.github.com/en/graphql>`_
+        """
+        if not graphql_schema.startswith("\n"):
+            graphql_schema = f" {graphql_schema} "
+        query = (
+            """
+            query Q($id: ID!) {
+              node(id: $id) {
+                __typename
+                ... on """
+            + f"{node_type} {{{graphql_schema}}}"
+            + """
+              }
+            }
+            """
+        )
+
+        headers, data = self.graphql_query(query, {"id": node_id})
+        actual_node_type = data.get("data", {}).get("node", {}).get("__typename", node_type)
+        if actual_node_type != node_type:
+            raise github.GithubException(
+                400,
+                data,
+                message=f"Retrieved {node_type} object is of different type: {actual_node_type}",
+            )
+        return headers, data
+
+    def graphql_node_class(
+        self, node_id: str, graphql_schema: str, klass: Type[T_gh], node_type: Optional[str] = None
+    ) -> T_gh:
+        """
+        :calls: `POST /graphql <https://docs.github.com/en/graphql>`_
+        """
+        if node_type is None:
+            node_type = klass.__name__
+
+        headers, data = self.graphql_node(node_id, graphql_schema, node_type)
+        return self.data_as_class(headers, data, ["data", "node"], klass)
+
+    def graphql_query_class(
+        self, query: str, variables: Dict[str, Any], data_path: List[str], klass: Type[T_gh]
+    ) -> T_gh:
+        """
+        :calls: `POST /graphql <https://docs.github.com/en/graphql>`_
+        """
+        headers, data = self.graphql_query(query, variables)
+        return self.data_as_class(headers, data, ["data"] + data_path, klass)
+
     def graphql_named_mutation(
         self, mutation_name: str, mutation_input: Dict[str, Any], output_schema: str
     ) -> Tuple[Dict[str, Any], Dict[str, Any]]:
@@ -648,6 +720,18 @@ def graphql_named_mutation(
         headers, data = self.graphql_query(query, {"input": mutation_input})
         return headers, data.get("data", {}).get(mutation_name, {})
 
+    def graphql_named_mutation_class(
+        self, mutation_name: str, mutation_input: Dict[str, Any], output_schema: str, item: str, klass: Type[T_gh]
+    ) -> T_gh:
+        """
+        Executes a mutation and returns the output object as the given GithubObject.
+
+        See {@link graphql_named_mutation}.
+
+        """
+        headers, data = self.graphql_named_mutation(mutation_name, mutation_input, output_schema)
+        return self.data_as_class(headers, data, [item], klass)
+
     def __check(
         self,
         status: int,
diff --git a/github/TeamDiscussion.py b/github/TeamDiscussion.py
index cefc21348..e44026beb 100644
--- a/github/TeamDiscussion.py
+++ b/github/TeamDiscussion.py
@@ -23,6 +23,7 @@
 # Copyright 2023 Trim21 <trim21.me@gmail.com>                                  #
 # Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
 # Copyright 2024 Jirka Borovec <6035284+Borda@users.noreply.github.com>        #
+# Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
 #                                                                              #
 # This file is part of PyGithub.                                               #
 # http://pygithub.readthedocs.io/                                              #
@@ -44,15 +45,13 @@
 
 from __future__ import annotations
 
-from datetime import datetime
 from typing import Any
 
-import github.GithubObject
-import github.NamedUser
-from github.GithubObject import Attribute, CompletableGithubObject, NotSet
+from github.DiscussionBase import DiscussionBase
+from github.GithubObject import Attribute, NotSet
 
 
-class TeamDiscussion(CompletableGithubObject):
+class TeamDiscussion(DiscussionBase):
     """
     This class represents TeamDiscussions.
 
@@ -62,41 +61,15 @@ class TeamDiscussion(CompletableGithubObject):
     """
 
     def _initAttributes(self) -> None:
-        self._author: Attribute[github.NamedUser.NamedUser] = NotSet
-        self._body: Attribute[str] = NotSet
-        self._body_html: Attribute[str] = NotSet
+        super()._initAttributes()
         self._body_version: Attribute[str] = NotSet
         self._comments_count: Attribute[int] = NotSet
         self._comments_url: Attribute[str] = NotSet
-        self._created_at: Attribute[datetime] = NotSet
         self._html_url: Attribute[str] = NotSet
-        self._last_edited_at: Attribute[datetime] = NotSet
         self._node_id: Attribute[str] = NotSet
-        self._number: Attribute[int] = NotSet
         self._pinned: Attribute[bool] = NotSet
         self._private: Attribute[bool] = NotSet
         self._team_url: Attribute[str] = NotSet
-        self._title: Attribute[str] = NotSet
-        self._updated_at: Attribute[datetime] = NotSet
-        self._url: Attribute[str] = NotSet
-
-    def __repr__(self) -> str:
-        return self.get__repr__({"number": self._number.value, "title": self._title.value})
-
-    @property
-    def author(self) -> github.NamedUser.NamedUser:
-        self._completeIfNotSet(self._author)
-        return self._author.value
-
-    @property
-    def body(self) -> str:
-        self._completeIfNotSet(self._body)
-        return self._body.value
-
-    @property
-    def body_html(self) -> str:
-        self._completeIfNotSet(self._body_html)
-        return self._body_html.value
 
     @property
     def body_version(self) -> str:
@@ -113,31 +86,16 @@ def comments_url(self) -> str:
         self._completeIfNotSet(self._comments_url)
         return self._comments_url.value
 
-    @property
-    def created_at(self) -> datetime:
-        self._completeIfNotSet(self._created_at)
-        return self._created_at.value
-
     @property
     def html_url(self) -> str:
         self._completeIfNotSet(self._html_url)
         return self._html_url.value
 
-    @property
-    def last_edited_at(self) -> datetime:
-        self._completeIfNotSet(self._last_edited_at)
-        return self._last_edited_at.value
-
     @property
     def node_id(self) -> str:
         self._completeIfNotSet(self._node_id)
         return self._node_id.value
 
-    @property
-    def number(self) -> int:
-        self._completeIfNotSet(self._number)
-        return self._number.value
-
     @property
     def pinned(self) -> bool:
         self._completeIfNotSet(self._pinned)
@@ -153,53 +111,21 @@ def team_url(self) -> str:
         self._completeIfNotSet(self._team_url)
         return self._team_url.value
 
-    @property
-    def title(self) -> str:
-        self._completeIfNotSet(self._title)
-        return self._title.value
-
-    @property
-    def updated_at(self) -> datetime:
-        self._completeIfNotSet(self._updated_at)
-        return self._updated_at.value
-
-    @property
-    def url(self) -> str:
-        self._completeIfNotSet(self._url)
-        return self._url.value
-
     def _useAttributes(self, attributes: dict[str, Any]) -> None:
-        if "author" in attributes:  # pragma no branch
-            self._author = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["author"])
-        if "body" in attributes:  # pragma no branch
-            self._body = self._makeStringAttribute(attributes["body"])
-        if "body_html" in attributes:  # pragma no branch
-            self._body_html = self._makeStringAttribute(attributes["body_html"])
+        super()._useAttributes(attributes)
         if "body_version" in attributes:  # pragma no branch
             self._body_version = self._makeStringAttribute(attributes["body_version"])
         if "comments_count" in attributes:  # pragma no branch
             self._comments_count = self._makeIntAttribute(attributes["comments_count"])
         if "comments_url" in attributes:  # pragma no branch
             self._comments_url = self._makeStringAttribute(attributes["comments_url"])
-        if "created_at" in attributes:  # pragma no branch
-            self._created_at = self._makeDatetimeAttribute(attributes["created_at"])
         if "html_url" in attributes:  # pragma no branch
             self._html_url = self._makeStringAttribute(attributes["html_url"])
-        if "last_edited_at" in attributes:  # pragma no branch
-            self._last_edited_at = self._makeDatetimeAttribute(attributes["last_edited_at"])
         if "node_id" in attributes:  # pragma no branch
             self._node_id = self._makeStringAttribute(attributes["node_id"])
-        if "number" in attributes:  # pragma no branch
-            self._number = self._makeIntAttribute(attributes["number"])
         if "pinned" in attributes:  # pragma no branch
             self._pinned = self._makeBoolAttribute(attributes["pinned"])
         if "private" in attributes:  # pragma no branch
             self._private = self._makeBoolAttribute(attributes["private"])
         if "team_url" in attributes:  # pragma no branch
             self._team_url = self._makeStringAttribute(attributes["team_url"])
-        if "title" in attributes:
-            self._title = self._makeStringAttribute(attributes["title"])
-        if "updated_at" in attributes:  # pragma no branch
-            self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"])
-        if "url" in attributes:  # pragma no branch
-            self._url = self._makeStringAttribute(attributes["url"])


Test patch:
diff --git a/tests/GithubObject.py b/tests/GithubObject.py
index 9e0bf24d4..27a6fa99a 100644
--- a/tests/GithubObject.py
+++ b/tests/GithubObject.py
@@ -26,12 +26,31 @@
 import unittest
 from datetime import datetime, timedelta, timezone
 
+import github.Repository
+import github.RepositoryDiscussion
+
 from . import Framework
 
 gho = Framework.github.GithubObject
 
 
 class GithubObject(unittest.TestCase):
+    def testAttributesAsRest(self):
+        _ = gho.as_rest_api_attributes
+        self.assertIsNone(_(None))
+        self.assertDictEqual(_({}), {})
+        self.assertDictEqual(_({"id": "NID", "databaseId": "DBID"}), {"node_id": "NID", "id": "DBID"})
+        self.assertDictEqual(_({"someId": "someId"}), {"some_id": "someId"})
+        self.assertDictEqual(_({"someObj": {"someId": "someId"}}), {"some_obj": {"some_id": "someId"}})
+        self.assertDictEqual(_({"bodyHTML": "<html/>"}), {"body_html": "<html/>"})
+
+    def testApiType(self):
+        self.assertEqual(github.Repository.Repository.is_rest(), True)
+        self.assertEqual(github.Repository.Repository.is_graphql(), False)
+
+        self.assertEqual(github.RepositoryDiscussion.RepositoryDiscussion.is_rest(), False)
+        self.assertEqual(github.RepositoryDiscussion.RepositoryDiscussion.is_graphql(), True)
+
     def testMakeDatetimeAttribute(self):
         for value, expected in [
             (None, None),
diff --git a/tests/GraphQl.py b/tests/GraphQl.py
index 68acb0d38..4f03be0ae 100644
--- a/tests/GraphQl.py
+++ b/tests/GraphQl.py
@@ -23,6 +23,12 @@
 from typing import Any, Dict
 
 import github
+import github.GithubException
+import github.Organization
+import github.Repository
+import github.RepositoryDiscussion
+import github.RepositoryDiscussionComment
+import github.Requester
 from github import Github
 
 from . import Framework
@@ -70,3 +76,282 @@ def testOtherPort(self):
         pull = gh.get_repo("PyGithub/PyGithub").get_pull(31)
         response = pull.disable_automerge()
         assert response == self.expected(base_url)
+
+    def testNode(self):
+        requester = self.g._Github__requester
+        headers, data = requester.graphql_node("D_kwDOADYVqs4ATJZD", "title", "Discussion")
+        self.assertTrue(headers)
+        self.assertEqual(
+            data.get("data", {}).get("node", {}).get("title"),
+            "Is there a way to search if a string present in default branch?",
+        )
+
+        # non-existing node should throw a NOT FOUND exception
+        with self.assertRaises(github.UnknownObjectException) as e:
+            requester.graphql_node("D_abcdefgh", "title", "Discussion")
+        self.assertEqual(e.exception.status, 404)
+        self.assertEqual(
+            e.exception.data,
+            {
+                "data": {"node": None},
+                "errors": [
+                    {
+                        "type": "NOT_FOUND",
+                        "path": ["node"],
+                        "locations": [{"line": 3, "column": 15}],
+                        "message": "Could not resolve to a node with the global id of 'D_abcdefgh'",
+                    }
+                ],
+            },
+        )
+        self.assertEqual(e.exception.message, "Could not resolve to a node with the global id of 'D_abcdefgh'")
+
+        # wrong type should throw an exception
+        with self.assertRaises(github.GithubException) as e:
+            requester.graphql_node("D_kwDOADYVqs4ATJZD", "login", "User")
+        self.assertEqual(e.exception.status, 400)
+        self.assertEqual(e.exception.data, {"data": {"node": {"__typename": "Discussion"}}})
+        self.assertEqual(e.exception.message, "Retrieved User object is of different type: Discussion")
+
+    def testNodeClass(self):
+        requester = self.g._Github__requester
+        discussion = requester.graphql_node_class(
+            "D_kwDOADYVqs4ATJZD", "title", github.RepositoryDiscussion.RepositoryDiscussion, "Discussion"
+        )
+        self.assertEqual(discussion.title, "Is there a way to search if a string present in default branch?")
+
+        # non-existing node should throw a NOT FOUND exception
+        with self.assertRaises(github.UnknownObjectException) as e:
+            requester.graphql_node_class(
+                "D_abcdefgh", "title", github.RepositoryDiscussion.RepositoryDiscussion, "Discussion"
+            )
+        self.assertEqual(e.exception.status, 404)
+        self.assertEqual(
+            e.exception.data,
+            {
+                "data": {"node": None},
+                "errors": [
+                    {
+                        "type": "NOT_FOUND",
+                        "path": ["node"],
+                        "locations": [{"line": 3, "column": 15}],
+                        "message": "Could not resolve to a node with the global id of 'D_abcdefgh'",
+                    }
+                ],
+            },
+        )
+        self.assertEqual(e.exception.message, "Could not resolve to a node with the global id of 'D_abcdefgh'")
+
+        # wrong type should throw an exception
+        with self.assertRaises(github.GithubException) as e:
+            requester.graphql_node_class(
+                "D_kwDOADYVqs4ATJZD", "login", github.RepositoryDiscussion.RepositoryDiscussion, "User"
+            )
+        self.assertEqual(e.exception.status, 400)
+        self.assertEqual(e.exception.data, {"data": {"node": {"__typename": "Discussion"}}})
+        self.assertEqual(e.exception.message, "Retrieved User object is of different type: Discussion")
+
+    def testQuery(self):
+        requester = self.g._Github__requester
+        query = """
+            query Q($owner: String!, $name: String!) {
+              repository(owner: $owner, name: $name) { url }
+            }"""
+        variables = {"owner": "PyGithub", "name": "PyGithub"}
+        header, data = requester.graphql_query(query, variables)
+        self.assertTrue(header)
+        self.assertEqual(data, {"data": {"repository": {"url": "https://github.com/PyGithub/PyGithub"}}})
+
+    def testQueryRestClass(self):
+        requester = self.g._Github__requester
+        query = """
+            query Q($owner: String!, $name: String!) {
+              repository(owner: $owner, name: $name) { url }
+            }"""
+        variables = {"owner": "PyGithub", "name": "PyGithub"}
+        repo = requester.graphql_query_class(query, variables, ["repository"], github.Repository.Repository)
+        self.assertIsInstance(repo, github.Repository.Repository)
+        self.assertEqual(repo.html_url, "https://github.com/PyGithub/PyGithub")
+
+    def testQueryGraphQlClass(self):
+        requester = self.g._Github__requester
+        query = """
+            query Q($id: ID!) {
+              node(id: $id) { ... on DiscussionComment { url } }
+            }"""
+        variables = {"id": "DC_kwDOADYVqs4AU3Mg"}
+        comment = requester.graphql_query_class(
+            query, variables, ["node"], github.RepositoryDiscussionComment.RepositoryDiscussionComment
+        )
+        self.assertIsInstance(comment, github.RepositoryDiscussionComment.RepositoryDiscussionComment)
+        self.assertEqual(
+            comment.html_url, "https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5468960"
+        )
+
+    def testMutation(self):
+        requester = self.g._Github__requester
+        header, data = requester.graphql_named_mutation(
+            "followOrganization", {"organizationId": "O_kgDOAKxBpA"}, "organization { name }"
+        )
+        self.assertTrue(header)
+        self.assertEqual(data, {"organization": {"name": "PyGithub"}})
+
+    def testMutationClass(self):
+        requester = self.g._Github__requester
+        org = requester.graphql_named_mutation_class(
+            "followOrganization",
+            {"organizationId": "O_kgDOAKxBpA"},
+            "organization { name }",
+            "organization",
+            github.Organization.Organization,
+        )
+        self.assertEqual(org.name, "PyGithub")
+
+    def testPaginationAndRestIntegration(self):
+        repo = self.g.get_repo("PyGithub/PyGithub")
+        discussion_schema = """
+            id
+            url
+            number
+            author {
+              login
+              avatarUrl
+              url
+            }
+            repository {
+              owner { login }
+              name
+              issues(first: 10) {
+                totalCount
+                pageInfo {
+                  startCursor
+                  endCursor
+                  hasNextPage
+                  hasPreviousPage
+                }
+                nodes {
+                  databaseId
+                  id
+                  number
+                  title
+                }
+              }
+            }
+            title
+            createdAt
+            comments(first: 10) {
+              totalCount
+              pageInfo {
+                startCursor
+                endCursor
+                hasNextPage
+                hasPreviousPage
+              }
+              nodes {
+                id
+                url
+                createdAt
+                author {
+                  login
+                  avatarUrl
+                  url
+                }
+                isAnswer
+                replies(first: 10) {
+                  totalCount
+                  pageInfo {
+                    startCursor
+                    endCursor
+                    hasNextPage
+                    hasPreviousPage
+                  }
+                  nodes {
+                    id
+                    url
+                    createdAt
+                    author {
+                      login
+                      avatarUrl
+                      url
+                    }
+                  }
+                }
+              }
+            }
+            labels(first: 10) {
+              totalCount
+              pageInfo {
+                startCursor
+                endCursor
+                hasNextPage
+                hasPreviousPage
+              }
+              nodes {
+                id
+                name
+                issues(first: 10) {
+                  totalCount
+                  pageInfo {
+                    startCursor
+                    endCursor
+                    hasNextPage
+                    hasPreviousPage
+                  }
+                  nodes {
+                    databaseId
+                    id
+                    number
+                    title
+                  }
+                }
+              }
+            }
+          """
+        discussions_pages = repo.get_discussions(discussion_schema)
+        discussions = list(discussions_pages)
+        # would perform an extra request if called before iterating discussions_pages
+        self.assertEqual(discussions_pages.totalCount, 65)
+        self.assertEqual(len(discussions), 65)
+        self.assertEqual(discussions[0].number, 3044)
+        self.assertEqual(discussions[-1].number, 1780)
+
+        discussion = discussions[28]
+        self.assertEqual(discussion.author.login, "arunanandhan")
+        self.assertEqual(discussion.node_id, "D_kwDOADYVqs4ATJZD")
+        self.assertEqual(
+            discussion.author.avatar_url,
+            "https://avatars.githubusercontent.com/u/48812131?u=571c345a5994a55100a16b45a9688f5d6d340730&v=4",
+        )
+        self.assertEqual(discussion.author.html_url, "https://github.com/arunanandhan")
+
+        # inner page of GraphQL comments
+        comments = discussion.get_comments("id")
+        self.assertEqual(comments.totalCount, 1)  # does not perform an extra request
+        comments = list(comments)
+        self.assertEqual(len(comments), 1)
+        comment = comments[0]
+        self.assertEqual(comment.node_id, "DC_kwDOADYVqs4AU3Mg")
+        self.assertEqual(
+            comment.html_url, "https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5468960"
+        )
+        self.assertEqual(comment.author.login, "EnricoMi")
+
+        # inner inner page of GraphQL replies
+        replies = comment.get_replies()
+        self.assertEqual(replies.totalCount, 5)  # does not perform an extra request
+        self.assertEqual(replies[0].node_id, "DC_kwDOADYVqs4AU3Wg")
+
+        # inner page of REST labels
+        labels_pages = discussions[3].get_labels()
+        self.assertEqual(labels_pages.totalCount, 1)
+        label = labels_pages[0]
+        self.assertEqual(label.name, "Call for Contribution")
+
+        # inner REST repository
+        repo = discussion.repository
+        issues_pages = repo.get_issues()
+        issue = issues_pages[0]
+        # GraphQL retrieved 10 issues, but repo.get_issues() is not aware of that data
+        # it calls the REST API
+        self.assertEqual(issues_pages.totalCount, 341)
+        self.assertEqual(issue.number, 3045)
diff --git a/tests/PaginatedList.py b/tests/PaginatedList.py
index 7dfdfe72a..10428081e 100644
--- a/tests/PaginatedList.py
+++ b/tests/PaginatedList.py
@@ -383,3 +383,24 @@ def testOverrideAttributes(self):
         overrides_dict = {"c": 4, "d": 5, "e": 6}
         transformer = PaginatedListImpl.override_attributes(overrides_dict)
         self.assertDictEqual(transformer(input_dict), {"a": 1, "b": 2, "c": 4, "d": 5, "e": 6})
+
+    def testGraphQlPagination(self):
+        repo = self.g.get_repo("PyGithub/PyGithub")
+        discussions = repo.get_discussions("id number")
+        self.assertFalse(discussions.is_rest)
+        self.assertTrue(discussions.is_graphql)
+        rev = discussions.reversed
+
+        discussions_list = list(discussions)
+        self.assertEqual(discussions.totalCount, 65)
+        self.assertEqual(len(discussions_list), 65)
+        self.assertEqual(discussions_list[0].number, 3044)
+        self.assertEqual(discussions_list[-1].number, 1780)
+
+        reversed_list = list(rev)
+        self.assertEqual(rev.totalCount, 65)
+        self.assertEqual(len(reversed_list), 65)
+        self.assertListEqual([d.number for d in reversed_list], [d.number for d in reversed(discussions_list)])
+
+        # accessing totalCount before iterating the PaginatedList triggers another request
+        self.assertEqual(repo.get_discussions("id number").totalCount, 65)
diff --git a/tests/ReplayData/Github.testGetRepositoryDiscussion.txt b/tests/ReplayData/Github.testGetRepositoryDiscussion.txt
new file mode 100644
index 000000000..9d1919ab5
--- /dev/null
+++ b/tests/ReplayData/Github.testGetRepositoryDiscussion.txt
@@ -0,0 +1,31 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                ... on Discussion {\n        answer {\n          author { login }\n          body\n          bodyHTML\n          bodyText\n          createdAt\n          databaseId\n          discussion { id }\n          editor { login }\n          id\n          lastEditedAt\n          updatedAt\n          url\n        }\n        author { login }\n        body\n        bodyHTML\n        bodyText\n        category {\n          createdAt\n          description\n          emoji\n          emojiHTML\n          id\n          isAnswerable\n          name\n          repository { owner { login } name }\n          slug\n          updatedAt\n        }\n        comments(first: 10) {\n          totalCount\n          pageInfo {\n            startCursor\n            endCursor\n            hasNextPage\n            hasPreviousPage\n          }\n          nodes {\n            id\n          }\n        }\n        createdAt\n        databaseId\n        editor { login }\n        id\n        labels(first: 10) {\n          totalCount\n          pageInfo {\n            startCursor\n            endCursor\n            hasNextPage\n            hasPreviousPage\n          }\n          nodes {\n            id\n            name\n          }\n        }\n        lastEditedAt\n        number\n        reactions(first: 10) {\n          totalCount\n          pageInfo {\n            startCursor\n            endCursor\n            hasNextPage\n            hasPreviousPage\n          }\n          nodes {\n            id\n          }\n        }\n        repository {\n          owner { login }\n          name\n        }\n        title\n        updatedAt\n        url\n      }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}}
+200
+[('Date', 'Tue, 17 Sep 2024 10:38:06 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4900'), ('X-RateLimit-Reset', '1726571100'), ('X-RateLimit-Used', '100'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FE8:23B8E4:7E3FE1:7F58C1:66E95C0D')]
+{"data":{"node":{"answer":null,"author":{"login":"arunanandhan"},"body":"Is there an api way to search for a string in the current code in a repo?","bodyHTML":"<p dir=\"auto\">Is there an api way to search for a string in the current code in a repo?</p>","bodyText":"Is there an api way to search for a string in the current code in a repo?","category":{"createdAt":"2020-12-08T23:29:12Z","description":"Chat about anything and everything here","emoji":":speech_balloon:","emojiHTML":"<div>💬</div>","id":"MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYw","isAnswerable":false,"name":"General","repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"slug":"general","updatedAt":"2020-12-08T23:29:12Z"},"comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0yOVQxOTo1NzowMCswMjowMM4AU3Mg","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0yOVQxOTo1NzowMCswMjowMM4AU3Mg","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AU3Mg"}]},"createdAt":"2023-03-29T17:06:04Z","databaseId":5019203,"editor":null,"id":"D_kwDOADYVqs4ATJZD","labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"lastEditedAt":null,"number":2480,"reactions":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is there a way to search if a string present in default branch?","updatedAt":"2023-03-30T16:18:59Z","url":"https://github.com/PyGithub/PyGithub/discussions/2480"}}}
+
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub
+{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 10:46:13 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/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4986'), ('X-RateLimit-Reset', '1726571099'), ('X-RateLimit-Used', '14'), ('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', '7F3C:221185:24F04:25557:66E95DF5')]
+{"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111}
+
+https
+GET
+api.github.com
+None
+/users/PyGithub
+{'Authorization': 'token private_token_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 10:46:30 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/"465119d1ce50dcf055ebf9239f79701d2b350d57bbf6167bb01ef9090f200a35"'), ('Last-Modified', 'Wed, 08 Apr 2020 03:46:04 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', ''), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4985'), ('X-RateLimit-Reset', '1726571099'), ('X-RateLimit-Used', '15'), ('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', '7FB4:93EBB:19600:19AC7:66E95E06')]
diff --git a/tests/ReplayData/GraphQl.testMutation.txt b/tests/ReplayData/GraphQl.testMutation.txt
new file mode 100644
index 000000000..c38271474
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testMutation.txt
@@ -0,0 +1,10 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: FollowOrganizationInput!) { followOrganization(input: $input) { organization { name } } }", "variables": {"input": {"organizationId": "O_kgDOAKxBpA"}}}
+200
+[('Date', 'Wed, 18 Sep 2024 08:32:30 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4985'), ('X-RateLimit-Reset', '1726649567'), ('X-RateLimit-Used', '15'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FCF:3E9DF7:5C04D:5CF8C:66EA901E')]
+{"data":{"followOrganization":{"organization":{"name":"PyGithub"}}}}
diff --git a/tests/ReplayData/GraphQl.testMutationClass.txt b/tests/ReplayData/GraphQl.testMutationClass.txt
new file mode 100644
index 000000000..27f2603f4
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testMutationClass.txt
@@ -0,0 +1,10 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: FollowOrganizationInput!) { followOrganization(input: $input) { organization { name } } }", "variables": {"input": {"organizationId": "O_kgDOAKxBpA"}}}
+200
+[('Date', 'Wed, 18 Sep 2024 08:33:14 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4984'), ('X-RateLimit-Reset', '1726649567'), ('X-RateLimit-Used', '16'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F65:1B2122:68DCF:69F2E:66EA904A')]
+{"data":{"followOrganization":{"organization":{"name":"PyGithub"}}}}
diff --git a/tests/ReplayData/GraphQl.testNode.txt b/tests/ReplayData/GraphQl.testNode.txt
new file mode 100644
index 000000000..b45d588ed
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testNode.txt
@@ -0,0 +1,32 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion { title }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:12:07 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4982'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '18'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FAB:3166F9:53E3E2:54CFDB:66E9C677')]
+{"data":{"node":{"__typename":"Discussion","title":"Is there a way to search if a string present in default branch?"}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion { title }\n              }\n            }\n            ", "variables": {"id": "D_abcdefgh"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:12:16 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4981'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '19'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF2:3166F9:5409E6:54F641:66E9C680')]
+{"data":{"node":null},"errors":[{"type":"NOT_FOUND","path":["node"],"locations":[{"line":3,"column":15}],"message":"Could not resolve to a node with the global id of 'D_abcdefgh'"}]}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on User { login }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:12:29 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4980'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '20'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F46:1ED26E:57A112:5890ED:66E9C68D')]
+{"data":{"node":{"__typename":"Discussion"}}}
diff --git a/tests/ReplayData/GraphQl.testNodeClass.txt b/tests/ReplayData/GraphQl.testNodeClass.txt
new file mode 100644
index 000000000..b45d588ed
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testNodeClass.txt
@@ -0,0 +1,32 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion { title }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:12:07 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4982'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '18'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FAB:3166F9:53E3E2:54CFDB:66E9C677')]
+{"data":{"node":{"__typename":"Discussion","title":"Is there a way to search if a string present in default branch?"}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion { title }\n              }\n            }\n            ", "variables": {"id": "D_abcdefgh"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:12:16 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4981'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '19'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF2:3166F9:5409E6:54F641:66E9C680')]
+{"data":{"node":null},"errors":[{"type":"NOT_FOUND","path":["node"],"locations":[{"line":3,"column":15}],"message":"Could not resolve to a node with the global id of 'D_abcdefgh'"}]}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on User { login }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4ATJZD"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:12:29 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4980'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '20'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F46:1ED26E:57A112:5890ED:66E9C68D')]
+{"data":{"node":{"__typename":"Discussion"}}}
diff --git a/tests/ReplayData/GraphQl.testPaginationAndRestIntegration.txt b/tests/ReplayData/GraphQl.testPaginationAndRestIntegration.txt
new file mode 100644
index 000000000..0b95ae8aa
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testPaginationAndRestIntegration.txt
@@ -0,0 +1,65 @@
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 11:00:11 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/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4984'), ('X-RateLimit-Reset', '1726571099'), ('X-RateLimit-Used', '16'), ('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', '7F3C:221185:112839:115225:66E9613B')]
+{"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n            id\n            url\n            number\n            author {\n              login\n              avatarUrl\n              url\n            }\n            repository {\n              owner { login }\n              name\n              issues(first: 10) {\n                totalCount\n                pageInfo {\n                  startCursor\n                  endCursor\n                  hasNextPage\n                  hasPreviousPage\n                }\n                nodes {\n                  databaseId\n                  id\n                  number\n                  title\n                }\n              }\n            }\n            title\n            createdAt\n            comments(first: 10) {\n              totalCount\n              pageInfo {\n                startCursor\n                endCursor\n                hasNextPage\n                hasPreviousPage\n              }\n              nodes {\n                id\n                url\n                createdAt\n                author {\n                  login\n                  avatarUrl\n                  url\n                }\n                isAnswer\n                replies(first: 10) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n                    id\n                    url\n                    createdAt\n                    author {\n                      login\n                      avatarUrl\n                      url\n                    }\n                  }\n                }\n              }\n            }\n            labels(first: 10) {\n              totalCount\n              pageInfo {\n                startCursor\n                endCursor\n                hasNextPage\n                hasPreviousPage\n              }\n              nodes {\n                id\n                name\n                issues(first: 10) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n                    databaseId\n                    id\n                    number\n                    title\n                  }\n                }\n              }\n            }\n          }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 11:00:12 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4894'), ('X-RateLimit-Reset', '1726571100'), ('X-RateLimit-Used', '106'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F5C:1850E8:10FB84:1124B1:66E9613B')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"id":"D_kwDOADYVqs4AbYx8","url":"https://github.com/PyGithub/PyGithub/discussions/3044","number":3044,"author":{"login":"gmishkin","avatarUrl":"https://avatars.githubusercontent.com/u/2465106?u=7e23c98792f3596bbba10765d045a370a030c7e1&v=4","url":"https://github.com/gmishkin"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Automaticlly look for access tokens in standard places","createdAt":"2024-09-13T17:23:09Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AbOZV","url":"https://github.com/PyGithub/PyGithub/discussions/3033","number":3033,"author":{"login":"kostrykin","avatarUrl":"https://avatars.githubusercontent.com/u/6557139?u=9706d2b70049d79a090a052779c34d18064c7f69&v=4","url":"https://github.com/kostrykin"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Possible to interact with the Discussions on a GitHub repository?","createdAt":"2024-09-04T11:23:25Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AaHoG","url":"https://github.com/PyGithub/PyGithub/discussions/2993","number":2993,"author":{"login":"heitorPB","avatarUrl":"https://avatars.githubusercontent.com/u/13461702?u=3135128f16f6c1dedc510abef536c0ff8fbbd180&v=4","url":"https://github.com/heitorPB"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to get a list of custom repository properties?","createdAt":"2024-06-21T13:11:38Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yM1QwODozNjo1MCswMjowMM4AnxkU","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxODowMTowMCswMjowMM4AoA2V","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AnxkU","url":"https://github.com/PyGithub/PyGithub/discussions/2993#discussioncomment-10426644","createdAt":"2024-08-23T06:36:50Z","author":{"login":"dawngerpony","avatarUrl":"https://avatars.githubusercontent.com/u/161613?u=4a819710cf84ab72ae3ce034b7156ad25a7f06f7&v=4","url":"https://github.com/dawngerpony"},"isAnswer":true,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4AoA2V","url":"https://github.com/PyGithub/PyGithub/discussions/2993#discussioncomment-10489237","createdAt":"2024-08-29T16:01:00Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4APEfM","url":"https://github.com/PyGithub/PyGithub/discussions/2205","number":2205,"author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Is the PyGithub project dead? How can the community help?","createdAt":"2022-03-20T21:22:53Z","comments":{"totalCount":3,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wOS0yOVQxMTowMDowOSswMjowMM4AOWIf","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxNzo1ODo1MSswMjowMM4AoA18","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AOWIf","url":"https://github.com/PyGithub/PyGithub/discussions/2205#discussioncomment-3760671","createdAt":"2022-09-29T09:00:09Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4Anxkl","url":"https://github.com/PyGithub/PyGithub/discussions/2205#discussioncomment-10426661","createdAt":"2024-08-23T06:39:19Z","author":{"login":"dawngerpony","avatarUrl":"https://avatars.githubusercontent.com/u/161613?u=4a819710cf84ab72ae3ce034b7156ad25a7f06f7&v=4","url":"https://github.com/dawngerpony"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4AoA18","url":"https://github.com/PyGithub/PyGithub/discussions/2205#discussioncomment-10489212","createdAt":"2024-08-29T15:58:51Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":1,"pageInfo":{"startCursor":"MQ","endCursor":"MQ","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"LA_kwDOADYVqs8AAAABXcQ7kg","name":"Call for Contribution","issues":{"totalCount":3,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOYoSK8w==","endCursor":"Y3Vyc29yOnYyOpHOcTHszg==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"databaseId":1652853491,"id":"I_kwDOADYVqs5ihIrz","number":2485,"title":"Support Oauth apps with Github Enterprise"},{"databaseId":1879983871,"id":"I_kwDOADYVqs5wDkb_","number":2745,"title":"Add `code_search` to `RateLimit`"},{"databaseId":1899097294,"id":"I_kwDOADYVqs5xMezO","number":2760,"title":"Methods checking for 204 status handle 404 incorrectly"}]}}]}},{"id":"D_kwDOADYVqs4AYpFV","url":"https://github.com/PyGithub/PyGithub/discussions/2938","number":2938,"author":{"login":"guymatz","avatarUrl":"https://avatars.githubusercontent.com/u/1688920?v=4","url":"https://github.com/guymatz"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How can I tell if my branch has a Pull Request?","createdAt":"2024-04-04T14:28:32Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOFQxNzozMjoxMiswMjowMM4An94a","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOFQxNzozMjoxMiswMjowMM4An94a","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4An94a","url":"https://github.com/PyGithub/PyGithub/discussions/2938#discussioncomment-10477082","createdAt":"2024-08-28T15:32:12Z","author":{"login":"guymatz","avatarUrl":"https://avatars.githubusercontent.com/u/1688920?v=4","url":"https://github.com/guymatz"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AaOPh","url":"https://github.com/PyGithub/PyGithub/discussions/2997","number":2997,"author":{"login":"bobneuman","avatarUrl":"https://avatars.githubusercontent.com/u/129277129?u=45eb59bd0708ac6e551c49e1d1bb96822da8297d&v=4","url":"https://github.com/bobneuman"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Response caching","createdAt":"2024-06-28T15:47:23Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wNi0yOFQyMDowODo1MyswMjowMM4Aly6E","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wNi0yOFQyMDowODo1MyswMjowMM4Aly6E","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4Aly6E","url":"https://github.com/PyGithub/PyGithub/discussions/2997#discussioncomment-9907844","createdAt":"2024-06-28T18:08:53Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AaEL9","url":"https://github.com/PyGithub/PyGithub/discussions/2991","number":2991,"author":{"login":"syang","avatarUrl":"https://avatars.githubusercontent.com/u/188004?v=4","url":"https://github.com/syang"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Recursively list all file names in a repo without being throttled","createdAt":"2024-06-17T23:42:24Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AY1Qr","url":"https://github.com/PyGithub/PyGithub/discussions/2953","number":2953,"author":{"login":"lmilbaum","avatarUrl":"https://avatars.githubusercontent.com/u/7271026?u=ac6243aaafef7227105b940b706168cf5afab5e6&v=4","url":"https://github.com/lmilbaum"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Can this project used for creation a GitHub app?","createdAt":"2024-04-15T12:41:42Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AYqi6","url":"https://github.com/PyGithub/PyGithub/discussions/2943","number":2943,"author":{"login":"zituo-jin","avatarUrl":"https://avatars.githubusercontent.com/u/89419905?u=e6607fc1d0ec4ba23ffd96d46b1299b7f237a5b1&v=4","url":"https://github.com/zituo-jin"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Operations on pull requests in merge queue","createdAt":"2024-04-05T21:04:11Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AYLcF","url":"https://github.com/PyGithub/PyGithub/discussions/2916","number":2916,"author":{"login":"pn17F2DD3","avatarUrl":"https://avatars.githubusercontent.com/u/61848892?u=b5b29d2da4f32325d7ad2c5ba0a608055e1e6954&v=4","url":"https://github.com/pn17F2DD3"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Count the number of 'reopened' issues in GitHub","createdAt":"2024-03-07T19:29:10Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wMy0xNVQyMDoxNzoxOSswMTowMM4AhmDo","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wMy0xNVQyMDoxNzoxOSswMTowMM4AhmDo","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AhmDo","url":"https://github.com/PyGithub/PyGithub/discussions/2916#discussioncomment-8806632","createdAt":"2024-03-15T19:17:19Z","author":{"login":"xvega","avatarUrl":"https://avatars.githubusercontent.com/u/3665266?u=f4804e3b0fc2f7314de20d1f75b1296e8f4d8513&v=4","url":"https://github.com/xvega"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AX7h-","url":"https://github.com/PyGithub/PyGithub/discussions/2909","number":2909,"author":{"login":"bliu11","avatarUrl":"https://avatars.githubusercontent.com/u/28935182?v=4","url":"https://github.com/bliu11"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"long backoff time when encountering a single 403","createdAt":"2024-02-26T03:40:10Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wMi0yNlQwNzoxMzoyMiswMTowMM4AgwvB","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wMi0yNlQwNzoxMzoyMiswMTowMM4AgwvB","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AgwvB","url":"https://github.com/PyGithub/PyGithub/discussions/2909#discussioncomment-8588225","createdAt":"2024-02-26T06:13:22Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AXfgf","url":"https://github.com/PyGithub/PyGithub/discussions/2889","number":2889,"author":{"login":"andrewakl","avatarUrl":"https://avatars.githubusercontent.com/u/59714327?v=4","url":"https://github.com/andrewakl"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to set the \"prevent_self_review\" param when creating/updating GitHub environment?","createdAt":"2024-01-30T21:47:39Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AWoET","url":"https://github.com/PyGithub/PyGithub/discussions/2852","number":2852,"author":{"login":"whanso","avatarUrl":"https://avatars.githubusercontent.com/u/26184716?v=4","url":"https://github.com/whanso"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Batch multiple `create_file` invocations within single commit?","createdAt":"2023-12-06T15:45:08Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AWfTk","url":"https://github.com/PyGithub/PyGithub/discussions/2849","number":2849,"author":{"login":"baishuotong","avatarUrl":"https://avatars.githubusercontent.com/u/38210633?v=4","url":"https://github.com/baishuotong"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"A research for generating PR checklists in Pull Request Template","createdAt":"2023-11-27T06:38:23Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0xMS0yN1QwOTo0OTo0NyswMTowMM4AdSmA","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0xMS0yN1QwOTo0OTo0NyswMTowMM4AdSmA","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AdSmA","url":"https://github.com/PyGithub/PyGithub/discussions/2849#discussioncomment-7678336","createdAt":"2023-11-27T08:49:47Z","author":{"login":"BerylYanjie","avatarUrl":"https://avatars.githubusercontent.com/u/30611562?v=4","url":"https://github.com/BerylYanjie"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AWN90","url":"https://github.com/PyGithub/PyGithub/discussions/2814","number":2814,"author":{"login":"marksie1988","avatarUrl":"https://avatars.githubusercontent.com/u/159166?u=60bae19c14e90c1cac5701dd17b0dae997aa0239&v=4","url":"https://github.com/marksie1988"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"get_secret not raising an exception","createdAt":"2023-11-07T16:23:56Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AV4CR","url":"https://github.com/PyGithub/PyGithub/discussions/2795","number":2795,"author":{"login":"fsadykov","avatarUrl":"https://avatars.githubusercontent.com/u/30247437?u=09d59326fac741c840e4460856ad25d8abdea6f3&v=4","url":"https://github.com/fsadykov"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to get github issue python class using url or id?","createdAt":"2023-10-14T05:08:20Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0xMC0xNFQwNzowOToxNyswMjowMM4AbxC6","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0xMC0xNFQwNzowOToxNyswMjowMM4AbxC6","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AbxC6","url":"https://github.com/PyGithub/PyGithub/discussions/2795#discussioncomment-7278778","createdAt":"2023-10-14T05:09:17Z","author":{"login":"fsadykov","avatarUrl":"https://avatars.githubusercontent.com/u/30247437?u=09d59326fac741c840e4460856ad25d8abdea6f3&v=4","url":"https://github.com/fsadykov"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AVemo","url":"https://github.com/PyGithub/PyGithub/discussions/2758","number":2758,"author":{"login":"vsajip","avatarUrl":"https://avatars.githubusercontent.com/u/130553?u=51547f2ea9dbde1a08a65dd090708b8d9ee0f082&v=4","url":"https://github.com/vsajip"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How do you sync a fork with its parent?","createdAt":"2023-09-15T07:28:10Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AVJc_","url":"https://github.com/PyGithub/PyGithub/discussions/2737","number":2737,"author":{"login":"lokeshwarobuli","avatarUrl":"https://avatars.githubusercontent.com/u/85650351?v=4","url":"https://github.com/lokeshwarobuli"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to log requests","createdAt":"2023-08-21T16:16:14Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wOS0wNVQxODowMzoyNyswMjowMM4AaYi7","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wOS0wNVQxODowMzoyNyswMjowMM4AaYi7","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AaYi7","url":"https://github.com/PyGithub/PyGithub/discussions/2737#discussioncomment-6916283","createdAt":"2023-09-05T16:03:27Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAGmI2A==","endCursor":"Y3Vyc29yOnYyOpHOAGmI2A==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AaYjY","url":"https://github.com/PyGithub/PyGithub/discussions/2737#discussioncomment-6916312","createdAt":"2023-09-05T16:05:37Z","author":{"login":"lokeshwarobuli","avatarUrl":"https://avatars.githubusercontent.com/u/85650351?v=4","url":"https://github.com/lokeshwarobuli"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AU_3J","url":"https://github.com/PyGithub/PyGithub/discussions/2710","number":2710,"author":{"login":"aditya-samalla","avatarUrl":"https://avatars.githubusercontent.com/u/110420355?v=4","url":"https://github.com/aditya-samalla"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to sign a commit raised via PyGithub","createdAt":"2023-08-09T18:15:30Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4ATVaC","url":"https://github.com/PyGithub/PyGithub/discussions/2495","number":2495,"author":{"login":"zsbeheshti","avatarUrl":"https://avatars.githubusercontent.com/u/122203055?v=4","url":"https://github.com/zsbeheshti"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Definition of the initial population for the genetic algorithm by the user","createdAt":"2023-04-10T20:42:27Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wOC0wMVQyMjo1OTowMSswMjowMM4AZNwk","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wOC0wOVQxMToyMjo1MiswMjowMM4AZecQ","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AZNwk","url":"https://github.com/PyGithub/PyGithub/discussions/2495#discussioncomment-6609956","createdAt":"2023-08-01T20:59:01Z","author":{"login":"EdmundGoodman","avatarUrl":"https://avatars.githubusercontent.com/u/37504168?v=4","url":"https://github.com/EdmundGoodman"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4AZecQ","url":"https://github.com/PyGithub/PyGithub/discussions/2495#discussioncomment-6678288","createdAt":"2023-08-09T09:22:52Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4APye2","url":"https://github.com/PyGithub/PyGithub/discussions/2255","number":2255,"author":{"login":"buhtz","avatarUrl":"https://avatars.githubusercontent.com/u/11861496?u=3009371c8b8589a4da829768371d0b82329c560b&v=4","url":"https://github.com/buhtz"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to securily use access tokens?","createdAt":"2022-06-12T19:15:12Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNy0xMlQyMjoxMjoyMCswMjowMM4AYiIL","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wOC0wMVQyMjo0OTo0OCswMjowMM4AZNvQ","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AYiIL","url":"https://github.com/PyGithub/PyGithub/discussions/2255#discussioncomment-6431243","createdAt":"2023-07-12T20:12:20Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4AZNvQ","url":"https://github.com/PyGithub/PyGithub/discussions/2255#discussioncomment-6609872","createdAt":"2023-08-01T20:49:48Z","author":{"login":"EdmundGoodman","avatarUrl":"https://avatars.githubusercontent.com/u/37504168?v=4","url":"https://github.com/EdmundGoodman"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AUj0g","url":"https://github.com/PyGithub/PyGithub/discussions/2619","number":2619,"author":null,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How do I create a new branch with PyGithub?","createdAt":"2023-07-10T23:57:46Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNy0xMVQwMjowMDo1OSswMjowMM4AYdCH","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNy0xMVQwMjowMDo1OSswMjowMM4AYdCH","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AYdCH","url":"https://github.com/PyGithub/PyGithub/discussions/2619#discussioncomment-6410375","createdAt":"2023-07-11T00:00:59Z","author":{"login":"sheeehy","avatarUrl":"https://avatars.githubusercontent.com/u/116221302?u=ecd65fd8d346ee58200ae8bd7b6f685bd6403c63&v=4","url":"https://github.com/sheeehy"},"isAnswer":true,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AUSqN","url":"https://github.com/PyGithub/PyGithub/discussions/2559","number":2559,"author":{"login":"antoineKorbit","avatarUrl":"https://avatars.githubusercontent.com/u/60627077?v=4","url":"https://github.com/antoineKorbit"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Release of new version for this library","createdAt":"2023-06-20T11:09:12Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNi0yMFQxNTowNToxMSswMjowMM4AXxFm","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNi0yMlQyMDoxNDozOCswMjowMM4AX3FM","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AXxFm","url":"https://github.com/PyGithub/PyGithub/discussions/2559#discussioncomment-6230374","createdAt":"2023-06-20T13:05:11Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAF8YJg==","endCursor":"Y3Vyc29yOnYyOpHOAF8YJg==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AXxgm","url":"https://github.com/PyGithub/PyGithub/discussions/2559#discussioncomment-6232102","createdAt":"2023-06-20T15:31:37Z","author":{"login":"antoineKorbit","avatarUrl":"https://avatars.githubusercontent.com/u/60627077?v=4","url":"https://github.com/antoineKorbit"}}]}},{"id":"DC_kwDOADYVqs4AX3FM","url":"https://github.com/PyGithub/PyGithub/discussions/2559#discussioncomment-6254924","createdAt":"2023-06-22T18:14:38Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAF9yuQ==","endCursor":"Y3Vyc29yOnYyOpHOAGBfhw==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AX3K5","url":"https://github.com/PyGithub/PyGithub/discussions/2559#discussioncomment-6255289","createdAt":"2023-06-22T19:03:06Z","author":{"login":"antoineKorbit","avatarUrl":"https://avatars.githubusercontent.com/u/60627077?v=4","url":"https://github.com/antoineKorbit"}},{"id":"DC_kwDOADYVqs4AYF-H","url":"https://github.com/PyGithub/PyGithub/discussions/2559#discussioncomment-6315911","createdAt":"2023-06-29T14:15:48Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AOBfB","url":"https://github.com/PyGithub/PyGithub/discussions/2104","number":2104,"author":{"login":"dougdonohoe","avatarUrl":"https://avatars.githubusercontent.com/u/1576240?u=913d581872d52846d9d230ea87995e42fed17d4e&v=4","url":"https://github.com/dougdonohoe"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How do I call /installation/repositories API?","createdAt":"2021-11-09T21:45:57Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMS0xMVQxNTowNjowOCswMTowMM4AGNAD","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNi0yN1QyMToxNDoyNCswMjowMM4AYBbS","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AGNAD","url":"https://github.com/PyGithub/PyGithub/discussions/2104#discussioncomment-1626115","createdAt":"2021-11-11T14:06:08Z","author":{"login":"dougdonohoe","avatarUrl":"https://avatars.githubusercontent.com/u/1576240?u=913d581872d52846d9d230ea87995e42fed17d4e&v=4","url":"https://github.com/dougdonohoe"},"isAnswer":false,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAGAN8g==","endCursor":"Y3Vyc29yOnYyOpHOAGAN8g==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AYA3y","url":"https://github.com/PyGithub/PyGithub/discussions/2104#discussioncomment-6295026","createdAt":"2023-06-27T14:57:46Z","author":{"login":"AleksandraAleksandrova","avatarUrl":"https://avatars.githubusercontent.com/u/48100500?u=dd1a0a458e53657eb04953d55e340ac62d098f63&v=4","url":"https://github.com/AleksandraAleksandrova"}}]}},{"id":"DC_kwDOADYVqs4AYBbS","url":"https://github.com/PyGithub/PyGithub/discussions/2104#discussioncomment-6297298","createdAt":"2023-06-27T19:14:24Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":true,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAGAoWw==","endCursor":"Y3Vyc29yOnYyOpHOAGAoWw==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AYChb","url":"https://github.com/PyGithub/PyGithub/discussions/2104#discussioncomment-6301787","createdAt":"2023-06-28T07:56:38Z","author":{"login":"AleksandraAleksandrova","avatarUrl":"https://avatars.githubusercontent.com/u/48100500?u=dd1a0a458e53657eb04953d55e340ac62d098f63&v=4","url":"https://github.com/AleksandraAleksandrova"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AUAze","url":"https://github.com/PyGithub/PyGithub/discussions/2539","number":2539,"author":{"login":"parteekcoder","avatarUrl":"https://avatars.githubusercontent.com/u/100110395?u=b357155a4321a4631940348681dcf46f4eb2789c&v=4","url":"https://github.com/parteekcoder"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Pull request accross different repository","createdAt":"2023-05-30T06:05:32Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNi0yM1QxMDozNjoyMSswMjowMM4AX4TB","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNi0yM1QxMDozNjoyMSswMjowMM4AX4TB","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AX4TB","url":"https://github.com/PyGithub/PyGithub/discussions/2539#discussioncomment-6259905","createdAt":"2023-06-23T08:36:21Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AOzRO","url":"https://github.com/PyGithub/PyGithub/discussions/2177","number":2177,"author":{"login":"jackfurr","avatarUrl":"https://avatars.githubusercontent.com/u/834530?u=3db7c72ccc43037dea774902429622d042b004c2&v=4","url":"https://github.com/jackfurr"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to Revert a Merged PR","createdAt":"2022-02-16T06:43:19Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wNi0yMVQyMTowNToyNyswMjowMM4ALblT","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNC0yN1QxODo0MTo0OCswMjowMM4AV6p6","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4ALblT","url":"https://github.com/PyGithub/PyGithub/discussions/2177#discussioncomment-2996563","createdAt":"2022-06-21T19:05:27Z","author":{"login":"bassil-overjet","avatarUrl":"https://avatars.githubusercontent.com/u/93599031?v=4","url":"https://github.com/bassil-overjet"},"isAnswer":false,"replies":{"totalCount":3,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAC292g==","endCursor":"Y3Vyc29yOnYyOpHOADUmKg==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4ALb3a","url":"https://github.com/PyGithub/PyGithub/discussions/2177#discussioncomment-2997722","createdAt":"2022-06-21T23:09:02Z","author":{"login":"jackfurr","avatarUrl":"https://avatars.githubusercontent.com/u/834530?u=3db7c72ccc43037dea774902429622d042b004c2&v=4","url":"https://github.com/jackfurr"}},{"id":"DC_kwDOADYVqs4ANRJq","url":"https://github.com/PyGithub/PyGithub/discussions/2177#discussioncomment-3478122","createdAt":"2022-08-25T20:12:29Z","author":{"login":"ltagliamonte-dd","avatarUrl":"https://avatars.githubusercontent.com/u/51684360?u=8dcdeab05f1b5bbfdf9d50e4087cf52b317a2090&v=4","url":"https://github.com/ltagliamonte-dd"}},{"id":"DC_kwDOADYVqs4ANSYq","url":"https://github.com/PyGithub/PyGithub/discussions/2177#discussioncomment-3483178","createdAt":"2022-08-26T12:34:35Z","author":{"login":"bassil-overjet","avatarUrl":"https://avatars.githubusercontent.com/u/93599031?v=4","url":"https://github.com/bassil-overjet"}}]}},{"id":"DC_kwDOADYVqs4AV6p6","url":"https://github.com/PyGithub/PyGithub/discussions/2177#discussioncomment-5745274","createdAt":"2023-04-27T16:41:48Z","author":{"login":"msummers42","avatarUrl":"https://avatars.githubusercontent.com/u/8331623?u=24ee96f0f3fd2a6ccc6a89d67c7b1b18dd87a0bc&v=4","url":"https://github.com/msummers42"},"isAnswer":false,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAFes_w==","endCursor":"Y3Vyc29yOnYyOpHOAFes_w==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AV6z_","url":"https://github.com/PyGithub/PyGithub/discussions/2177#discussioncomment-5745919","createdAt":"2023-04-27T17:51:41Z","author":{"login":"ltagliamonte-dd","avatarUrl":"https://avatars.githubusercontent.com/u/51684360?u=8dcdeab05f1b5bbfdf9d50e4087cf52b317a2090&v=4","url":"https://github.com/ltagliamonte-dd"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AS7Mv","url":"https://github.com/PyGithub/PyGithub/discussions/2453","number":2453,"author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Maintainers TODO list","createdAt":"2023-03-14T09:00:16Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQxMDowMzoxMSswMTowMM4AUOIc","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQxMDowMzoxMSswMTowMM4AUOIc","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AUOIc","url":"https://github.com/PyGithub/PyGithub/discussions/2453#discussioncomment-5300764","createdAt":"2023-03-14T09:03:11Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":5,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAFEbFw==","endCursor":"Y3Vyc29yOnYyOpHOAFZ89Q==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AURsX","url":"https://github.com/PyGithub/PyGithub/discussions/2453#discussioncomment-5315351","createdAt":"2023-03-14T22:47:16Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"}},{"id":"DC_kwDOADYVqs4AUWam","url":"https://github.com/PyGithub/PyGithub/discussions/2453#discussioncomment-5334694","createdAt":"2023-03-16T13:42:08Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"}},{"id":"DC_kwDOADYVqs4AVmyk","url":"https://github.com/PyGithub/PyGithub/discussions/2453#discussioncomment-5663908","createdAt":"2023-04-19T16:09:14Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"}},{"id":"DC_kwDOADYVqs4AVm17","url":"https://github.com/PyGithub/PyGithub/discussions/2453#discussioncomment-5664123","createdAt":"2023-04-19T16:28:43Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"}},{"id":"DC_kwDOADYVqs4AVnz1","url":"https://github.com/PyGithub/PyGithub/discussions/2453#discussioncomment-5668085","createdAt":"2023-04-20T01:45:20Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4ATdq2","url":"https://github.com/PyGithub/PyGithub/discussions/2500","number":2500,"author":{"login":"c4mmartin","avatarUrl":"https://avatars.githubusercontent.com/u/54123231?u=5b79339526e45edd8ca29d40c7a6e5b17c4dc106&v=4","url":"https://github.com/c4mmartin"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Trying to fire off workflow_dispatch events","createdAt":"2023-04-18T15:36:05Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNC0xOVQyMDozNjoxNSswMjowMM4AVnLE","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wNC0xOVQyMDozNjoxNSswMjowMM4AVnLE","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AVnLE","url":"https://github.com/PyGithub/PyGithub/discussions/2500#discussioncomment-5665476","createdAt":"2023-04-19T18:36:15Z","author":{"login":"c4mmartin","avatarUrl":"https://avatars.githubusercontent.com/u/54123231?u=5b79339526e45edd8ca29d40c7a6e5b17c4dc106&v=4","url":"https://github.com/c4mmartin"},"isAnswer":true,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4ATJZD","url":"https://github.com/PyGithub/PyGithub/discussions/2480","number":2480,"author":{"login":"arunanandhan","avatarUrl":"https://avatars.githubusercontent.com/u/48812131?u=571c345a5994a55100a16b45a9688f5d6d340730&v=4","url":"https://github.com/arunanandhan"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Is there a way to search if a string present in default branch?","createdAt":"2023-03-29T17:06:04Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0yOVQxOTo1NzowMCswMjowMM4AU3Mg","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0yOVQxOTo1NzowMCswMjowMM4AU3Mg","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AU3Mg","url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5468960","createdAt":"2023-03-29T17:57:00Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":5,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAFN1oA==","endCursor":"Y3Vyc29yOnYyOpHOAFOdMA==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AU3Wg","url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5469600","createdAt":"2023-03-29T19:10:46Z","author":{"login":"arunanandhan","avatarUrl":"https://avatars.githubusercontent.com/u/48812131?u=571c345a5994a55100a16b45a9688f5d6d340730&v=4","url":"https://github.com/arunanandhan"}},{"id":"DC_kwDOADYVqs4AU3dA","url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5470016","createdAt":"2023-03-29T19:57:41Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"}},{"id":"DC_kwDOADYVqs4AU3qO","url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5470862","createdAt":"2023-03-29T21:58:05Z","author":{"login":"arunanandhan","avatarUrl":"https://avatars.githubusercontent.com/u/48812131?u=571c345a5994a55100a16b45a9688f5d6d340730&v=4","url":"https://github.com/arunanandhan"}},{"id":"DC_kwDOADYVqs4AU5F2","url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5476726","createdAt":"2023-03-30T11:41:28Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"}},{"id":"DC_kwDOADYVqs4AU50w","url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5479728","createdAt":"2023-03-30T16:18:48Z","author":{"login":"arunanandhan","avatarUrl":"https://avatars.githubusercontent.com/u/48812131?u=571c345a5994a55100a16b45a9688f5d6d340730&v=4","url":"https://github.com/arunanandhan"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQ6mO","url":"https://github.com/PyGithub/PyGithub/discussions/2321","number":2321,"author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Prioritising pull requests","createdAt":"2022-09-30T06:38:02Z","comments":{"totalCount":4,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wOS0zMFQwODozOToxMyswMjowMM4AOYPD","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AUOEW","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AOYPD","url":"https://github.com/PyGithub/PyGithub/discussions/2321#discussioncomment-3769283","createdAt":"2022-09-30T06:39:13Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4AOYPF","url":"https://github.com/PyGithub/PyGithub/discussions/2321#discussioncomment-3769285","createdAt":"2022-09-30T06:39:52Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4AOYez","url":"https://github.com/PyGithub/PyGithub/discussions/2321#discussioncomment-3770291","createdAt":"2022-09-30T08:37:50Z","author":{"login":"lelegard","avatarUrl":"https://avatars.githubusercontent.com/u/5641922?u=da8392cec1bcf653bded9a1a0f6bfe8b6430436f&v=4","url":"https://github.com/lelegard"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"DC_kwDOADYVqs4AUOEW","url":"https://github.com/PyGithub/PyGithub/discussions/2321#discussioncomment-5300502","createdAt":"2023-03-14T08:36:19Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n            id\n            url\n            number\n            author {\n              login\n              avatarUrl\n              url\n            }\n            repository {\n              owner { login }\n              name\n              issues(first: 10) {\n                totalCount\n                pageInfo {\n                  startCursor\n                  endCursor\n                  hasNextPage\n                  hasPreviousPage\n                }\n                nodes {\n                  databaseId\n                  id\n                  number\n                  title\n                }\n              }\n            }\n            title\n            createdAt\n            comments(first: 10) {\n              totalCount\n              pageInfo {\n                startCursor\n                endCursor\n                hasNextPage\n                hasPreviousPage\n              }\n              nodes {\n                id\n                url\n                createdAt\n                author {\n                  login\n                  avatarUrl\n                  url\n                }\n                isAnswer\n                replies(first: 10) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n                    id\n                    url\n                    createdAt\n                    author {\n                      login\n                      avatarUrl\n                      url\n                    }\n                  }\n                }\n              }\n            }\n            labels(first: 10) {\n              totalCount\n              pageInfo {\n                startCursor\n                endCursor\n                hasNextPage\n                hasPreviousPage\n              }\n              nodes {\n                id\n                name\n                issues(first: 10) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n                    databaseId\n                    id\n                    number\n                    title\n                  }\n                }\n              }\n            }\n          }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO"}}
+200
+[('Date', 'Tue, 17 Sep 2024 11:00:13 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4888'), ('X-RateLimit-Reset', '1726571100'), ('X-RateLimit-Used', '112'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA8:3299B4:11B2AC:11DC37:66E9613C')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNlQxMzoyODo1MiswMTowMM4ASrYx","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT","hasNextPage":true,"hasPreviousPage":true},"nodes":[{"id":"D_kwDOADYVqs4ASrYx","url":"https://github.com/PyGithub/PyGithub/discussions/2438","number":2438,"author":{"login":"Vuizur","avatarUrl":"https://avatars.githubusercontent.com/u/29223849?v=4","url":"https://github.com/Vuizur"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Uploading multiple assets to a release","createdAt":"2023-02-25T09:14:11Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNlQxMzoyODo1MiswMTowMM4ATghk","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNlQxMzoyODo1MiswMTowMM4ATghk","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4ATghk","url":"https://github.com/PyGithub/PyGithub/discussions/2438#discussioncomment-5113956","createdAt":"2023-02-26T12:28:52Z","author":{"login":"Vuizur","avatarUrl":"https://avatars.githubusercontent.com/u/29223849?v=4","url":"https://github.com/Vuizur"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4ARkEV","url":"https://github.com/PyGithub/PyGithub/discussions/2368","number":2368,"author":{"login":"songyuc","avatarUrl":"https://avatars.githubusercontent.com/u/27288110?v=4","url":"https://github.com/songyuc"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Can I download a specifical file from my repo?","createdAt":"2022-11-27T09:33:58Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNVQwOTo0Nzo0MSswMTowMM4ATe2g","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNVQwOTo0Nzo0MSswMTowMM4ATe2g","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4ATe2g","url":"https://github.com/PyGithub/PyGithub/discussions/2368#discussioncomment-5107104","createdAt":"2023-02-25T08:47:41Z","author":{"login":"Vuizur","avatarUrl":"https://avatars.githubusercontent.com/u/29223849?v=4","url":"https://github.com/Vuizur"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4ARjip","url":"https://github.com/PyGithub/PyGithub/discussions/2367","number":2367,"author":{"login":"gitblanc","avatarUrl":"https://avatars.githubusercontent.com/u/87705461?u=d635201aa3d832be964cb3221995a755d3b9d2f5&v=4","url":"https://github.com/gitblanc"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"ImportError: cannot import name 'Github' from 'github' (/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/github/__init__.py)","createdAt":"2022-11-25T21:55:41Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNFQxMDo1OTo1OCswMTowMM4ATcuM","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNFQxMDo1OTo1OCswMTowMM4ATcuM","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4ATcuM","url":"https://github.com/PyGithub/PyGithub/discussions/2367#discussioncomment-5098380","createdAt":"2023-02-24T09:59:58Z","author":{"login":"EnricoMi","avatarUrl":"https://avatars.githubusercontent.com/u/44700269?u=b590c465fef066bba6e61b88133e44896e6f5d51&v=4","url":"https://github.com/EnricoMi"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AP-zL","url":"https://github.com/PyGithub/PyGithub/discussions/2264","number":2264,"author":{"login":"mmdbalkhi","avatarUrl":"https://avatars.githubusercontent.com/u/65954744?u=b6f7ffa28d44a52326a1bc61e509e77e44ea08a2&v=4","url":"https://github.com/mmdbalkhi"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2396)","createdAt":"2022-07-02T16:25:25Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0xMi0xNlQxNzo1NzoyMyswMTowMM4AQ4WH","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0xMi0xNlQxNzo1NzoyMyswMTowMM4AQ4WH","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AQ4WH","url":"https://github.com/PyGithub/PyGithub/discussions/2264#discussioncomment-4425095","createdAt":"2022-12-16T16:57:23Z","author":{"login":"Felixoid","avatarUrl":"https://avatars.githubusercontent.com/u/3025537?u=03433f534de221bbb8447964fb6f7871c665ab49&v=4","url":"https://github.com/Felixoid"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4ARbFw","url":"https://github.com/PyGithub/PyGithub/discussions/2357","number":2357,"author":{"login":"mariolasagna007","avatarUrl":"https://avatars.githubusercontent.com/u/101675846?v=4","url":"https://github.com/mariolasagna007"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"repo.get_codescan_alerts()","createdAt":"2022-11-14T22:45:54Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0xMS0yMlQwODo0Mjo0OCswMTowMM4AQB77","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0xMS0yMlQwODo0Mjo0OCswMTowMM4AQB77","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AQB77","url":"https://github.com/PyGithub/PyGithub/discussions/2357#discussioncomment-4202235","createdAt":"2022-11-22T07:42:48Z","author":{"login":"nirliberman-devocean","avatarUrl":"https://avatars.githubusercontent.com/u/114580980?v=4","url":"https://github.com/nirliberman-devocean"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQ39o","url":"https://github.com/PyGithub/PyGithub/discussions/2318","number":2318,"author":{"login":"xii-yang","avatarUrl":"https://avatars.githubusercontent.com/u/104600753?v=4","url":"https://github.com/xii-yang"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to search the Pull Request which first introduce a commit Sha","createdAt":"2022-09-26T18:58:19Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQvCS","url":"https://github.com/PyGithub/PyGithub/discussions/2306","number":2306,"author":{"login":"xenosdio","avatarUrl":"https://avatars.githubusercontent.com/u/15348591?u=adbf0970bcd72541c3cf7536600af80731c0c45f&v=4","url":"https://github.com/xenosdio"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Verify if login_or_token is correct","createdAt":"2022-09-13T07:31:36Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQsU4","url":"https://github.com/PyGithub/PyGithub/discussions/2304","number":2304,"author":{"login":"DelaporteRobin","avatarUrl":"https://avatars.githubusercontent.com/u/102995191?u=a93e78cb60b7cbb1d25b29a57eb154ecf469cd1d&v=4","url":"https://github.com/DelaporteRobin"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Upload files on github","createdAt":"2022-09-08T17:24:48Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQkpa","url":"https://github.com/PyGithub/PyGithub/discussions/2298","number":2298,"author":{"login":"mosheco","avatarUrl":"https://avatars.githubusercontent.com/u/1520292?v=4","url":"https://github.com/mosheco"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Question: where is GithubIntegration documented .","createdAt":"2022-08-29T15:42:40Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQbma","url":"https://github.com/PyGithub/PyGithub/discussions/2293","number":2293,"author":{"login":"ygoldsmith","avatarUrl":"https://avatars.githubusercontent.com/u/100769550?v=4","url":"https://github.com/ygoldsmith"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to query check suite results","createdAt":"2022-08-16T01:21:52Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQbDa","url":"https://github.com/PyGithub/PyGithub/discussions/2292","number":2292,"author":{"login":"nri-xiang-liu-01","avatarUrl":"https://avatars.githubusercontent.com/u/77437579?v=4","url":"https://github.com/nri-xiang-liu-01"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How can I create a new branch by use PyGithub?","createdAt":"2022-08-15T08:30:10Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wOC0xNVQxMTowMzo0MyswMjowMM4AM9R5","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wOC0xNVQxMTowMzo0MyswMjowMM4AM9R5","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AM9R5","url":"https://github.com/PyGithub/PyGithub/discussions/2292#discussioncomment-3396729","createdAt":"2022-08-15T09:03:43Z","author":{"login":"nri-xiang-liu-01","avatarUrl":"https://avatars.githubusercontent.com/u/77437579?v=4","url":"https://github.com/nri-xiang-liu-01"},"isAnswer":true,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AOdu4","url":"https://github.com/PyGithub/PyGithub/discussions/2153","number":2153,"author":{"login":"yoyomeng2","avatarUrl":"https://avatars.githubusercontent.com/u/23482580?u=2b1e459e0ebcf16d615f6e5762fd2888c7467d97&v=4","url":"https://github.com/yoyomeng2"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Is there support to set bypass PR requirements users?","createdAt":"2022-01-10T22:52:19Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wMS0xMVQyMDoxMTo0NyswMTowMM4AHcD5","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wMS0xMVQyMDoxMTo0NyswMTowMM4AHcD5","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AHcD5","url":"https://github.com/PyGithub/PyGithub/discussions/2153#discussioncomment-1949945","createdAt":"2022-01-11T19:11:47Z","author":{"login":"yoyomeng2","avatarUrl":"https://avatars.githubusercontent.com/u/23482580?u=2b1e459e0ebcf16d615f6e5762fd2888c7467d97&v=4","url":"https://github.com/yoyomeng2"},"isAnswer":true,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOADLnDQ==","endCursor":"Y3Vyc29yOnYyOpHOADLnDQ==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AMucN","url":"https://github.com/PyGithub/PyGithub/discussions/2153#discussioncomment-3335949","createdAt":"2022-08-05T18:14:36Z","author":{"login":"yoyomeng2","avatarUrl":"https://avatars.githubusercontent.com/u/23482580?u=2b1e459e0ebcf16d615f6e5762fd2888c7467d97&v=4","url":"https://github.com/yoyomeng2"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AQJZe","url":"https://github.com/PyGithub/PyGithub/discussions/2277","number":2277,"author":{"login":"kenorb","avatarUrl":"https://avatars.githubusercontent.com/u/266306?v=4","url":"https://github.com/kenorb"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Download an artifact's file from GitHub Actions (Workflows)","createdAt":"2022-07-20T17:34:11Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wNy0yMFQxOTozNjozNCswMjowMM4AMLMC","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wNy0yMFQxOTozNjozNCswMjowMM4AMLMC","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AMLMC","url":"https://github.com/PyGithub/PyGithub/discussions/2277#discussioncomment-3191554","createdAt":"2022-07-20T17:36:34Z","author":{"login":"kenorb","avatarUrl":"https://avatars.githubusercontent.com/u/266306?v=4","url":"https://github.com/kenorb"},"isAnswer":true,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4ANphT","url":"https://github.com/PyGithub/PyGithub/discussions/2057","number":2057,"author":{"login":"LuisSFGH","avatarUrl":"https://avatars.githubusercontent.com/u/50593254?u=593fae5e07e5f1ef28a8e1083d3f7d484dd684e1&v=4","url":"https://github.com/LuisSFGH"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Do you have plans to add workflows features?","createdAt":"2021-09-16T18:04:39Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wNy0yMFQxNzowMjoxMSswMjowMM4AMK1M","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wNy0yMFQxNzowMjoxMSswMjowMM4AMK1M","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AMK1M","url":"https://github.com/PyGithub/PyGithub/discussions/2057#discussioncomment-3190092","createdAt":"2022-07-20T15:02:11Z","author":{"login":"kenorb","avatarUrl":"https://avatars.githubusercontent.com/u/266306?v=4","url":"https://github.com/kenorb"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4APrSb","url":"https://github.com/PyGithub/PyGithub/discussions/2246","number":2246,"author":{"login":"sayakpaul","avatarUrl":"https://avatars.githubusercontent.com/u/22957388?u=16f941c804f69322c2ef8ae73f206202652e76b2&v=4","url":"https://github.com/sayakpaul"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Question on hostname","createdAt":"2022-05-31T07:22:53Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4APqQq","url":"https://github.com/PyGithub/PyGithub/discussions/2242","number":2242,"author":{"login":"sr-murthy","avatarUrl":"https://avatars.githubusercontent.com/u/9358070?u=3049460e40df6452b6d26305142fce380097a4e8&v=4","url":"https://github.com/sr-murthy"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Top repo contributors","createdAt":"2022-05-28T19:01:47Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AOz7S","url":"https://github.com/PyGithub/PyGithub/discussions/2179","number":2179,"author":{"login":"kamaraj-muthupandian","avatarUrl":"https://avatars.githubusercontent.com/u/99426179?v=4","url":"https://github.com/kamaraj-muthupandian"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Connect GHE cloud using OIDC","createdAt":"2022-02-17T06:40:50Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AOw8Q","url":"https://github.com/PyGithub/PyGithub/discussions/2173","number":2173,"author":{"login":"xmo-odoo","avatarUrl":"https://avatars.githubusercontent.com/u/7571158?u=48ca003fd46855fe9e28bbdaa25d8d9760418f1b&v=4","url":"https://github.com/xmo-odoo"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Dedicated builder object for review comments?","createdAt":"2022-02-11T12:27:55Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AOeON","url":"https://github.com/PyGithub/PyGithub/discussions/2155","number":2155,"author":{"login":"yoyomeng2","avatarUrl":"https://avatars.githubusercontent.com/u/23482580?u=2b1e459e0ebcf16d615f6e5762fd2888c7467d97&v=4","url":"https://github.com/yoyomeng2"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"GithubCredentials 401","createdAt":"2022-01-11T19:16:29Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"D_kwDOADYVqs4AONXM","url":"https://github.com/PyGithub/PyGithub/discussions/2124","number":2124,"author":{"login":"padmashree12","avatarUrl":"https://avatars.githubusercontent.com/u/48378512?v=4","url":"https://github.com/padmashree12"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Star","createdAt":"2021-12-06T05:57:05Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMi0wNlQwNzo1NjowNyswMTowMM4AGsdN","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMi0wNlQwNzo1NjowNyswMTowMM4AGsdN","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AGsdN","url":"https://github.com/PyGithub/PyGithub/discussions/2124#discussioncomment-1754957","createdAt":"2021-12-06T06:56:07Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zNDkxNjI2","url":"https://github.com/PyGithub/PyGithub/discussions/2013","number":2013,"author":{"login":"simkimsia","avatarUrl":"https://avatars.githubusercontent.com/u/245021?v=4","url":"https://github.com/simkimsia"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to run tests for just 1 test case?","createdAt":"2021-07-31T03:55:00Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNy0zMVQwNjo0Mjo1NSswMjowMM4AELAS","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMi0wM1QxNDoxMjowNiswMTowMM4AGpxM","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50MTA5MzY1MA==","url":"https://github.com/PyGithub/PyGithub/discussions/2013#discussioncomment-1093650","createdAt":"2021-07-31T04:42:55Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":false,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOABqbAA==","endCursor":"Y3Vyc29yOnYyOpHOABqbAA==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AGpsA","url":"https://github.com/PyGithub/PyGithub/discussions/2013#discussioncomment-1743616","createdAt":"2021-12-03T12:12:42Z","author":{"login":"xmo-odoo","avatarUrl":"https://avatars.githubusercontent.com/u/7571158?u=48ca003fd46855fe9e28bbdaa25d8d9760418f1b&v=4","url":"https://github.com/xmo-odoo"}}]}},{"id":"DC_kwDOADYVqs4AGpxM","url":"https://github.com/PyGithub/PyGithub/discussions/2013#discussioncomment-1743948","createdAt":"2021-12-03T13:12:06Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zNDU2NDg0","url":"https://github.com/PyGithub/PyGithub/discussions/1993","number":1993,"author":{"login":"scoates","avatarUrl":"https://avatars.githubusercontent.com/u/71983?v=4","url":"https://github.com/scoates"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Drop .pyi?","createdAt":"2021-07-12T15:07:04Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMi0wM1QxMjo1Njo1MyswMTowMM4AGpqy","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMi0wM1QxMjo1Njo1MyswMTowMM4AGpqy","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AGpqy","url":"https://github.com/PyGithub/PyGithub/discussions/1993#discussioncomment-1743538","createdAt":"2021-12-03T11:56:53Z","author":{"login":"xmo-odoo","avatarUrl":"https://avatars.githubusercontent.com/u/7571158?u=48ca003fd46855fe9e28bbdaa25d8d9760418f1b&v=4","url":"https://github.com/xmo-odoo"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zNTExNTg4","url":"https://github.com/PyGithub/PyGithub/discussions/2023","number":2023,"author":{"login":"yoyomeng2","avatarUrl":"https://avatars.githubusercontent.com/u/23482580?u=2b1e459e0ebcf16d615f6e5762fd2888c7467d97&v=4","url":"https://github.com/yoyomeng2"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Looking for githubstatus Object?","createdAt":"2021-08-10T17:41:21Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMi0wM1QxMjo0ODo0MSswMTowMM4AGpqF","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0xMi0wM1QxMjo0ODo0MSswMTowMM4AGpqF","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AGpqF","url":"https://github.com/PyGithub/PyGithub/discussions/2023#discussioncomment-1743493","createdAt":"2021-12-03T11:48:41Z","author":{"login":"xmo-odoo","avatarUrl":"https://avatars.githubusercontent.com/u/7571158?u=48ca003fd46855fe9e28bbdaa25d8d9760418f1b&v=4","url":"https://github.com/xmo-odoo"},"isAnswer":true,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zNTA0OTQ4","url":"https://github.com/PyGithub/PyGithub/discussions/2018","number":2018,"author":{"login":"evilensky","avatarUrl":"https://avatars.githubusercontent.com/u/1483180?u=d53bde95822c77eadc38d8d3e7309e0739e02a47&v=4","url":"https://github.com/evilensky"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"audit-log","createdAt":"2021-08-06T01:18:33Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zNTAwNzI2","url":"https://github.com/PyGithub/PyGithub/discussions/2015","number":2015,"author":{"login":"orenzp","avatarUrl":"https://avatars.githubusercontent.com/u/25840401?u=3a55b212cf7de882312a4b3767712248c824e283&v=4","url":"https://github.com/orenzp"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"PyGithub support for Team","createdAt":"2021-08-03T13:15:08Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zMjQzMTgx","url":"https://github.com/PyGithub/PyGithub/discussions/1864","number":1864,"author":{"login":"Nuzair46","avatarUrl":"https://avatars.githubusercontent.com/u/38219313?u=4aa52dfb28c4bd3c748b48c8864bc12dc04d6c49&v=4","url":"https://github.com/Nuzair46"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"get_contributers","createdAt":"2021-02-27T12:08:05Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNC0xOVQxNjo1Mzo1MiswMjowMM4ACZ_J","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNy0xOFQwNDo1NDoxNSswMjowMM4AD4Ya","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NjMwNzI5","url":"https://github.com/PyGithub/PyGithub/discussions/1864#discussioncomment-630729","createdAt":"2021-04-19T14:53:52Z","author":null,"isAnswer":false,"replies":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAAmgig==","endCursor":"Y3Vyc29yOnYyOpHOAAmubQ==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NjMwOTIy","url":"https://github.com/PyGithub/PyGithub/discussions/1864#discussioncomment-630922","createdAt":"2021-04-19T15:28:42Z","author":{"login":"Nuzair46","avatarUrl":"https://avatars.githubusercontent.com/u/38219313?u=4aa52dfb28c4bd3c748b48c8864bc12dc04d6c49&v=4","url":"https://github.com/Nuzair46"}},{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NjM0NDc3","url":"https://github.com/PyGithub/PyGithub/discussions/1864#discussioncomment-634477","createdAt":"2021-04-20T10:26:10Z","author":{"login":"Nuzair46","avatarUrl":"https://avatars.githubusercontent.com/u/38219313?u=4aa52dfb28c4bd3c748b48c8864bc12dc04d6c49&v=4","url":"https://github.com/Nuzair46"}}]}},{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50MTAxNzM3MA==","url":"https://github.com/PyGithub/PyGithub/discussions/1864#discussioncomment-1017370","createdAt":"2021-07-18T02:54:15Z","author":{"login":"kaustubhgupta","avatarUrl":"https://avatars.githubusercontent.com/u/43691873?u=8dd738718ac7ffad4ef31e86b5d780a1141c695d&v=4","url":"https://github.com/kaustubhgupta"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zMzg4NzEy","url":"https://github.com/PyGithub/PyGithub/discussions/1964","number":1964,"author":{"login":"Captain8771","avatarUrl":"https://avatars.githubusercontent.com/u/81252038?u=aa4db48c425922586bf9a42d21ffea28a1e9644c&v=4","url":"https://github.com/Captain8771"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"ModuleNotFoundError: No module named 'github' but i pip installed pygithub?","createdAt":"2021-05-29T10:00:16Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0zMFQwODo1NTowNSswMjowMM4ADEGS","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0zMFQwODo1NTowNSswMjowMM4ADEGS","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50ODAzMjE4","url":"https://github.com/PyGithub/PyGithub/discussions/1964#discussioncomment-803218","createdAt":"2021-05-30T06:55:05Z","author":{"login":"aahnik","avatarUrl":"https://avatars.githubusercontent.com/u/66209958?u=b2112f9e4b69aafdb5e3a331767ab053ecf19d73&v=4","url":"https://github.com/aahnik"},"isAnswer":true,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAAxEMQ==","endCursor":"Y3Vyc29yOnYyOpHOAAxEMQ==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50ODAzODg5","url":"https://github.com/PyGithub/PyGithub/discussions/1964#discussioncomment-803889","createdAt":"2021-05-30T15:47:09Z","author":{"login":"Captain8771","avatarUrl":"https://avatars.githubusercontent.com/u/81252038?u=aa4db48c425922586bf9a42d21ffea28a1e9644c&v=4","url":"https://github.com/Captain8771"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb243Mzc4NA==","url":"https://github.com/PyGithub/PyGithub/discussions/1790","number":1790,"author":{"login":"ssbarnea","avatarUrl":"https://avatars.githubusercontent.com/u/102495?u=c7bd9ddf127785286fc939dd18cb02db0a453bce&v=4","url":"https://github.com/ssbarnea"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to batch enable auto-merges on multiple repositories?","createdAt":"2020-12-17T09:22:51Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0xOFQxODoxOTowMiswMjowMM4AC4C3","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0xOFQxODoxOTowMiswMjowMM4AC4C3","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NzUzODQ3","url":"https://github.com/PyGithub/PyGithub/discussions/1790#discussioncomment-753847","createdAt":"2021-05-18T16:19:02Z","author":{"login":"Plabick","avatarUrl":"https://avatars.githubusercontent.com/u/7085883?u=6c3373543ebb05a7430e64cf218b97f3a83a4bfe&v=4","url":"https://github.com/Plabick"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zMzU4MDAz","url":"https://github.com/PyGithub/PyGithub/discussions/1946","number":1946,"author":{"login":"astrochun","avatarUrl":"https://avatars.githubusercontent.com/u/20305734?u=84a111e22eef413d58e1370acea7cb12d075fc05&v=4","url":"https://github.com/astrochun"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Exporting JSON about repositories","createdAt":"2021-05-09T23:01:57Z","comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0xMFQwMzo0NDoyMCswMjowMM4ACu7F","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0xMFQwNjowMjozOCswMjowMM4ACu-J","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NzE2NDg1","url":"https://github.com/PyGithub/PyGithub/discussions/1946#discussioncomment-716485","createdAt":"2021-05-10T01:44:20Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":false,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAArvQg==","endCursor":"Y3Vyc29yOnYyOpHOAArvQg==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NzE2NjEw","url":"https://github.com/PyGithub/PyGithub/discussions/1946#discussioncomment-716610","createdAt":"2021-05-10T02:59:54Z","author":{"login":"astrochun","avatarUrl":"https://avatars.githubusercontent.com/u/20305734?u=84a111e22eef413d58e1370acea7cb12d075fc05&v=4","url":"https://github.com/astrochun"}}]}},{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NzE2Njgx","url":"https://github.com/PyGithub/PyGithub/discussions/1946#discussioncomment-716681","createdAt":"2021-05-10T04:02:38Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":false,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAArvzg==","endCursor":"Y3Vyc29yOnYyOpHOAArvzg==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NzE2NzUw","url":"https://github.com/PyGithub/PyGithub/discussions/1946#discussioncomment-716750","createdAt":"2021-05-10T04:59:20Z","author":{"login":"astrochun","avatarUrl":"https://avatars.githubusercontent.com/u/20305734?u=84a111e22eef413d58e1370acea7cb12d075fc05&v=4","url":"https://github.com/astrochun"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zMzQ0NzIz","url":"https://github.com/PyGithub/PyGithub/discussions/1936","number":1936,"author":{"login":"bhushanladdad","avatarUrl":"https://avatars.githubusercontent.com/u/82919474?v=4","url":"https://github.com/bhushanladdad"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"get_contents thorws error UnknownObjectException","createdAt":"2021-04-30T03:33:06Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNC0zMFQwNzoxOToyMyswMjowMM4ACldw","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNC0zMFQwNzoxOToyMyswMjowMM4ACldw","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50Njc3NzQ0","url":"https://github.com/PyGithub/PyGithub/discussions/1936#discussioncomment-677744","createdAt":"2021-04-30T05:19:23Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":false,"replies":{"totalCount":3,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAApfZw==","endCursor":"Y3Vyc29yOnYyOpHOAApngQ==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50Njc5Nzgz","url":"https://github.com/PyGithub/PyGithub/discussions/1936#discussioncomment-679783","createdAt":"2021-04-30T14:22:05Z","author":{"login":"bhushanladdad","avatarUrl":"https://avatars.githubusercontent.com/u/82919474?v=4","url":"https://github.com/bhushanladdad"}},{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NjgxODM2","url":"https://github.com/PyGithub/PyGithub/discussions/1936#discussioncomment-681836","createdAt":"2021-05-01T02:59:21Z","author":{"login":"bhushanladdad","avatarUrl":"https://avatars.githubusercontent.com/u/82919474?v=4","url":"https://github.com/bhushanladdad"}},{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NjgxODU3","url":"https://github.com/PyGithub/PyGithub/discussions/1936#discussioncomment-681857","createdAt":"2021-05-01T03:33:10Z","author":{"login":"bhushanladdad","avatarUrl":"https://avatars.githubusercontent.com/u/82919474?v=4","url":"https://github.com/bhushanladdad"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n            id\n            url\n            number\n            author {\n              login\n              avatarUrl\n              url\n            }\n            repository {\n              owner { login }\n              name\n              issues(first: 10) {\n                totalCount\n                pageInfo {\n                  startCursor\n                  endCursor\n                  hasNextPage\n                  hasPreviousPage\n                }\n                nodes {\n                  databaseId\n                  id\n                  number\n                  title\n                }\n              }\n            }\n            title\n            createdAt\n            comments(first: 10) {\n              totalCount\n              pageInfo {\n                startCursor\n                endCursor\n                hasNextPage\n                hasPreviousPage\n              }\n              nodes {\n                id\n                url\n                createdAt\n                author {\n                  login\n                  avatarUrl\n                  url\n                }\n                isAnswer\n                replies(first: 10) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n                    id\n                    url\n                    createdAt\n                    author {\n                      login\n                      avatarUrl\n                      url\n                    }\n                  }\n                }\n              }\n            }\n            labels(first: 10) {\n              totalCount\n              pageInfo {\n                startCursor\n                endCursor\n                hasNextPage\n                hasPreviousPage\n              }\n              nodes {\n                id\n                name\n                issues(first: 10) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n                    databaseId\n                    id\n                    number\n                    title\n                  }\n                }\n              }\n            }\n          }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT"}}
+200
+[('Date', 'Tue, 17 Sep 2024 11:00:14 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4882'), ('X-RateLimit-Reset', '1726571100'), ('X-RateLimit-Used', '118'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA2:221185:113554:115F6A:66E9613D')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wMy0xOFQwMzowODowMSswMTowMM4ALjaQ","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":true},"nodes":[{"id":"MDEwOkRpc2N1c3Npb24zMDI4NjI0","url":"https://github.com/PyGithub/PyGithub/discussions/1848","number":1848,"author":{"login":"dejokz","avatarUrl":"https://avatars.githubusercontent.com/u/6295808?u=7132032b8c925592a2cfba73ec7d822655b930d6&v=4","url":"https://github.com/dejokz"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to get number of open and closed issue of a repo","createdAt":"2021-02-07T14:48:21Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wMy0xOFQwMzowODowMCswMTowMM4AB5NY","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wMy0xOFQwMzowODowMCswMTowMM4AB5NY","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50NDk2NDcy","url":"https://github.com/PyGithub/PyGithub/discussions/1848#discussioncomment-496472","createdAt":"2021-03-18T02:08:00Z","author":{"login":"walterrowe","avatarUrl":"https://avatars.githubusercontent.com/u/7131288?u=d995f2a0e79d81e5e1cbc5d20d8e9c72aa295f4d&v=4","url":"https://github.com/walterrowe"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24zMjI2MTI4","url":"https://github.com/PyGithub/PyGithub/discussions/1854","number":1854,"author":{"login":"MarkWilsonODS","avatarUrl":"https://avatars.githubusercontent.com/u/70649883?u=5c82d66772a7231d4d31965be7b2af1fe293f0a5&v=4","url":"https://github.com/MarkWilsonODS"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Repo visibility","createdAt":"2021-02-17T15:13:07Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb24xNjY3ODM4","url":"https://github.com/PyGithub/PyGithub/discussions/1819","number":1819,"author":{"login":"kenorb","avatarUrl":"https://avatars.githubusercontent.com/u/266306?v=4","url":"https://github.com/kenorb"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"How to access logs_url's contents?","createdAt":"2021-01-09T23:26:49Z","comments":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb240ODg4Ng==","url":"https://github.com/PyGithub/PyGithub/discussions/1778","number":1778,"author":{"login":"henryiii","avatarUrl":"https://avatars.githubusercontent.com/u/4616906?u=a32581e89b27309b54a9d491b7073657e6537aff&v=4","url":"https://github.com/henryiii"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Dump Issue to structured format","createdAt":"2020-12-09T04:41:36Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0MzozMSswMTowMM4AAqjs","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0MzozMSswMTowMM4AAqjs","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50MTc0MzE2","url":"https://github.com/PyGithub/PyGithub/discussions/1778#discussioncomment-174316","createdAt":"2020-12-09T05:43:31Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":true,"replies":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpHOAAK7tw==","endCursor":"Y3Vyc29yOnYyOpHOAAK7tw==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50MTc5MTI3","url":"https://github.com/PyGithub/PyGithub/discussions/1778#discussioncomment-179127","createdAt":"2020-12-09T14:56:50Z","author":{"login":"henryiii","avatarUrl":"https://avatars.githubusercontent.com/u/4616906?u=a32581e89b27309b54a9d491b7073657e6537aff&v=4","url":"https://github.com/henryiii"}}]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}},{"id":"MDEwOkRpc2N1c3Npb240ODkxMQ==","url":"https://github.com/PyGithub/PyGithub/discussions/1780","number":1780,"author":{"login":"henryiii","avatarUrl":"https://avatars.githubusercontent.com/u/4616906?u=a32581e89b27309b54a9d491b7073657e6537aff&v=4","url":"https://github.com/henryiii"},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub","issues":{"totalCount":1599,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMi0yN1QxMDoxMToxNCswMTowMM4AM9hL","endCursor":"Y3Vyc29yOnYyOpK5MjAxMi0wMy0xMlQyMzowODowNiswMTowMM4ANz0k","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"databaseId":3397707,"id":"MDU6SXNzdWUzMzk3NzA3","number":1,"title":"Gitub -> Github everywhere"},{"databaseId":3527231,"id":"MDU6SXNzdWUzNTI3MjMx","number":2,"title":"Use objects instead of string for shas, ids, etc. arguments"},{"databaseId":3527245,"id":"MDU6SXNzdWUzNTI3MjQ1","number":3,"title":"Deduce mandatory parameters"},{"databaseId":3527266,"id":"MDU6SXNzdWUzNTI3MjY2","number":4,"title":"Review public interface homogeneity "},{"databaseId":3561926,"id":"MDU6SXNzdWUzNTYxOTI2","number":5,"title":"Implement full API"},{"databaseId":3617711,"id":"MDU6SXNzdWUzNjE3NzEx","number":6,"title":"Review exceptions policy when receiving error HTTP status"},{"databaseId":3618829,"id":"MDU6SXNzdWUzNjE4ODI5","number":7,"title":"Publish version 0.4"},{"databaseId":3619658,"id":"MDU6SXNzdWUzNjE5NjU4","number":8,"title":"Publish version 0.5"},{"databaseId":3619973,"id":"MDU6SXNzdWUzNjE5OTcz","number":9,"title":"Publish version 1.0"},{"databaseId":3620132,"id":"MDU6SXNzdWUzNjIwMTMy","number":10,"title":"Separate GithubObjects.py in several files"}]}},"title":"Show an example of a more advanced query","createdAt":"2020-12-09T04:46:24Z","comments":{"totalCount":1,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM4AAqj0","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM4AAqj0","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"MDE3OkRpc2N1c3Npb25Db21tZW50MTc0MzI0","url":"https://github.com/PyGithub/PyGithub/discussions/1780#discussioncomment-174324","createdAt":"2020-12-09T05:44:32Z","author":{"login":"s-t-e-v-e-n-k","avatarUrl":"https://avatars.githubusercontent.com/u/15225059?u=a70d4bde1715f244fe491027977198fd6c44ee3a&v=4","url":"https://github.com/s-t-e-v-e-n-k"},"isAnswer":false,"replies":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]},"labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]}}]}}}}
+
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub/issues
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 11:00:14 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/"fef5ee4d1233ec6fb018b15187c7020b1fac0d04ddc4d2deff236dca26f07db2"'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues?page=2>; rel="next", <https://api.github.com/repositories/3544490/issues?page=12>; rel="last"'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4983'), ('X-RateLimit-Reset', '1726571099'), ('X-RateLimit-Used', '17'), ('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', '7FAF:367CD7:11BB5E:11E580:66E9613E')]
+[{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3045","id":2528623106,"node_id":"PR_kwDOADYVqs57oSc6","number":3045,"title":"Make tests pass some more years","user":{"login":"bmwiedemann","id":637990,"node_id":"MDQ6VXNlcjYzNzk5MA==","avatar_url":"https://avatars.githubusercontent.com/u/637990?v=4","gravatar_id":"","url":"https://api.github.com/users/bmwiedemann","html_url":"https://github.com/bmwiedemann","followers_url":"https://api.github.com/users/bmwiedemann/followers","following_url":"https://api.github.com/users/bmwiedemann/following{/other_user}","gists_url":"https://api.github.com/users/bmwiedemann/gists{/gist_id}","starred_url":"https://api.github.com/users/bmwiedemann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmwiedemann/subscriptions","organizations_url":"https://api.github.com/users/bmwiedemann/orgs","repos_url":"https://api.github.com/users/bmwiedemann/repos","events_url":"https://api.github.com/users/bmwiedemann/events{/privacy}","received_events_url":"https://api.github.com/users/bmwiedemann/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-16T14:19:35Z","updated_at":"2024-09-16T14:19:35Z","closed_at":null,"author_association":"FIRST_TIME_CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3045","html_url":"https://github.com/PyGithub/PyGithub/pull/3045","diff_url":"https://github.com/PyGithub/PyGithub/pull/3045.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3045.patch","merged_at":null},"body":"Without this patch, tests fail after 2024-11-25.\n\nBackground:\nAs part of my work on reproducible builds for openSUSE, I check that software still gives identical build results in the future.\nThe usual offset is +16 years, because that is how long I expect some software will be used in some places.\nThis showed up failing tests in our python-PyGithub package build.\nSee https://reproducible-builds.org/ for why this matters.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3043","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3043/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3043/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3043/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3043","id":2523085920,"node_id":"PR_kwDOADYVqs57V2ML","number":3043,"title":"Add signature field for commits","user":{"login":"parthmishra","id":3813311,"node_id":"MDQ6VXNlcjM4MTMzMTE=","avatar_url":"https://avatars.githubusercontent.com/u/3813311?v=4","gravatar_id":"","url":"https://api.github.com/users/parthmishra","html_url":"https://github.com/parthmishra","followers_url":"https://api.github.com/users/parthmishra/followers","following_url":"https://api.github.com/users/parthmishra/following{/other_user}","gists_url":"https://api.github.com/users/parthmishra/gists{/gist_id}","starred_url":"https://api.github.com/users/parthmishra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/parthmishra/subscriptions","organizations_url":"https://api.github.com/users/parthmishra/orgs","repos_url":"https://api.github.com/users/parthmishra/repos","events_url":"https://api.github.com/users/parthmishra/events{/privacy}","received_events_url":"https://api.github.com/users/parthmishra/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-12T18:35:31Z","updated_at":"2024-09-12T19:31:05Z","closed_at":null,"author_association":"FIRST_TIME_CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3043","html_url":"https://github.com/PyGithub/PyGithub/pull/3043","diff_url":"https://github.com/PyGithub/PyGithub/pull/3043.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3043.patch","merged_at":null},"body":"The REST API documentation includes the `signature` field: https://docs.github.com/en/rest/git/commits?apiVersion=2022-11-28#create-a-commit\r\n\r\nThis PR adds the optional field. I'm not sure what the difference is between `Commit` and `GitCommit` so I added it to both. ","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3043/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3043/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3042","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3042/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3042/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3042/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3042","id":2515754385,"node_id":"I_kwDOADYVqs6V812R","number":3042,"title":"github.Repository is missing method for GET automated-security-fixes","user":{"login":"BenedictStrunk-otto","id":174349371,"node_id":"U_kgDOCmRcOw","avatar_url":"https://avatars.githubusercontent.com/u/174349371?v=4","gravatar_id":"","url":"https://api.github.com/users/BenedictStrunk-otto","html_url":"https://github.com/BenedictStrunk-otto","followers_url":"https://api.github.com/users/BenedictStrunk-otto/followers","following_url":"https://api.github.com/users/BenedictStrunk-otto/following{/other_user}","gists_url":"https://api.github.com/users/BenedictStrunk-otto/gists{/gist_id}","starred_url":"https://api.github.com/users/BenedictStrunk-otto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BenedictStrunk-otto/subscriptions","organizations_url":"https://api.github.com/users/BenedictStrunk-otto/orgs","repos_url":"https://api.github.com/users/BenedictStrunk-otto/repos","events_url":"https://api.github.com/users/BenedictStrunk-otto/events{/privacy}","received_events_url":"https://api.github.com/users/BenedictStrunk-otto/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-10T08:23:27Z","updated_at":"2024-09-10T08:23:27Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"/repos/{owner}/{repo}/automated-security-fixes allows for GET, PUT and DELETE. \r\nPUT (enable_automated_security_fixes) and DELETE (disable_automated_security_fixes) are implemented while GET seemingly isn't.\r\n\r\nGitHub API docs: https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#check-if-automated-security-fixes-are-enabled-for-a-repository\r\n\r\nBest regards and thanks for this project :)","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3042/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3042/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3041","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3041/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3041/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3041/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3041","id":2515084310,"node_id":"PR_kwDOADYVqs566WF8","number":3041,"title":"Add 'get_repo_security_advisories' to Organization.","user":{"login":"billnapier","id":163577,"node_id":"MDQ6VXNlcjE2MzU3Nw==","avatar_url":"https://avatars.githubusercontent.com/u/163577?v=4","gravatar_id":"","url":"https://api.github.com/users/billnapier","html_url":"https://github.com/billnapier","followers_url":"https://api.github.com/users/billnapier/followers","following_url":"https://api.github.com/users/billnapier/following{/other_user}","gists_url":"https://api.github.com/users/billnapier/gists{/gist_id}","starred_url":"https://api.github.com/users/billnapier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/billnapier/subscriptions","organizations_url":"https://api.github.com/users/billnapier/orgs","repos_url":"https://api.github.com/users/billnapier/repos","events_url":"https://api.github.com/users/billnapier/events{/privacy}","received_events_url":"https://api.github.com/users/billnapier/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-09T23:11:21Z","updated_at":"2024-09-09T23:15:29Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3041","html_url":"https://github.com/PyGithub/PyGithub/pull/3041","diff_url":"https://github.com/PyGithub/PyGithub/pull/3041.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3041.patch","merged_at":null},"body":"This is only partially what is asked for in bug: #2082, but it's a start.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3041/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3041/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3040","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3040/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3040/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3040/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3040","id":2514385189,"node_id":"PR_kwDOADYVqs563_G9","number":3040,"title":"Adds List organization memberships for the authenticated user","user":{"login":"eduramirezh","id":1679647,"node_id":"MDQ6VXNlcjE2Nzk2NDc=","avatar_url":"https://avatars.githubusercontent.com/u/1679647?v=4","gravatar_id":"","url":"https://api.github.com/users/eduramirezh","html_url":"https://github.com/eduramirezh","followers_url":"https://api.github.com/users/eduramirezh/followers","following_url":"https://api.github.com/users/eduramirezh/following{/other_user}","gists_url":"https://api.github.com/users/eduramirezh/gists{/gist_id}","starred_url":"https://api.github.com/users/eduramirezh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eduramirezh/subscriptions","organizations_url":"https://api.github.com/users/eduramirezh/orgs","repos_url":"https://api.github.com/users/eduramirezh/repos","events_url":"https://api.github.com/users/eduramirezh/events{/privacy}","received_events_url":"https://api.github.com/users/eduramirezh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-09T16:21:19Z","updated_at":"2024-09-09T16:21:19Z","closed_at":null,"author_association":"FIRST_TIME_CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3040","html_url":"https://github.com/PyGithub/PyGithub/pull/3040","diff_url":"https://github.com/PyGithub/PyGithub/pull/3040.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3040.patch","merged_at":null},"body":"This endpoint described in [the docs](https://docs.github.com/en/rest/orgs/members?apiVersion=2022-11-28#list-organization-memberships-for-the-authenticated-user)\nwas missing. This adds it as a method in the AuthenticatedUser class which returns a list of Memeberships.\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3040/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3040/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3039","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3039/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3039/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3039/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3039","id":2514328465,"node_id":"PR_kwDOADYVqs563ytM","number":3039,"title":"Update PaginatedList.py","user":{"login":"sam93210","id":35731946,"node_id":"MDQ6VXNlcjM1NzMxOTQ2","avatar_url":"https://avatars.githubusercontent.com/u/35731946?v=4","gravatar_id":"","url":"https://api.github.com/users/sam93210","html_url":"https://github.com/sam93210","followers_url":"https://api.github.com/users/sam93210/followers","following_url":"https://api.github.com/users/sam93210/following{/other_user}","gists_url":"https://api.github.com/users/sam93210/gists{/gist_id}","starred_url":"https://api.github.com/users/sam93210/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sam93210/subscriptions","organizations_url":"https://api.github.com/users/sam93210/orgs","repos_url":"https://api.github.com/users/sam93210/repos","events_url":"https://api.github.com/users/sam93210/events{/privacy}","received_events_url":"https://api.github.com/users/sam93210/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-09T15:52:37Z","updated_at":"2024-09-09T16:00:50Z","closed_at":null,"author_association":"FIRST_TIME_CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3039","html_url":"https://github.com/PyGithub/PyGithub/pull/3039","diff_url":"https://github.com/PyGithub/PyGithub/pull/3039.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3039.patch","merged_at":null},"body":"small fix can causing unwanted behavior in future if default per_page change","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3039/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3039/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3038","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3038/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3038/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3038/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3038","id":2514060194,"node_id":"I_kwDOADYVqs6V2YOi","number":3038,"title":"issues with pull request review, adding many comments always fails, publishing pending reviews not supported","user":{"login":"johannes-russek-sh","id":165579958,"node_id":"U_kgDOCd6Mtg","avatar_url":"https://avatars.githubusercontent.com/u/165579958?v=4","gravatar_id":"","url":"https://api.github.com/users/johannes-russek-sh","html_url":"https://github.com/johannes-russek-sh","followers_url":"https://api.github.com/users/johannes-russek-sh/followers","following_url":"https://api.github.com/users/johannes-russek-sh/following{/other_user}","gists_url":"https://api.github.com/users/johannes-russek-sh/gists{/gist_id}","starred_url":"https://api.github.com/users/johannes-russek-sh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johannes-russek-sh/subscriptions","organizations_url":"https://api.github.com/users/johannes-russek-sh/orgs","repos_url":"https://api.github.com/users/johannes-russek-sh/repos","events_url":"https://api.github.com/users/johannes-russek-sh/events{/privacy}","received_events_url":"https://api.github.com/users/johannes-russek-sh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-09T14:00:10Z","updated_at":"2024-09-09T17:39:10Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"When trying to add a lot of comments in PullRequest.create_review, the github API will always return 404 - probably because the per-api-call secondary quota is reached. Retries always fail, since the amount of comments doesn't change.\r\n\r\nThe API could provide a workaround by setting the review to PENDING, then adding comments and eventually publishing it.\r\n\r\nHowever, PyGithub does not appear to support updating the event of a review after creating it: PullRequestReview.edit() only updates the body.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3038/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3038/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3037","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3037/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3037/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3037/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3037","id":2507589973,"node_id":"I_kwDOADYVqs6VdslV","number":3037,"title":"app tokens for specific repos do not work","user":{"login":"beckermr","id":5296416,"node_id":"MDQ6VXNlcjUyOTY0MTY=","avatar_url":"https://avatars.githubusercontent.com/u/5296416?v=4","gravatar_id":"","url":"https://api.github.com/users/beckermr","html_url":"https://github.com/beckermr","followers_url":"https://api.github.com/users/beckermr/followers","following_url":"https://api.github.com/users/beckermr/following{/other_user}","gists_url":"https://api.github.com/users/beckermr/gists{/gist_id}","starred_url":"https://api.github.com/users/beckermr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/beckermr/subscriptions","organizations_url":"https://api.github.com/users/beckermr/orgs","repos_url":"https://api.github.com/users/beckermr/repos","events_url":"https://api.github.com/users/beckermr/events{/privacy}","received_events_url":"https://api.github.com/users/beckermr/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-09-05T12:03:48Z","updated_at":"2024-09-05T12:24:40Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"The current way of getting app tokens does not produce a repo-specific token. I tried to pass the output of `get_repo_installation` to `get_access_token` and the output token has access to `all` repos.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3037/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3037/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3036","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3036/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3036/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3036/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3036","id":2507131261,"node_id":"I_kwDOADYVqs6Vb8l9","number":3036,"title":"PaginationList.totalCount pretends `0` when not known","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"assignees":[{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2024-09-05T08:29:21Z","updated_at":"2024-09-05T08:29:21Z","closed_at":null,"author_association":"COLLABORATOR","active_lock_reason":null,"body":"The `totalCount` property returns `0` count when unknown. It should return `None` in that case. Use `NotSet` to distinguish between un-determined (`NotSet`) and not known (`None`).","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3036/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3036/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3035","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3035/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3035/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3035/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3035","id":2506087224,"node_id":"I_kwDOADYVqs6VX9s4","number":3035,"title":"Accessing pagination.totalCount with value 0 triggers request","user":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false},"assignees":[{"login":"EnricoMi","id":44700269,"node_id":"MDQ6VXNlcjQ0NzAwMjY5","avatar_url":"https://avatars.githubusercontent.com/u/44700269?v=4","gravatar_id":"","url":"https://api.github.com/users/EnricoMi","html_url":"https://github.com/EnricoMi","followers_url":"https://api.github.com/users/EnricoMi/followers","following_url":"https://api.github.com/users/EnricoMi/following{/other_user}","gists_url":"https://api.github.com/users/EnricoMi/gists{/gist_id}","starred_url":"https://api.github.com/users/EnricoMi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EnricoMi/subscriptions","organizations_url":"https://api.github.com/users/EnricoMi/orgs","repos_url":"https://api.github.com/users/EnricoMi/repos","events_url":"https://api.github.com/users/EnricoMi/events{/privacy}","received_events_url":"https://api.github.com/users/EnricoMi/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2024-09-04T19:08:14Z","updated_at":"2024-09-04T19:08:14Z","closed_at":null,"author_association":"COLLABORATOR","active_lock_reason":null,"body":"The current code says:\r\n\r\n        if not self.__totalCount:\r\n\r\nwhich, if `0` will be true, so a request is triggered to determine the total count, which is already known.\r\n\r\nThis should read\r\n\r\n        if self.__totalCount is not None:\r\n\r\nAdd a test to show current behaviour is inefficient and fix.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3035/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3035/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3034","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3034/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3034/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3034/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3034","id":2505645031,"node_id":"PR_kwDOADYVqs56aVtf","number":3034,"title":"Add missing RequiredPullRequestReview functionality with respect to...","user":{"login":"ck3mp3r","id":622232,"node_id":"MDQ6VXNlcjYyMjIzMg==","avatar_url":"https://avatars.githubusercontent.com/u/622232?v=4","gravatar_id":"","url":"https://api.github.com/users/ck3mp3r","html_url":"https://github.com/ck3mp3r","followers_url":"https://api.github.com/users/ck3mp3r/followers","following_url":"https://api.github.com/users/ck3mp3r/following{/other_user}","gists_url":"https://api.github.com/users/ck3mp3r/gists{/gist_id}","starred_url":"https://api.github.com/users/ck3mp3r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ck3mp3r/subscriptions","organizations_url":"https://api.github.com/users/ck3mp3r/orgs","repos_url":"https://api.github.com/users/ck3mp3r/repos","events_url":"https://api.github.com/users/ck3mp3r/events{/privacy}","received_events_url":"https://api.github.com/users/ck3mp3r/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-04T15:10:03Z","updated_at":"2024-09-04T16:48:26Z","closed_at":null,"author_association":"FIRST_TIME_CONTRIBUTOR","active_lock_reason":null,"draft":true,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3034","html_url":"https://github.com/PyGithub/PyGithub/pull/3034","diff_url":"https://github.com/PyGithub/PyGithub/pull/3034.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3034.patch","merged_at":null},"body":"... handling dismissals for apps and also bypass allowances.\r\n\r\nFYI, python is not my main language, hence I am not that familiar with all the tooling.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3034/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3034/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3032","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3032/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3032/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3032/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3032","id":2503825950,"node_id":"I_kwDOADYVqs6VPVoe","number":3032,"title":"dismissal_apps retrieval missing in branch protection","user":{"login":"ck3mp3r","id":622232,"node_id":"MDQ6VXNlcjYyMjIzMg==","avatar_url":"https://avatars.githubusercontent.com/u/622232?v=4","gravatar_id":"","url":"https://api.github.com/users/ck3mp3r","html_url":"https://github.com/ck3mp3r","followers_url":"https://api.github.com/users/ck3mp3r/followers","following_url":"https://api.github.com/users/ck3mp3r/following{/other_user}","gists_url":"https://api.github.com/users/ck3mp3r/gists{/gist_id}","starred_url":"https://api.github.com/users/ck3mp3r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ck3mp3r/subscriptions","organizations_url":"https://api.github.com/users/ck3mp3r/orgs","repos_url":"https://api.github.com/users/ck3mp3r/repos","events_url":"https://api.github.com/users/ck3mp3r/events{/privacy}","received_events_url":"https://api.github.com/users/ck3mp3r/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-09-03T21:31:56Z","updated_at":"2024-09-05T13:02:18Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"The implementation for retrieving dismissal_apps is missing.\r\nFetching dismissal_users and dismissal_teams is present and accounted for.\r\nHaving this would be useful to complete an ansible module that has the ability to compare what is present in a branch protection to then decide if an update is required.\r\n\r\nNote: might be worth prioritising #2718 over this feature request...","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3032/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3032/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3031","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3031/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3031/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3031/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3031","id":2503813839,"node_id":"I_kwDOADYVqs6VPSrP","number":3031,"title":"Incorrect Pull Requests filtering in new delete_branch method","user":{"login":"andreisidorenko","id":59011539,"node_id":"MDQ6VXNlcjU5MDExNTM5","avatar_url":"https://avatars.githubusercontent.com/u/59011539?v=4","gravatar_id":"","url":"https://api.github.com/users/andreisidorenko","html_url":"https://github.com/andreisidorenko","followers_url":"https://api.github.com/users/andreisidorenko/followers","following_url":"https://api.github.com/users/andreisidorenko/following{/other_user}","gists_url":"https://api.github.com/users/andreisidorenko/gists{/gist_id}","starred_url":"https://api.github.com/users/andreisidorenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreisidorenko/subscriptions","organizations_url":"https://api.github.com/users/andreisidorenko/orgs","repos_url":"https://api.github.com/users/andreisidorenko/repos","events_url":"https://api.github.com/users/andreisidorenko/events{/privacy}","received_events_url":"https://api.github.com/users/andreisidorenko/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-03T21:23:22Z","updated_at":"2024-09-03T21:23:22Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"According to the [GitHub API documentation](https://docs.github.com/en/rest/pulls/pulls?apiVersion=2022-11-28#list-pull-requests), the `head` parameter should be in the format of `user:ref-name` or `organization:ref-name`. However, the current implementation in `delete_branch` method (introduced in [v2.4.0](https://github.com/PyGithub/PyGithub/releases/tag/v2.4.0)) only [uses](https://github.com/PyGithub/PyGithub/blob/main/github/PullRequest.py#L780) `ref-name`, which leads to false-positive `remaining_pulls` (if repo contains any open PRs) with raising RuntimeErrors.\r\n\r\nTo reproduce (`GITHUB_TOKEN` omitted):\r\n```\r\nfrom github import Github\r\n\r\ngh_client = Github(GITHUB_TOKEN)\r\norg = 'PyGithub'\r\nrepository = gh_client.get_repo(f'{org}/PyGithub')\r\n\r\npr = repository.get_pull(2929)\r\npr_head_ref = pr.head.ref\r\n\r\n# wrong head param usage - current implementation\r\n# will return all open PRs in repository\r\nprs = repository.get_pulls(head=f\"{pr_head_ref}\")\r\nprint(f\"prs count: {prs.totalCount}\")\r\nfor pr in prs:\r\n    print(f\"{pr.number} - {pr.title} - {pr.user.login} - {pr.head.ref} - {pr.state}\")\r\n\r\n# output:\r\n# prs count: 84\r\n# 3028 - Commit verification support - timgates42 - feat/commit_verification - open\r\n# 3022 - add support for generate_release_notes - mball-agathos - issue_2794 - open\r\n# ...\r\n# 1676 - Issue 1655: Add authorize credentials list and removal on organization under SAML - AlexandreODelisle - master - open\r\n\r\n# correct head param usage\r\n# will return all open PRs for the specified branch\r\nprs = repository.get_pulls(head=f\"{org}:{pr_head_ref}\")\r\nprint(f\"prs count: {prs.totalCount}\")\r\nfor pr in prs:\r\n    print(f\"{pr.number} - {pr.title} - {pr.user.login} - {pr.head.ref} - {pr.state}\")\r\n\r\n# output:\r\n# prs count: 1\r\n# 2929 - Fix requesting urls containing parameters with parameters dict - EnricoMi - pagination-per-page - open\r\n```\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3031/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3031/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3028","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3028/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3028/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3028/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3028","id":2491331720,"node_id":"PR_kwDOADYVqs55q4LC","number":3028,"title":"Commit verification support","user":{"login":"timgates42","id":47873678,"node_id":"MDQ6VXNlcjQ3ODczNjc4","avatar_url":"https://avatars.githubusercontent.com/u/47873678?v=4","gravatar_id":"","url":"https://api.github.com/users/timgates42","html_url":"https://github.com/timgates42","followers_url":"https://api.github.com/users/timgates42/followers","following_url":"https://api.github.com/users/timgates42/following{/other_user}","gists_url":"https://api.github.com/users/timgates42/gists{/gist_id}","starred_url":"https://api.github.com/users/timgates42/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timgates42/subscriptions","organizations_url":"https://api.github.com/users/timgates42/orgs","repos_url":"https://api.github.com/users/timgates42/repos","events_url":"https://api.github.com/users/timgates42/events{/privacy}","received_events_url":"https://api.github.com/users/timgates42/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-28T07:43:46Z","updated_at":"2024-08-29T20:39:52Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3028","html_url":"https://github.com/PyGithub/PyGithub/pull/3028","diff_url":"https://github.com/PyGithub/PyGithub/pull/3028.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3028.patch","merged_at":null},"body":"Add support for verification component of Commit API response to see if commit has been signed and the signature has been checked by Github\r\n\r\nhttps://docs.github.com/en/rest/commits/commits","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3028/reactions","total_count":1,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":1},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3028/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3026","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3026/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3026/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3026/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3026","id":2484070647,"node_id":"I_kwDOADYVqs6UD-j3","number":3026,"title":"Add support for REST API endpoints for GitHub Classroom","user":{"login":"mdadams","id":19838285,"node_id":"MDQ6VXNlcjE5ODM4Mjg1","avatar_url":"https://avatars.githubusercontent.com/u/19838285?v=4","gravatar_id":"","url":"https://api.github.com/users/mdadams","html_url":"https://github.com/mdadams","followers_url":"https://api.github.com/users/mdadams/followers","following_url":"https://api.github.com/users/mdadams/following{/other_user}","gists_url":"https://api.github.com/users/mdadams/gists{/gist_id}","starred_url":"https://api.github.com/users/mdadams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdadams/subscriptions","organizations_url":"https://api.github.com/users/mdadams/orgs","repos_url":"https://api.github.com/users/mdadams/repos","events_url":"https://api.github.com/users/mdadams/events{/privacy}","received_events_url":"https://api.github.com/users/mdadams/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-24T00:25:04Z","updated_at":"2024-08-24T00:25:04Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"As far as I can tell, the API endpoints for GitHub Classroom are not currently supported by PyGithub.  By any chance, would it be possible to add support for these endpoints?  These endpoints are described here:\r\n\r\n  - <https://docs.github.com/en/rest/classroom?apiVersion=2022-11-28>\r\n\r\nGitHub Classroom is quite popular for teaching purposes.  So, being able to use PyGithub to interface with the API endpoints for GitHub Classroom would be a fabulous.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3026/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3026/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3024","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3024/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3024/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3024/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3024","id":2474239151,"node_id":"I_kwDOADYVqs6TeeSv","number":3024,"title":"How to Retrieve the Request URL related to an GitHubException for Debugging?","user":{"login":"Xiaoven","id":55338943,"node_id":"MDQ6VXNlcjU1MzM4OTQz","avatar_url":"https://avatars.githubusercontent.com/u/55338943?v=4","gravatar_id":"","url":"https://api.github.com/users/Xiaoven","html_url":"https://github.com/Xiaoven","followers_url":"https://api.github.com/users/Xiaoven/followers","following_url":"https://api.github.com/users/Xiaoven/following{/other_user}","gists_url":"https://api.github.com/users/Xiaoven/gists{/gist_id}","starred_url":"https://api.github.com/users/Xiaoven/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Xiaoven/subscriptions","organizations_url":"https://api.github.com/users/Xiaoven/orgs","repos_url":"https://api.github.com/users/Xiaoven/repos","events_url":"https://api.github.com/users/Xiaoven/events{/privacy}","received_events_url":"https://api.github.com/users/Xiaoven/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-19T21:29:12Z","updated_at":"2024-08-19T21:29:12Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"## Description\r\n\r\nI am currently using the `search_code` API to iterate through the contents of files in various repositories. However, I've encountered an issue where the API sometimes throws an exception with the following data:\r\n```\r\n{\r\n  \"message\": \"This repository is empty.\",\r\n  \"documentation_url\": \"https://docs.github.com/v3/repos/contents/#get-contents\",\r\n  \"status\": \"404\"\r\n}\r\n```\r\n\r\nTo help debug this issue, I would like **to retrieve the request URL (including the query) that led to this exception**. Unfortunately, I couldn't find a field in the `GitHubException` that provides this information.\r\n\r\n\r\nMy code is\r\n```python\r\nclient = GitHub(login_or_token=my_token, per_page=100)\r\n\r\nresults = client.search_code(query=my_query)\r\n\r\nfor result in results:\r\n    content = result.decoded_content.decode(\"utf-8\")\r\n    do_something(content)\r\n```\r\n\r\n`result.decoded_content.decode(\"utf-8\")` is like a black box, because I don't know which APIs and parameters it uses to get the data.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3024/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3024/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3022","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3022/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3022/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3022/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3022","id":2472187397,"node_id":"PR_kwDOADYVqs54rGtp","number":3022,"title":"add support for generate_release_notes","user":{"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","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-08-18T23:07:07Z","updated_at":"2024-08-26T16:42:42Z","closed_at":null,"author_association":"FIRST_TIME_CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3022","html_url":"https://github.com/PyGithub/PyGithub/pull/3022","diff_url":"https://github.com/PyGithub/PyGithub/pull/3022.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3022.patch","merged_at":null},"body":"Resolves: #2794\r\n\r\nContext: https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#generate-release-notes-content-for-a-release","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3022/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3022/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3021","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3021/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3021/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3021/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3021","id":2471255560,"node_id":"I_kwDOADYVqs6TTF4I","number":3021,"title":"Returned object contains no URL: 400","user":{"login":"zhimin-z","id":8592144,"node_id":"MDQ6VXNlcjg1OTIxNDQ=","avatar_url":"https://avatars.githubusercontent.com/u/8592144?v=4","gravatar_id":"","url":"https://api.github.com/users/zhimin-z","html_url":"https://github.com/zhimin-z","followers_url":"https://api.github.com/users/zhimin-z/followers","following_url":"https://api.github.com/users/zhimin-z/following{/other_user}","gists_url":"https://api.github.com/users/zhimin-z/gists{/gist_id}","starred_url":"https://api.github.com/users/zhimin-z/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhimin-z/subscriptions","organizations_url":"https://api.github.com/users/zhimin-z/orgs","repos_url":"https://api.github.com/users/zhimin-z/repos","events_url":"https://api.github.com/users/zhimin-z/events{/privacy}","received_events_url":"https://api.github.com/users/zhimin-z/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-17T01:26:41Z","updated_at":"2024-08-17T01:26:41Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"I attempt to scrape issues and commits from a list of repositories. However, some repositories just throw the following exception: `Returned object contains no URL: 400`. What could I do?\r\n\r\nHere is my scraping script:\r\n```\r\nfrom datetime import datetime\r\nfrom github import Github\r\nfrom github import Auth\r\n\r\nimport pandas as pd\r\nimport time\r\nimport json\r\nimport os\r\n\r\npath_data = '../data'\r\npath_result = '../result'\r\npath_key = '../key'\r\npath_respository = f'{path_data}/repositories'\r\n\r\n# Load GitHub token from a JSON file\r\nwith open(f'{path_key}/.github.json') as f:\r\n    github_token = json.load(f)['login_or_token']\r\n    auth = Auth.Token(github_token)\r\n    g = Github(auth=auth)\r\n\r\n# File paths for the consolidated JSON files\r\npull_requests_file = f\"{path_data}/pull_requests.json\"\r\ncommits_file = f\"{path_data}/commits.json\"\r\nissues_file = f\"{path_data}/issues.json\"\r\n\r\n# Initialize empty files if they don't exist\r\nfor file in [pull_requests_file, commits_file, issues_file]:\r\n    if not os.path.exists(file):\r\n        with open(file, 'w') as f:\r\n            pass\r\n\r\ndef check_rate_limit():\r\n    rate_limit = g.get_rate_limit().core\r\n    remaining = rate_limit.remaining\r\n    reset_timestamp = rate_limit.reset.timestamp()\r\n\r\n    if remaining == 0:\r\n        reset_time = datetime.fromtimestamp(reset_timestamp)\r\n        sleep_time = (reset_time - datetime.now()).total_seconds() + 10  # Adding a small buffer\r\n        print(f\"Rate limit exceeded. Sleeping for {sleep_time} seconds.\")\r\n        time.sleep(sleep_time)\r\n\r\ndef process_repository(repo_name):\r\n    repo = g.get_repo(repo_name)\r\n    \r\n    # Check rate limit before processing\r\n    check_rate_limit()\r\n\r\n    # Process pull requests\r\n    pull_requests = []\r\n    for index, pr in enumerate(repo.get_pulls(state='all')):\r\n        pull_requests.append({\r\n            'repository': repo_name,\r\n            'index': index,\r\n            'message': pr.title,\r\n            'contributor_id': pr.user.login,\r\n            'creation_time': pr.created_at,\r\n            'labels': [label.name for label in pr.labels],\r\n            'state': pr.state\r\n        })\r\n        time.sleep(0.5)  # Sleep for 100ms to avoid rate limit\r\n    \r\n    # Append pull requests to file\r\n    if pull_requests:\r\n        pr_df = pd.DataFrame(pull_requests)\r\n        pr_df.to_json(pull_requests_file, orient='records', lines=True, mode='a')\r\n\r\n    # Check rate limit before processing next item\r\n    check_rate_limit()\r\n    \r\n    # Process commits\r\n    commits = []\r\n    for index, commit in enumerate(repo.get_commits()):\r\n        commits.append({\r\n            'repository': repo_name,\r\n            'index': index,\r\n            'message': commit.commit.message,\r\n            'contributor_id': commit.author.login if commit.author else 'Unknown',\r\n            'creation_time': commit.commit.author.date,\r\n        })\r\n        time.sleep(0.5)  # Sleep for 100ms to avoid rate limit\r\n    \r\n    # Append commits to file\r\n    if commits:\r\n        commit_df = pd.DataFrame(commits)\r\n        commit_df.to_json(commits_file, orient='records', lines=True, mode='a')\r\n\r\n    # Check rate limit before processing next item\r\n    check_rate_limit()\r\n\r\n    # Process issues\r\n    issues = []\r\n    for index, issue in enumerate(repo.get_issues(state='all')):\r\n        issues.append({\r\n            'repository': repo_name,\r\n            'index': index,\r\n            'message': issue.title,\r\n            'contributor_id': issue.user.login,\r\n            'creation_time': issue.created_at,\r\n            'labels': [label.name for label in issue.labels],\r\n            'state': issue.state\r\n        })\r\n        time.sleep(0.5)  # Sleep for 100ms to avoid rate limit\r\n    \r\n    # Append issues to file\r\n    if issues:\r\n        issues_df = pd.DataFrame(issues)\r\n        issues_df.to_json(issues_file, orient='records', lines=True, mode='a')\r\n\r\n# Process each repository\r\nfor repo in ['EleutherAI/lm-evaluation-harness', 'huggingface/optimum-benchmark']:\r\n    try:\r\n        process_repository(repo)\r\n        print(f\"Processed {repo} successfully.\")\r\n    except Exception as e:\r\n        print(f\"Error processing {repo}: {str(e)}\")\r\n\r\nprint(\"All repositories processed and data saved.\")\r\n```","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3021/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3021/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3019","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3019/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3019/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3019/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3019","id":2469374709,"node_id":"I_kwDOADYVqs6TL6r1","number":3019,"title":"Repository's URL and Requester's URL might not match","user":{"login":"doljae","id":37795866,"node_id":"MDQ6VXNlcjM3Nzk1ODY2","avatar_url":"https://avatars.githubusercontent.com/u/37795866?v=4","gravatar_id":"","url":"https://api.github.com/users/doljae","html_url":"https://github.com/doljae","followers_url":"https://api.github.com/users/doljae/followers","following_url":"https://api.github.com/users/doljae/following{/other_user}","gists_url":"https://api.github.com/users/doljae/gists{/gist_id}","starred_url":"https://api.github.com/users/doljae/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/doljae/subscriptions","organizations_url":"https://api.github.com/users/doljae/orgs","repos_url":"https://api.github.com/users/doljae/repos","events_url":"https://api.github.com/users/doljae/events{/privacy}","received_events_url":"https://api.github.com/users/doljae/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-16T03:31:07Z","updated_at":"2024-08-16T03:36:09Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":" # Description\r\n\r\nIn some cases, the URL in the Repository and the URL in the Requester may not match, and this causes an AssertionError.\r\n\r\n# Example\r\n\r\nWhen we initially create a `Github` object, it seems to create a `Requester` object internally to continue using it.\r\n\r\nThe `Repository` object is based on the response from the GitHub API, **which can cause mismatches between the hostname of the `Requester` and the hostname of the `Repository` object URL.**\r\n\r\nFor example, suppose you have two different GitHub hostnames\r\n\r\n- `a.github.com` -> Origin server\r\n- `b.github.com` -> Replica server (hostname created for other purposes, such as load balancing, and responds the same as the original server)\r\n\r\nIn this case, if we create a `GitHub` object with `b.github.com` as the base url, the `Requestor`'s hostname will be `b.github.com`. However, the hostname of the `Repository` will be `a.github.com`, which will cause the assertions in the code below to fail.\r\n\r\n```python\r\ng = Github(base_url=\"https://b.github.com/api/v3\", auth=auth) # Requester.hostname: b.github.com\r\nrepo = g.get_repo(\"hello/world\") # Repository url: a.github.com\r\npr = repo.get_pull(816) # AssertionError!\r\n```\r\n\r\nhttps://github.com/PyGithub/PyGithub/blob/23e8756397e9935e6a3307826de29c04cf853e94/github/Repository.py#L3074\r\nhttps://github.com/PyGithub/PyGithub/blob/23e8756397e9935e6a3307826de29c04cf853e94/github/Requester.py#L925\r\n\r\n\r\nIt seems like it would be simple to just fix this, but I may not be understanding this correctly and would like to start an issue to see what the maintainers think.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3019/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3019/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3018","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3018/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3018/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3018/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3018","id":2467120467,"node_id":"I_kwDOADYVqs6TDUVT","number":3018,"title":"Inconsistent `totalCount` in `PaginatedList` Before and After Iteration","user":{"login":"Xiaoven","id":55338943,"node_id":"MDQ6VXNlcjU1MzM4OTQz","avatar_url":"https://avatars.githubusercontent.com/u/55338943?v=4","gravatar_id":"","url":"https://api.github.com/users/Xiaoven","html_url":"https://github.com/Xiaoven","followers_url":"https://api.github.com/users/Xiaoven/followers","following_url":"https://api.github.com/users/Xiaoven/following{/other_user}","gists_url":"https://api.github.com/users/Xiaoven/gists{/gist_id}","starred_url":"https://api.github.com/users/Xiaoven/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Xiaoven/subscriptions","organizations_url":"https://api.github.com/users/Xiaoven/orgs","repos_url":"https://api.github.com/users/Xiaoven/repos","events_url":"https://api.github.com/users/Xiaoven/events{/privacy}","received_events_url":"https://api.github.com/users/Xiaoven/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-08-15T01:26:41Z","updated_at":"2024-09-06T07:16:12Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"## Description\r\nI'm encountering an issue with the `totalCount` property in the `PaginatedList` class when using PyGithub to search code. **The behavior of `totalCount` is inconsistent depending on whether it is accessed before or after iterating over the `PaginatedList` object.** This design is confusing and leads to unexpected results.\r\n\r\nI used PyGithub to search for code and retrieve the `total_count` value from the response.\r\n\r\nLet's assume the query is `hello world\" which returns more than 1000 results.\r\n\r\nAfter reading the official documentation for the `PaginatedList `class:\r\n> If you want to know the total number of items in the list::\r\n>    print(user.get_repos().totalCount)\r\n\r\nI wrote my code as below:\r\n```py\r\nresults = client.search_code(query)\r\ntotalCount = results.totalCount\r\nfor result in results:\r\n    do_something(result)\r\n```\r\n\r\n### Observed Behavior\r\nI found that the totalCount value is capped at 1,000, instead of reflecting the `total_count` value from the API response.\r\n\r\nThrough debugging, I discovered that if `results.totalCount` is accessed **before** iterating over the `PaginatedList`, it triggers the `PaginatedList::totalCount` property, which initializes `totalCount` by setting `per_page` to 1 and calculates `totalCount` based on **the page number**. \r\n```py\r\n    @property\r\n    def totalCount(self) -> int:\r\n        if not self.__totalCount:\r\n            params = {} if self.__nextParams is None else self.__nextParams.copy()\r\n            # set per_page = 1 so the totalCount is just the number of pages\r\n            params.update({\"per_page\": 1})\r\n\r\n            headers, data = self.__requester.requestJsonAndCheck(\r\n                \"GET\", self.__firstUrl, parameters=params, headers=self.__headers\r\n            )\r\n\r\n            if \"link\" not in headers:  \r\n                # Under what conditions does this branch execute?\r\n                # Likely when total_count is less than or equal to per_page (1 now), \r\n                # meaning the first page is also the last page.\r\n                if data and \"total_count\" in data:\r\n                    self.__totalCount = data[\"total_count\"]\r\n                elif data:\r\n                    if isinstance(data, dict):\r\n                        data = data[self.__list_item]\r\n                    self.__totalCount = len(data)\r\n                else:\r\n                    self.__totalCount = 0\r\n            else:\r\n                links = self.__parseLinkHeader(headers)\r\n                lastUrl = links.get(\"last\")\r\n                if lastUrl:\r\n                    self.__totalCount = int(parse_qs(lastUrl)[\"page\"][0])\r\n                else:\r\n                    self.__totalCount = 0\r\n        return self.__totalCount  # type: ignore\r\n```\r\n\r\nThe value is correct when the `total_count` is smaller than 1000. However, when the `total_count` > 1000.\r\n\r\nTo retrieve the correct `total_count` value from the response, I must iterate over the results first, which invokes the `_getPage` method and updates totalCount with:\r\n```py\r\nself.__totalCount = data.get(\"total_count\")\r\n```\r\n\r\n### Expected Behavior\r\n`totalCount` should accurately reflect the `total_count` value from the response regardless of when it is accessed.\r\n\r\n## Suggestion\r\nI'm not sure if this is a bug or an intentional design choice (though it’s confusing, at least for me). I hope you can either fix it or update the documentation to provide a detailed explanation of this behavior. Clarifying this will help users understand the difference and ensure they retrieve the expected value of `totalCount`.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3018/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3018/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3016","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3016/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3016/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3016/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3016","id":2456749972,"node_id":"I_kwDOADYVqs6SbweU","number":3016,"title":"Github API commit comments endpoint don't work","user":{"login":"AutoScrape123TX","id":129413195,"node_id":"U_kgDOB7awSw","avatar_url":"https://avatars.githubusercontent.com/u/129413195?v=4","gravatar_id":"","url":"https://api.github.com/users/AutoScrape123TX","html_url":"https://github.com/AutoScrape123TX","followers_url":"https://api.github.com/users/AutoScrape123TX/followers","following_url":"https://api.github.com/users/AutoScrape123TX/following{/other_user}","gists_url":"https://api.github.com/users/AutoScrape123TX/gists{/gist_id}","starred_url":"https://api.github.com/users/AutoScrape123TX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AutoScrape123TX/subscriptions","organizations_url":"https://api.github.com/users/AutoScrape123TX/orgs","repos_url":"https://api.github.com/users/AutoScrape123TX/repos","events_url":"https://api.github.com/users/AutoScrape123TX/events{/privacy}","received_events_url":"https://api.github.com/users/AutoScrape123TX/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-08T22:31:15Z","updated_at":"2024-08-08T22:31:15Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hello,\r\n\r\nI try to gather a commit's comment list for analysis.\r\nSeems GitHub API is broken. \r\n\r\nExample : \r\n\r\n[https://api.github.com/repos/vercel/next.js/commits/2aaa4263918427ee5164f12573e1dd719d365a1b](https://api.github.com/repos/vercel/next.js/commits/2aaa4263918427ee5164f12573e1dd719d365a1b)\r\n[https://api.github.com/repos/vercel/next.js/commits/2aaa4263918427ee5164f12573e1dd719d365a1b/comments](https://api.github.com/repos/vercel/next.js/commits/2aaa4263918427ee5164f12573e1dd719d365a1b/comments)\r\n\r\nWhile we see clearly there's comments on the commit present on GitHub... Check in conversation tab.\r\n\r\n[https://github.com/vercel/next.js/pull/33240/commits/2aaa4263918427ee5164f12573e1dd719d365a1b](https://github.com/vercel/next.js/pull/33240/commits/2aaa4263918427ee5164f12573e1dd719d365a1b)\r\n\r\n\r\nIf anyone has an idea or a workaround...\r\n\r\n**_With PyGithub it looks like :_** \r\n\r\n```\r\nfor commit in pull_request.get_commits():\r\n    ....\r\n    for commit_comment in commit.get_comments():\r\n    ...\r\n```\r\n\r\n\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3016/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3016/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3015","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3015/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3015/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3015/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3015","id":2455847582,"node_id":"I_kwDOADYVqs6SYUKe","number":3015,"title":"Expose the /repos/{owner}/{repo}/codeowners/errors endpoint on repositories","user":{"login":"michaelhankin","id":9287361,"node_id":"MDQ6VXNlcjkyODczNjE=","avatar_url":"https://avatars.githubusercontent.com/u/9287361?v=4","gravatar_id":"","url":"https://api.github.com/users/michaelhankin","html_url":"https://github.com/michaelhankin","followers_url":"https://api.github.com/users/michaelhankin/followers","following_url":"https://api.github.com/users/michaelhankin/following{/other_user}","gists_url":"https://api.github.com/users/michaelhankin/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelhankin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelhankin/subscriptions","organizations_url":"https://api.github.com/users/michaelhankin/orgs","repos_url":"https://api.github.com/users/michaelhankin/repos","events_url":"https://api.github.com/users/michaelhankin/events{/privacy}","received_events_url":"https://api.github.com/users/michaelhankin/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-08-08T13:41:12Z","updated_at":"2024-08-08T13:41:12Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hey folks, I'm working on a project where it would be useful to have this endpoint exposed by PyGithub.\r\n\r\nSee https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-codeowners-errors.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3015/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3015/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3014","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3014/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3014/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3014/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3014","id":2453171259,"node_id":"I_kwDOADYVqs6SOGw7","number":3014,"title":"Repo.get_git_ref/create_git_ref inconsistent prefix","user":{"login":"huwcbjones","id":5251487,"node_id":"MDQ6VXNlcjUyNTE0ODc=","avatar_url":"https://avatars.githubusercontent.com/u/5251487?v=4","gravatar_id":"","url":"https://api.github.com/users/huwcbjones","html_url":"https://github.com/huwcbjones","followers_url":"https://api.github.com/users/huwcbjones/followers","following_url":"https://api.github.com/users/huwcbjones/following{/other_user}","gists_url":"https://api.github.com/users/huwcbjones/gists{/gist_id}","starred_url":"https://api.github.com/users/huwcbjones/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/huwcbjones/subscriptions","organizations_url":"https://api.github.com/users/huwcbjones/orgs","repos_url":"https://api.github.com/users/huwcbjones/repos","events_url":"https://api.github.com/users/huwcbjones/events{/privacy}","received_events_url":"https://api.github.com/users/huwcbjones/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2024-08-07T10:45:59Z","updated_at":"2024-08-07T16:33:54Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"I've got a script that's creating a ref (branch) and replacing it if it already exists.\r\n\r\n```py\r\nbranch_ref = \"heads/my-ref\"\r\nwith suppress(GithubException):\r\n   repo.get_git_ref(branch_ref).delete()\r\nref =repo.create_git_ref(branch_ref, commit.sha)\r\n``` \r\n\r\nBy specifying the ref without the `refs/` prefix, I get the following:\r\n```\r\nDEBUG:urllib3.connectionpool:https://api.github.com:443 \"GET /repos/$org/$repo/git/refs/heads/my-ref HTTP/1.1\" 200 None\r\nDEBUG:urllib3.connectionpool:https://api.github.com:443 \"DELETE /repos/$org/$repo/git/refs/heads/my-ref HTTP/1.1\" 204 0\r\nDEBUG:urllib3.connectionpool:https://api.github.com:443 \"POST /repos/$org/$repo/git/refs HTTP/1.1\" 422 147\r\nTraceback (most recent call last):\r\n  File \"<stdin>\", line 1, in <module>\r\n    ref = repo.create_git_ref(branch_ref, commit.sha)\r\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/usr/lib/python3.11/site-packages/github/Repository.py\", line 1221, in create_git_ref\r\n    headers, data = self._requester.requestJsonAndCheck(\"POST\", f\"{self.url}/git/refs\", input=post_parameters)\r\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/usr/lib/python3.11/site-packages/github/Requester.py\", line 548, in requestJsonAndCheck\r\n    return self.__check(*self.requestJson(verb, url, parameters, headers, input, self.__customConnection(url)))\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/usr/lib/python3.11/site-packages/github/Requester.py\", line 609, in __check\r\n    raise self.createException(status, responseHeaders, data)\r\ngithub.GithubException.GithubException: 422 {\"message\": \"Reference name must start with 'refs/'.\", \"documentation_url\": \"https://docs.github.com/rest/git/refs#create-a-reference\", \"status\": \"422\"}\r\n```\r\n\r\nIf I specifying with the `refs/` prefix, I get the following:\r\n```py\r\nbranch_ref = \"refs/heads/my-ref\"\r\nwith suppress(GithubException):\r\n   repo.get_git_ref(branch_ref).delete()\r\nref =repo.create_git_ref(branch_ref, commit.sha)\r\n``` \r\n\r\n```\r\nDEBUG:urllib3.connectionpool:https://api.github.com:443 \"GET /repos/$org/$repo/git/refs/refs/heads/my-ref HTTP/1.1\" 404 None\r\nDEBUG:urllib3.connectionpool:https://api.github.com:443 \"POST /repos/$org/$repo/git/refs HTTP/1.1\" 201 493\r\n```\r\n\r\nNote the double `refs/refs` in the GET request to check if the ref already exists.\r\nI'm going to bodge around this, but it was wholy unexpected!","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3014/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3014/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3012","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3012/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3012/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3012/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3012","id":2445184074,"node_id":"I_kwDOADYVqs6RvoxK","number":3012,"title":"'raw' API calls","user":{"login":"raboof","id":131856,"node_id":"MDQ6VXNlcjEzMTg1Ng==","avatar_url":"https://avatars.githubusercontent.com/u/131856?v=4","gravatar_id":"","url":"https://api.github.com/users/raboof","html_url":"https://github.com/raboof","followers_url":"https://api.github.com/users/raboof/followers","following_url":"https://api.github.com/users/raboof/following{/other_user}","gists_url":"https://api.github.com/users/raboof/gists{/gist_id}","starred_url":"https://api.github.com/users/raboof/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raboof/subscriptions","organizations_url":"https://api.github.com/users/raboof/orgs","repos_url":"https://api.github.com/users/raboof/repos","events_url":"https://api.github.com/users/raboof/events{/privacy}","received_events_url":"https://api.github.com/users/raboof/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-08-02T15:11:37Z","updated_at":"2024-08-06T05:23:19Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"When the part of the GitHub API you'd like to access is not yet supported by PyGithub, it would be nice to call those URI's 'directly' while still leveraging PyGithub's authorization etc infrastructure, perhaps even pagination. Of course this would just return the response as raw bytes or perhaps a `dict`.\r\n\r\nIs there anything like that in PyGithub right now that I missed, or if not, would this be acceptable as a contribution?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3012/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3012/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3011","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3011/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3011/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3011/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3011","id":2436639751,"node_id":"I_kwDOADYVqs6RPCwH","number":3011,"title":"Wrong exception type raised when requesting non-existent branch.","user":{"login":"zhighleggett","id":84209544,"node_id":"MDQ6VXNlcjg0MjA5NTQ0","avatar_url":"https://avatars.githubusercontent.com/u/84209544?v=4","gravatar_id":"","url":"https://api.github.com/users/zhighleggett","html_url":"https://github.com/zhighleggett","followers_url":"https://api.github.com/users/zhighleggett/followers","following_url":"https://api.github.com/users/zhighleggett/following{/other_user}","gists_url":"https://api.github.com/users/zhighleggett/gists{/gist_id}","starred_url":"https://api.github.com/users/zhighleggett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhighleggett/subscriptions","organizations_url":"https://api.github.com/users/zhighleggett/orgs","repos_url":"https://api.github.com/users/zhighleggett/repos","events_url":"https://api.github.com/users/zhighleggett/events{/privacy}","received_events_url":"https://api.github.com/users/zhighleggett/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2024-07-30T00:24:44Z","updated_at":"2024-07-31T18:49:01Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"If requesting a branch that does not exist, a generic `GithubException` is raised, however the proper exception to be raised is `UnknownObjectException`. Per the docstring:\r\n\r\n```\r\nclass UnknownObjectException(GithubException):\r\n    \"\"\"\r\n    Exception raised when a non-existing object is requested (when Github API replies with a 404 HTML status)\r\n    \"\"\"\r\n```\r\n\r\nThe reason this happens is because the code that generates the exception based on the HTTP error code is not only looking at the status, but is also looking at the message it encapsulates. It only builds the `UnknownObjectException` if the message is \"not found\" but the 404 HTTP response when requesting an unknown branch has the message \"Branch not found\".\r\n```\r\n      elif status == 404 and message == \"not found\":\r\n            exc = GithubException.UnknownObjectException\r\n```\r\n\r\nIs there any reason that we are checking the contents of the message and not just the HTTP status code? If there is, would it at least be better to chang `message == \"not found\"` to `\"not found\" in message`?\r\n\r\nMinimal example:\r\n```\r\n>>> import github\r\n>>> gh = github.Github(\"ACCESS_TOKEN_REDACTED\")\r\n>>> org = gh.get_organization(\"ORG_NAME_REDACTED\")\r\n>>> repo = org.get_repo(\"REPO_NAME_REDACTED\")\r\n>>> branch = repo.get_branch(\"foo\")\r\nTraceback (most recent call last):\r\n  File \"<stdin>\", line 1, in <module>\r\n  File \"C:\\Users\\zhighleggett\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\github\\Repository.py\", line 2018, in get_branch\r\n    headers, data = self._requester.requestJsonAndCheck(\"GET\", f\"{self.url}/branches/{branch}\")\r\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\zhighleggett\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\github\\Requester.py\", line 548, in requestJsonAndCheck\r\n    return self.__check(*self.requestJson(verb, url, parameters, headers, input, self.__customConnection(url)))\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\zhighleggett\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\github\\Requester.py\", line 609, in __check\r\n    raise self.createException(status, responseHeaders, data)\r\ngithub.GithubException.GithubException: 404 {\"message\": \"Branch not found\", \"documentation_url\": \"https://docs.github.com/rest/branches/branches#get-a-branch\", \"status\": \"404\"}\r\n```","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3011/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3011/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3007","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3007/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3007/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3007/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3007","id":2433078892,"node_id":"I_kwDOADYVqs6RBdZs","number":3007,"title":"Why is my repo object's master_branch property None?","user":{"login":"zhighleggett","id":84209544,"node_id":"MDQ6VXNlcjg0MjA5NTQ0","avatar_url":"https://avatars.githubusercontent.com/u/84209544?v=4","gravatar_id":"","url":"https://api.github.com/users/zhighleggett","html_url":"https://github.com/zhighleggett","followers_url":"https://api.github.com/users/zhighleggett/followers","following_url":"https://api.github.com/users/zhighleggett/following{/other_user}","gists_url":"https://api.github.com/users/zhighleggett/gists{/gist_id}","starred_url":"https://api.github.com/users/zhighleggett/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhighleggett/subscriptions","organizations_url":"https://api.github.com/users/zhighleggett/orgs","repos_url":"https://api.github.com/users/zhighleggett/repos","events_url":"https://api.github.com/users/zhighleggett/events{/privacy}","received_events_url":"https://api.github.com/users/zhighleggett/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-07-26T22:56:22Z","updated_at":"2024-07-26T22:56:22Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"Hello,\r\n\r\nI'm trying to programatically get the name of the master branch of my repo. To do this I'm trying to access the `master_branch` property in `Repository` but even though the documentation says it should return a string, I get back None regardless of the repo I've checked.\r\n\r\nThe repos are all private work-related repos so I can't share the exact code here but basically what I'm doing is:\r\n\r\n```\r\n>>> import github\r\n>>> gh = github.Github(\"ACCESS_TOKEN_REDACTED\")\r\n>>> org = gh.get_organization(\"ORG_NAME_REDACTED\")\r\n>>> repo = org.get_repo(\"REPO_NAME_REDACTED\")\r\n>>> branch = repo.master_branch\r\n>>> branch is None\r\nTrue\r\n```\r\n\r\nDoes this suggest I've configured my repo incorrectly? Or am I misunderstanding how to properly use the library?\r\n\r\nThanks in advance. Please let me know what other information might be helpful for troubleshooting.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3007/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3007/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3006","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3006/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3006/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3006/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3006","id":2412525319,"node_id":"PR_kwDOADYVqs51lbYk","number":3006,"title":"Create GithubRetry.DEFAULT_* constants","user":{"login":"jodelasur","id":34933233,"node_id":"MDQ6VXNlcjM0OTMzMjMz","avatar_url":"https://avatars.githubusercontent.com/u/34933233?v=4","gravatar_id":"","url":"https://api.github.com/users/jodelasur","html_url":"https://github.com/jodelasur","followers_url":"https://api.github.com/users/jodelasur/followers","following_url":"https://api.github.com/users/jodelasur/following{/other_user}","gists_url":"https://api.github.com/users/jodelasur/gists{/gist_id}","starred_url":"https://api.github.com/users/jodelasur/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jodelasur/subscriptions","organizations_url":"https://api.github.com/users/jodelasur/orgs","repos_url":"https://api.github.com/users/jodelasur/repos","events_url":"https://api.github.com/users/jodelasur/events{/privacy}","received_events_url":"https://api.github.com/users/jodelasur/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-07-17T03:01:06Z","updated_at":"2024-08-27T10:13:08Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3006","html_url":"https://github.com/PyGithub/PyGithub/pull/3006","diff_url":"https://github.com/PyGithub/PyGithub/pull/3006.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3006.patch","merged_at":null},"body":"Resolves #2970.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3006/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3006/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3003","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3003/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3003/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3003/events","html_url":"https://github.com/PyGithub/PyGithub/issues/3003","id":2410896250,"node_id":"I_kwDOADYVqs6Ps1t6","number":3003,"title":"node_id in IssueComment class","user":{"login":"arash77","id":2973722,"node_id":"MDQ6VXNlcjI5NzM3MjI=","avatar_url":"https://avatars.githubusercontent.com/u/2973722?v=4","gravatar_id":"","url":"https://api.github.com/users/arash77","html_url":"https://github.com/arash77","followers_url":"https://api.github.com/users/arash77/followers","following_url":"https://api.github.com/users/arash77/following{/other_user}","gists_url":"https://api.github.com/users/arash77/gists{/gist_id}","starred_url":"https://api.github.com/users/arash77/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arash77/subscriptions","organizations_url":"https://api.github.com/users/arash77/orgs","repos_url":"https://api.github.com/users/arash77/repos","events_url":"https://api.github.com/users/arash77/events{/privacy}","received_events_url":"https://api.github.com/users/arash77/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-07-16T11:24:29Z","updated_at":"2024-07-16T11:24:29Z","closed_at":null,"author_association":"CONTRIBUTOR","active_lock_reason":null,"body":"To call some GraphQL APIs for comments it is necessary to have the node_id.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3003/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3003/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2999","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2999/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2999/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2999/events","html_url":"https://github.com/PyGithub/PyGithub/issues/2999","id":2395343564,"node_id":"I_kwDOADYVqs6OxgrM","number":2999,"title":"Remediation for CVE-2024-37891","user":{"login":"RSAlderman","id":81417750,"node_id":"MDQ6VXNlcjgxNDE3NzUw","avatar_url":"https://avatars.githubusercontent.com/u/81417750?v=4","gravatar_id":"","url":"https://api.github.com/users/RSAlderman","html_url":"https://github.com/RSAlderman","followers_url":"https://api.github.com/users/RSAlderman/followers","following_url":"https://api.github.com/users/RSAlderman/following{/other_user}","gists_url":"https://api.github.com/users/RSAlderman/gists{/gist_id}","starred_url":"https://api.github.com/users/RSAlderman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RSAlderman/subscriptions","organizations_url":"https://api.github.com/users/RSAlderman/orgs","repos_url":"https://api.github.com/users/RSAlderman/repos","events_url":"https://api.github.com/users/RSAlderman/events{/privacy}","received_events_url":"https://api.github.com/users/RSAlderman/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2024-07-08T11:12:50Z","updated_at":"2024-07-08T12:19:25Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"MEND.io code scanning tool has identified that the latest available [PyGithub 2.3.0](https://pypi.org/project/PyGithub/2.3.0/) (released 2024-03-24) has a dependency on a vulnerable urllib3 package < v2.2.2 ([CVE-2024-37891](https://github.com/urllib3/urllib3/security/advisories/GHSA-34jh-p97f-mpxf))\r\n\r\n> PyGithub-2.3.0-py3-none-any.whl (Root Library)\r\n> ❌ urllib3-2.0.7-py3-none-any.whl (Vulnerable Library)\r\n\r\nCan you please indicate when a remediated version is planned to be released?","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2999/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2999/timeline","performed_via_github_app":null,"state_reason":null},{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2998","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2998/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2998/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2998/events","html_url":"https://github.com/PyGithub/PyGithub/issues/2998","id":2383929448,"node_id":"I_kwDOADYVqs6OF-Bo","number":2998,"title":"Module not found on DJANGO ","user":{"login":"Mahdiar-web","id":173987976,"node_id":"U_kgDOCl7YiA","avatar_url":"https://avatars.githubusercontent.com/u/173987976?v=4","gravatar_id":"","url":"https://api.github.com/users/Mahdiar-web","html_url":"https://github.com/Mahdiar-web","followers_url":"https://api.github.com/users/Mahdiar-web/followers","following_url":"https://api.github.com/users/Mahdiar-web/following{/other_user}","gists_url":"https://api.github.com/users/Mahdiar-web/gists{/gist_id}","starred_url":"https://api.github.com/users/Mahdiar-web/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mahdiar-web/subscriptions","organizations_url":"https://api.github.com/users/Mahdiar-web/orgs","repos_url":"https://api.github.com/users/Mahdiar-web/repos","events_url":"https://api.github.com/users/Mahdiar-web/events{/privacy}","received_events_url":"https://api.github.com/users/Mahdiar-web/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2024-07-01T13:54:59Z","updated_at":"2024-07-04T16:07:55Z","closed_at":null,"author_association":"NONE","active_lock_reason":null,"body":"im trying to runserver in django o see one of my apps namely \"page\" resulted in witnessing module not found \r\n\r\n```\r\nFile \"C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\threading.py\", line 1073, in _bootstrap_inner\r\n    self.run()\r\n  File \"C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\threading.py\", line 1010, in run\r\n    self._target(*self._args, **self._kwargs)\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\utils\\autoreload.py\", line 64, in wrapper\r\n    fn(*args, **kwargs)\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\core\\management\\commands\\runserver.py\", line 125, in inner_run\r\n    autoreload.raise_last_exception()\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\utils\\autoreload.py\", line 87, in raise_last_exception\r\n    raise _exception[1]\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\core\\management\\__init__.py\", line 394, in execute\r\n    autoreload.check_errors(django.setup)()\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\utils\\autoreload.py\", line 64, in wrapper\r\n    fn(*args, **kwargs)\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\__init__.py\", line 24, in setup\r\n    apps.populate(settings.INSTALLED_APPS)\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\apps\\registry.py\", line 91, in populate\r\n    app_config = AppConfig.create(entry)\r\n                 ^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"C:\\Users\\ASUS\\Desktop\\Django\\env\\Lib\\site-packages\\django\\apps\\config.py\", line 193, in create\r\n    import_module(entry)\r\n  File \"C:\\Users\\ASUS\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\importlib\\__init__.py\", line 90, in import_module\r\n    return _bootstrap._gcd_import(name[level:], package, level)\r\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"<frozen importlib._bootstrap>\", line 1387, in _gcd_import\r\n  File \"<frozen importlib._bootstrap>\", line 1360, in _find_and_load\r\n  File \"<frozen importlib._bootstrap>\", line 1324, in _find_and_load_unlocked\r\nModuleNotFoundError: No module named ' page'\r\n```\r\n","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2998/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/2998/timeline","performed_via_github_app":null,"state_reason":null}]
+
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub/issues?per_page=1
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 11:00:14 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/"95e03ccab6d37555e3118eea0a47ec60e353ec760ce8fb9ecccf4b7a1dd0d9e1"'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('Link', '<https://api.github.com/repositories/3544490/issues?per_page=1&page=2>; rel="next", <https://api.github.com/repositories/3544490/issues?per_page=1&page=341>; rel="last"'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4982'), ('X-RateLimit-Reset', '1726571099'), ('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'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F66:351A74:11714D:119A06:66E9613E')]
+[{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045","repository_url":"https://api.github.com/repos/PyGithub/PyGithub","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/labels{/name}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/comments","events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/events","html_url":"https://github.com/PyGithub/PyGithub/pull/3045","id":2528623106,"node_id":"PR_kwDOADYVqs57oSc6","number":3045,"title":"Make tests pass some more years","user":{"login":"bmwiedemann","id":637990,"node_id":"MDQ6VXNlcjYzNzk5MA==","avatar_url":"https://avatars.githubusercontent.com/u/637990?v=4","gravatar_id":"","url":"https://api.github.com/users/bmwiedemann","html_url":"https://github.com/bmwiedemann","followers_url":"https://api.github.com/users/bmwiedemann/followers","following_url":"https://api.github.com/users/bmwiedemann/following{/other_user}","gists_url":"https://api.github.com/users/bmwiedemann/gists{/gist_id}","starred_url":"https://api.github.com/users/bmwiedemann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmwiedemann/subscriptions","organizations_url":"https://api.github.com/users/bmwiedemann/orgs","repos_url":"https://api.github.com/users/bmwiedemann/repos","events_url":"https://api.github.com/users/bmwiedemann/events{/privacy}","received_events_url":"https://api.github.com/users/bmwiedemann/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2024-09-16T14:19:35Z","updated_at":"2024-09-16T14:19:35Z","closed_at":null,"author_association":"FIRST_TIME_CONTRIBUTOR","active_lock_reason":null,"draft":false,"pull_request":{"url":"https://api.github.com/repos/PyGithub/PyGithub/pulls/3045","html_url":"https://github.com/PyGithub/PyGithub/pull/3045","diff_url":"https://github.com/PyGithub/PyGithub/pull/3045.diff","patch_url":"https://github.com/PyGithub/PyGithub/pull/3045.patch","merged_at":null},"body":"Without this patch, tests fail after 2024-11-25.\n\nBackground:\nAs part of my work on reproducible builds for openSUSE, I check that software still gives identical build results in the future.\nThe usual offset is +16 years, because that is how long I expect some software will be used in some places.\nThis showed up failing tests in our python-PyGithub package build.\nSee https://reproducible-builds.org/ for why this matters.","closed_by":null,"reactions":{"url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/3045/timeline","performed_via_github_app":null,"state_reason":null}]
diff --git a/tests/ReplayData/GraphQl.testQuery.txt b/tests/ReplayData/GraphQl.testQuery.txt
new file mode 100644
index 000000000..9fc623326
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testQuery.txt
@@ -0,0 +1,10 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($owner: String!, $name: String!) {\n              repository(owner: $owner, name: $name) { url }\n            }", "variables": {"owner": "PyGithub", "name": "PyGithub"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:26:35 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4979'), ('X-RateLimit-Reset', '1726598744'), ('X-RateLimit-Used', '21'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA1:2B9D7D:FDA0F:1007DB:66E9C9DA')]
+{"data":{"repository":{"url":"https://github.com/PyGithub/PyGithub"}}}
diff --git a/tests/ReplayData/GraphQl.testQueryGraphQlClass.txt b/tests/ReplayData/GraphQl.testQueryGraphQlClass.txt
new file mode 100644
index 000000000..2ca403b13
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testQueryGraphQlClass.txt
@@ -0,0 +1,10 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) { ... on DiscussionComment { url } }\n            }", "variables": {"id": "DC_kwDOADYVqs4AU3Mg"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:58:31 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4990'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '10'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F30:39A73C:87FC61:8965EC:66E9D157')]
+{"data":{"node":{"url":"https://github.com/PyGithub/PyGithub/discussions/2480#discussioncomment-5468960"}}}
diff --git a/tests/ReplayData/GraphQl.testQueryRestClass.txt b/tests/ReplayData/GraphQl.testQueryRestClass.txt
new file mode 100644
index 000000000..c5816011d
--- /dev/null
+++ b/tests/ReplayData/GraphQl.testQueryRestClass.txt
@@ -0,0 +1,10 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($owner: String!, $name: String!) {\n              repository(owner: $owner, name: $name) { url }\n            }", "variables": {"owner": "PyGithub", "name": "PyGithub"}}
+200
+[('Date', 'Tue, 17 Sep 2024 18:58:30 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4991'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '9'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F17:39A73C:87FB5E:8964DF:66E9D156')]
+{"data":{"repository":{"url":"https://github.com/PyGithub/PyGithub"}}}
diff --git a/tests/ReplayData/PaginatedList.testGraphQlPagination.txt b/tests/ReplayData/PaginatedList.testGraphQlPagination.txt
new file mode 100644
index 000000000..709e2e5e1
--- /dev/null
+++ b/tests/ReplayData/PaginatedList.testGraphQlPagination.txt
@@ -0,0 +1,87 @@
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:02 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/"673c5f1199083cdc732a68adb10687eef0cddf7b47b98aae062c044d293eeb6e"'), ('Last-Modified', 'Tue, 17 Sep 2024 17:14:19 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4994'), ('X-RateLimit-Reset', '1726603586'), ('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', '7F17:39A73C:90E1A8:9263C0:66E9D392')]
+{"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T17:14:19Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6906,"watchers_count":6906,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6906,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { id number }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4980'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '20'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F24:0F74:2C9F50:2D2649:66E9D392')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"id":"D_kwDOADYVqs4AbYx8","number":3044},{"id":"D_kwDOADYVqs4AbOZV","number":3033},{"id":"D_kwDOADYVqs4AaHoG","number":2993},{"id":"D_kwDOADYVqs4APEfM","number":2205},{"id":"D_kwDOADYVqs4AYpFV","number":2938},{"id":"D_kwDOADYVqs4AaOPh","number":2997},{"id":"D_kwDOADYVqs4AaEL9","number":2991},{"id":"D_kwDOADYVqs4AY1Qr","number":2953},{"id":"D_kwDOADYVqs4AYqi6","number":2943},{"id":"D_kwDOADYVqs4AYLcF","number":2916},{"id":"D_kwDOADYVqs4AX7h-","number":2909},{"id":"D_kwDOADYVqs4AXfgf","number":2889},{"id":"D_kwDOADYVqs4AWoET","number":2852},{"id":"D_kwDOADYVqs4AWfTk","number":2849},{"id":"D_kwDOADYVqs4AWN90","number":2814},{"id":"D_kwDOADYVqs4AV4CR","number":2795},{"id":"D_kwDOADYVqs4AVemo","number":2758},{"id":"D_kwDOADYVqs4AVJc_","number":2737},{"id":"D_kwDOADYVqs4AU_3J","number":2710},{"id":"D_kwDOADYVqs4ATVaC","number":2495},{"id":"D_kwDOADYVqs4APye2","number":2255},{"id":"D_kwDOADYVqs4AUj0g","number":2619},{"id":"D_kwDOADYVqs4AUSqN","number":2559},{"id":"D_kwDOADYVqs4AOBfB","number":2104},{"id":"D_kwDOADYVqs4AUAze","number":2539},{"id":"D_kwDOADYVqs4AOzRO","number":2177},{"id":"D_kwDOADYVqs4AS7Mv","number":2453},{"id":"D_kwDOADYVqs4ATdq2","number":2500},{"id":"D_kwDOADYVqs4ATJZD","number":2480},{"id":"D_kwDOADYVqs4AQ6mO","number":2321}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { id number }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO"}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4979'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '21'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F27:2B9D7D:33AD64:344396:66E9D393')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNlQxMzoyODo1MiswMTowMM4ASrYx","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT","hasNextPage":true,"hasPreviousPage":true},"nodes":[{"id":"D_kwDOADYVqs4ASrYx","number":2438},{"id":"D_kwDOADYVqs4ARkEV","number":2368},{"id":"D_kwDOADYVqs4ARjip","number":2367},{"id":"D_kwDOADYVqs4AP-zL","number":2264},{"id":"D_kwDOADYVqs4ARbFw","number":2357},{"id":"D_kwDOADYVqs4AQ39o","number":2318},{"id":"D_kwDOADYVqs4AQvCS","number":2306},{"id":"D_kwDOADYVqs4AQsU4","number":2304},{"id":"D_kwDOADYVqs4AQkpa","number":2298},{"id":"D_kwDOADYVqs4AQbma","number":2293},{"id":"D_kwDOADYVqs4AQbDa","number":2292},{"id":"D_kwDOADYVqs4AOdu4","number":2153},{"id":"D_kwDOADYVqs4AQJZe","number":2277},{"id":"D_kwDOADYVqs4ANphT","number":2057},{"id":"D_kwDOADYVqs4APrSb","number":2246},{"id":"D_kwDOADYVqs4APqQq","number":2242},{"id":"D_kwDOADYVqs4AOz7S","number":2179},{"id":"D_kwDOADYVqs4AOw8Q","number":2173},{"id":"D_kwDOADYVqs4AOeON","number":2155},{"id":"D_kwDOADYVqs4AONXM","number":2124},{"id":"MDEwOkRpc2N1c3Npb24zNDkxNjI2","number":2013},{"id":"MDEwOkRpc2N1c3Npb24zNDU2NDg0","number":1993},{"id":"MDEwOkRpc2N1c3Npb24zNTExNTg4","number":2023},{"id":"MDEwOkRpc2N1c3Npb24zNTA0OTQ4","number":2018},{"id":"MDEwOkRpc2N1c3Npb24zNTAwNzI2","number":2015},{"id":"MDEwOkRpc2N1c3Npb24zMjQzMTgx","number":1864},{"id":"MDEwOkRpc2N1c3Npb24zMzg4NzEy","number":1964},{"id":"MDEwOkRpc2N1c3Npb243Mzc4NA==","number":1790},{"id":"MDEwOkRpc2N1c3Npb24zMzU4MDAz","number":1946},{"id":"MDEwOkRpc2N1c3Npb24zMzQ0NzIz","number":1936}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { id number }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT"}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4978'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '22'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F8E:0F74:2CA274:2D2971:66E9D393')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wMy0xOFQwMzowODowMSswMTowMM4ALjaQ","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":true},"nodes":[{"id":"MDEwOkRpc2N1c3Npb24zMDI4NjI0","number":1848},{"id":"MDEwOkRpc2N1c3Npb24zMjI2MTI4","number":1854},{"id":"MDEwOkRpc2N1c3Npb24xNjY3ODM4","number":1819},{"id":"MDEwOkRpc2N1c3Npb240ODg4Ng==","number":1778},{"id":"MDEwOkRpc2N1c3Npb240ODkxMQ==","number":1780}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { id number }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "last": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4977'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '23'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F22:149128:8C2DDB:8DA7E3:66E9D393')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMi0wOS0yNlQyMDo1ODoxOSswMjowMM4AQ39o","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":true},"nodes":[{"id":"D_kwDOADYVqs4AQ39o","number":2318},{"id":"D_kwDOADYVqs4AQvCS","number":2306},{"id":"D_kwDOADYVqs4AQsU4","number":2304},{"id":"D_kwDOADYVqs4AQkpa","number":2298},{"id":"D_kwDOADYVqs4AQbma","number":2293},{"id":"D_kwDOADYVqs4AQbDa","number":2292},{"id":"D_kwDOADYVqs4AOdu4","number":2153},{"id":"D_kwDOADYVqs4AQJZe","number":2277},{"id":"D_kwDOADYVqs4ANphT","number":2057},{"id":"D_kwDOADYVqs4APrSb","number":2246},{"id":"D_kwDOADYVqs4APqQq","number":2242},{"id":"D_kwDOADYVqs4AOz7S","number":2179},{"id":"D_kwDOADYVqs4AOw8Q","number":2173},{"id":"D_kwDOADYVqs4AOeON","number":2155},{"id":"D_kwDOADYVqs4AONXM","number":2124},{"id":"MDEwOkRpc2N1c3Npb24zNDkxNjI2","number":2013},{"id":"MDEwOkRpc2N1c3Npb24zNDU2NDg0","number":1993},{"id":"MDEwOkRpc2N1c3Npb24zNTExNTg4","number":2023},{"id":"MDEwOkRpc2N1c3Npb24zNTA0OTQ4","number":2018},{"id":"MDEwOkRpc2N1c3Npb24zNTAwNzI2","number":2015},{"id":"MDEwOkRpc2N1c3Npb24zMjQzMTgx","number":1864},{"id":"MDEwOkRpc2N1c3Npb24zMzg4NzEy","number":1964},{"id":"MDEwOkRpc2N1c3Npb243Mzc4NA==","number":1790},{"id":"MDEwOkRpc2N1c3Npb24zMzU4MDAz","number":1946},{"id":"MDEwOkRpc2N1c3Npb24zMzQ0NzIz","number":1936},{"id":"MDEwOkRpc2N1c3Npb24zMDI4NjI0","number":1848},{"id":"MDEwOkRpc2N1c3Npb24zMjI2MTI4","number":1854},{"id":"MDEwOkRpc2N1c3Npb24xNjY3ODM4","number":1819},{"id":"MDEwOkRpc2N1c3Npb240ODg4Ng==","number":1778},{"id":"MDEwOkRpc2N1c3Npb240ODkxMQ==","number":1780}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { id number }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "last": 30, "before": "Y3Vyc29yOnYyOpK5MjAyMi0wOS0yNlQyMDo1ODoxOSswMjowMM4AQ39o"}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4976'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '24'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F3A:39A73C:90EC18:926E5B:66E9D394')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wNi0yOFQyMDowODo1MyswMjowMM4AaOPh","endCursor":"Y3Vyc29yOnYyOpK5MjAyMi0xMS0yMlQwODo0Mjo0OCswMTowMM4ARbFw","hasNextPage":true,"hasPreviousPage":true},"nodes":[{"id":"D_kwDOADYVqs4AaOPh","number":2997},{"id":"D_kwDOADYVqs4AaEL9","number":2991},{"id":"D_kwDOADYVqs4AY1Qr","number":2953},{"id":"D_kwDOADYVqs4AYqi6","number":2943},{"id":"D_kwDOADYVqs4AYLcF","number":2916},{"id":"D_kwDOADYVqs4AX7h-","number":2909},{"id":"D_kwDOADYVqs4AXfgf","number":2889},{"id":"D_kwDOADYVqs4AWoET","number":2852},{"id":"D_kwDOADYVqs4AWfTk","number":2849},{"id":"D_kwDOADYVqs4AWN90","number":2814},{"id":"D_kwDOADYVqs4AV4CR","number":2795},{"id":"D_kwDOADYVqs4AVemo","number":2758},{"id":"D_kwDOADYVqs4AVJc_","number":2737},{"id":"D_kwDOADYVqs4AU_3J","number":2710},{"id":"D_kwDOADYVqs4ATVaC","number":2495},{"id":"D_kwDOADYVqs4APye2","number":2255},{"id":"D_kwDOADYVqs4AUj0g","number":2619},{"id":"D_kwDOADYVqs4AUSqN","number":2559},{"id":"D_kwDOADYVqs4AOBfB","number":2104},{"id":"D_kwDOADYVqs4AUAze","number":2539},{"id":"D_kwDOADYVqs4AOzRO","number":2177},{"id":"D_kwDOADYVqs4AS7Mv","number":2453},{"id":"D_kwDOADYVqs4ATdq2","number":2500},{"id":"D_kwDOADYVqs4ATJZD","number":2480},{"id":"D_kwDOADYVqs4AQ6mO","number":2321},{"id":"D_kwDOADYVqs4ASrYx","number":2438},{"id":"D_kwDOADYVqs4ARkEV","number":2368},{"id":"D_kwDOADYVqs4ARjip","number":2367},{"id":"D_kwDOADYVqs4AP-zL","number":2264},{"id":"D_kwDOADYVqs4ARbFw","number":2357}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { id number }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "last": 30, "before": "Y3Vyc29yOnYyOpK5MjAyNC0wNi0yOFQyMDowODo1MyswMjowMM4AaOPh"}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:05 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4975'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '25'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FB8:381690:9439A6:95B6AF:66E9D394')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOFQxNzozMjoxMiswMjowMM4AYpFV","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"id":"D_kwDOADYVqs4AbYx8","number":3044},{"id":"D_kwDOADYVqs4AbOZV","number":3033},{"id":"D_kwDOADYVqs4AaHoG","number":2993},{"id":"D_kwDOADYVqs4APEfM","number":2205},{"id":"D_kwDOADYVqs4AYpFV","number":2938}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { id number }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 1, "after": null}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:08:05 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4974'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '26'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FDE:34173C:353005:35C67F:66E9D395')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"id":"D_kwDOADYVqs4AbYx8","number":3044}]}}}}
diff --git a/tests/ReplayData/Repository.testGetDiscussions.txt b/tests/ReplayData/Repository.testGetDiscussions.txt
new file mode 100644
index 000000000..5ba7a11aa
--- /dev/null
+++ b/tests/ReplayData/Repository.testGetDiscussions.txt
@@ -0,0 +1,43 @@
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 13:54:13 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/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4978'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '22'), ('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', '7FBA:1BAA22:E03E49:E21E67:66E98A05')]
+{"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n            author { login }\n            number\n            repository {\n              owner { login }\n              name\n            }\n            title\n          }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 13:54:14 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4987'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '13'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F75:221185:D4482D:D6286C:66E98A05')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO","hasNextPage":true,"hasPreviousPage":false},"nodes":[{"author":{"login":"gmishkin"},"number":3044,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Automaticlly look for access tokens in standard places"},{"author":{"login":"kostrykin"},"number":3033,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Possible to interact with the Discussions on a GitHub repository?"},{"author":{"login":"heitorPB"},"number":2993,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get a list of custom repository properties?"},{"author":{"login":"EnricoMi"},"number":2205,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is the PyGithub project dead? How can the community help?"},{"author":{"login":"guymatz"},"number":2938,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How can I tell if my branch has a Pull Request?"},{"author":{"login":"bobneuman"},"number":2997,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Response caching"},{"author":{"login":"syang"},"number":2991,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Recursively list all file names in a repo without being throttled"},{"author":{"login":"lmilbaum"},"number":2953,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Can this project used for creation a GitHub app?"},{"author":{"login":"zituo-jin"},"number":2943,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Operations on pull requests in merge queue"},{"author":{"login":"pn17F2DD3"},"number":2916,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Count the number of 'reopened' issues in GitHub"},{"author":{"login":"bliu11"},"number":2909,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"long backoff time when encountering a single 403"},{"author":{"login":"andrewakl"},"number":2889,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to set the \"prevent_self_review\" param when creating/updating GitHub environment?"},{"author":{"login":"whanso"},"number":2852,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Batch multiple `create_file` invocations within single commit?"},{"author":{"login":"baishuotong"},"number":2849,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"A research for generating PR checklists in Pull Request Template"},{"author":{"login":"marksie1988"},"number":2814,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"get_secret not raising an exception"},{"author":{"login":"fsadykov"},"number":2795,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get github issue python class using url or id?"},{"author":{"login":"vsajip"},"number":2758,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How do you sync a fork with its parent?"},{"author":{"login":"lokeshwarobuli"},"number":2737,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to log requests"},{"author":{"login":"aditya-samalla"},"number":2710,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to sign a commit raised via PyGithub"},{"author":{"login":"zsbeheshti"},"number":2495,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Definition of the initial population for the genetic algorithm by the user"},{"author":{"login":"buhtz"},"number":2255,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to securily use access tokens?"},{"author":null,"number":2619,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How do I create a new branch with PyGithub?"},{"author":{"login":"antoineKorbit"},"number":2559,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Release of new version for this library"},{"author":{"login":"dougdonohoe"},"number":2104,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How do I call /installation/repositories API?"},{"author":{"login":"parteekcoder"},"number":2539,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Pull request accross different repository"},{"author":{"login":"jackfurr"},"number":2177,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to Revert a Merged PR"},{"author":{"login":"EnricoMi"},"number":2453,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Maintainers TODO list"},{"author":{"login":"c4mmartin"},"number":2500,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Trying to fire off workflow_dispatch events"},{"author":{"login":"arunanandhan"},"number":2480,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is there a way to search if a string present in default branch?"},{"author":{"login":"EnricoMi"},"number":2321,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Prioritising pull requests"}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n            author { login }\n            number\n            repository {\n              owner { login }\n              name\n            }\n            title\n          }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMy0wMy0xNFQwOTozNjoxOSswMTowMM4AQ6mO"}}
+200
+[('Date', 'Tue, 17 Sep 2024 13:54:14 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4986'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '14'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F1E:39E39C:D73E82:D91A96:66E98A06')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMi0yNlQxMzoyODo1MiswMTowMM4ASrYx","endCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT","hasNextPage":true,"hasPreviousPage":true},"nodes":[{"author":{"login":"Vuizur"},"number":2438,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Uploading multiple assets to a release"},{"author":{"login":"songyuc"},"number":2368,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Can I download a specifical file from my repo?"},{"author":{"login":"gitblanc"},"number":2367,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"ImportError: cannot import name 'Github' from 'github' (/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/github/__init__.py)"},{"author":{"login":"mmdbalkhi"},"number":2264,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:2396)"},{"author":{"login":"mariolasagna007"},"number":2357,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"repo.get_codescan_alerts()"},{"author":{"login":"xii-yang"},"number":2318,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to search the Pull Request which first introduce a commit Sha"},{"author":{"login":"xenosdio"},"number":2306,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Verify if login_or_token is correct"},{"author":{"login":"DelaporteRobin"},"number":2304,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Upload files on github"},{"author":{"login":"mosheco"},"number":2298,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Question: where is GithubIntegration documented ."},{"author":{"login":"ygoldsmith"},"number":2293,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to query check suite results"},{"author":{"login":"nri-xiang-liu-01"},"number":2292,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How can I create a new branch by use PyGithub?"},{"author":{"login":"yoyomeng2"},"number":2153,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Is there support to set bypass PR requirements users?"},{"author":{"login":"kenorb"},"number":2277,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Download an artifact's file from GitHub Actions (Workflows)"},{"author":{"login":"LuisSFGH"},"number":2057,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Do you have plans to add workflows features?"},{"author":{"login":"sayakpaul"},"number":2246,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Question on hostname"},{"author":{"login":"sr-murthy"},"number":2242,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Top repo contributors"},{"author":{"login":"kamaraj-muthupandian"},"number":2179,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Connect GHE cloud using OIDC"},{"author":{"login":"xmo-odoo"},"number":2173,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Dedicated builder object for review comments?"},{"author":{"login":"yoyomeng2"},"number":2155,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"GithubCredentials 401"},{"author":{"login":"padmashree12"},"number":2124,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Star"},{"author":{"login":"simkimsia"},"number":2013,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to run tests for just 1 test case?"},{"author":{"login":"scoates"},"number":1993,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Drop .pyi?"},{"author":{"login":"yoyomeng2"},"number":2023,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Looking for githubstatus Object?"},{"author":{"login":"evilensky"},"number":2018,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"audit-log"},{"author":{"login":"orenzp"},"number":2015,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"PyGithub support for Team"},{"author":{"login":"Nuzair46"},"number":1864,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"get_contributers"},{"author":{"login":"Captain8771"},"number":1964,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"ModuleNotFoundError: No module named 'github' but i pip installed pygithub?"},{"author":{"login":"ssbarnea"},"number":1790,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to batch enable auto-merges on multiple repositories?"},{"author":{"login":"astrochun"},"number":1946,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Exporting JSON about repositories"},{"author":{"login":"bhushanladdad"},"number":1936,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"get_contents thorws error UnknownObjectException"}]}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes {\n            author { login }\n            number\n            repository {\n              owner { login }\n              name\n            }\n            title\n          }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": null, "first": 30, "after": "Y3Vyc29yOnYyOpK5MjAyMS0wNS0wMVQwNTozMzoxMCswMjowMM4AMwlT"}}
+200
+[('Date', 'Tue, 17 Sep 2024 13:54:15 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4985'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '15'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FB0:3299B4:DC961E:DE761B:66E98A06')]
+{"data":{"repository":{"discussions":{"totalCount":65,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyMS0wMy0xOFQwMzowODowMSswMTowMM4ALjaQ","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":true},"nodes":[{"author":{"login":"dejokz"},"number":1848,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get number of open and closed issue of a repo"},{"author":{"login":"MarkWilsonODS"},"number":1854,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Repo visibility"},{"author":{"login":"kenorb"},"number":1819,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to access logs_url's contents?"},{"author":{"login":"henryiii"},"number":1778,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Dump Issue to structured format"},{"author":{"login":"henryiii"},"number":1780,"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"Show an example of a more advanced query"}]}}}}
diff --git a/tests/ReplayData/Repository.testGetDiscussionsByAnswered.txt b/tests/ReplayData/Repository.testGetDiscussionsByAnswered.txt
new file mode 100644
index 000000000..0e1911ea5
--- /dev/null
+++ b/tests/ReplayData/Repository.testGetDiscussionsByAnswered.txt
@@ -0,0 +1,21 @@
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 13:41:20 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/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4996'), ('X-RateLimit-Reset', '1726582607'), ('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', '7FFB:93EBB:C1EEA3:C3A90C:66E98700')]
+{"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { number title }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": true, "category_id": null, "states": null, "first": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 13:41:21 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4998'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '2'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FBC:3299B4:CDA584:CF6517:66E98700')]
+{"data":{"repository":{"discussions":{"totalCount":10,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxODowMTowMCswMjowMM4AaHoG","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQxNTo1Njo1MSswMTowMM2-9g==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"number":2993,"title":"How to get a list of custom repository properties?"},{"number":2619,"title":"How do I create a new branch with PyGithub?"},{"number":2104,"title":"How do I call /installation/repositories API?"},{"number":2500,"title":"Trying to fire off workflow_dispatch events"},{"number":2292,"title":"How can I create a new branch by use PyGithub?"},{"number":2153,"title":"Is there support to set bypass PR requirements users?"},{"number":2277,"title":"Download an artifact's file from GitHub Actions (Workflows)"},{"number":2023,"title":"Looking for githubstatus Object?"},{"number":1964,"title":"ModuleNotFoundError: No module named 'github' but i pip installed pygithub?"},{"number":1778,"title":"Dump Issue to structured format"}]}}}}
diff --git a/tests/ReplayData/Repository.testGetDiscussionsByCategory.txt b/tests/ReplayData/Repository.testGetDiscussionsByCategory.txt
new file mode 100644
index 000000000..54951e5b9
--- /dev/null
+++ b/tests/ReplayData/Repository.testGetDiscussionsByCategory.txt
@@ -0,0 +1,21 @@
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 13:52: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/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4981'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '19'), ('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', '7F55:1BAA22:DE780E:E05464:66E989AD')]
+{"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { number title }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": "MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYy", "states": null, "first": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 13:52:46 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4988'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '12'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F12:39E39C:D5995D:D7719E:66E989AD')]
+{"data":{"repository":{"discussions":{"totalCount":7,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOS0xM1QxOToyMzowOSswMjowMM4AbYx8","endCursor":"Y3Vyc29yOnYyOpK5MjAyMC0xMi0wOVQwNjo0NDozMiswMTowMM2_Dw==","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"number":3044,"title":"Automaticlly look for access tokens in standard places"},{"number":2997,"title":"Response caching"},{"number":2057,"title":"Do you have plans to add workflows features?"},{"number":2242,"title":"Top repo contributors"},{"number":2173,"title":"Dedicated builder object for review comments?"},{"number":1993,"title":"Drop .pyi?"},{"number":1780,"title":"Show an example of a more advanced query"}]}}},"extensions":{"warnings":[{"type":"DEPRECATION","message":"The id MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYy is deprecated. Update your cache to use the next_global_id from the data payload.","data":{"legacy_global_id":"MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYy","next_global_id":"DIC_kwDOADYVqs4B6LmG"},"link":"https://docs.github.com"}]}}
diff --git a/tests/ReplayData/Repository.testGetDiscussionsByStates.txt b/tests/ReplayData/Repository.testGetDiscussionsByStates.txt
new file mode 100644
index 000000000..8d8bfdb5d
--- /dev/null
+++ b/tests/ReplayData/Repository.testGetDiscussionsByStates.txt
@@ -0,0 +1,21 @@
+https
+GET
+api.github.com
+None
+/repos/PyGithub/PyGithub
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'}
+None
+200
+[('Date', 'Tue, 17 Sep 2024 13:49:29 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/"c8e45d1a983f482b7c91fe66326bb90a746e7a7d4592af657e9f4076fc3c4466"'), ('Last-Modified', 'Tue, 17 Sep 2024 06:27:32 GMT'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v3; format=json'), ('x-github-api-version-selected', '2022-11-28'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4987'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '13'), ('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', '7F0A:8BC4A:D5EE80:D7C1D7:66E988E9')]
+{"id":3544490,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ0NDkw","name":"PyGithub","full_name":"PyGithub/PyGithub","private":false,"owner":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"html_url":"https://github.com/PyGithub/PyGithub","description":"Typed interactions with the GitHub API v3","fork":false,"url":"https://api.github.com/repos/PyGithub/PyGithub","forks_url":"https://api.github.com/repos/PyGithub/PyGithub/forks","keys_url":"https://api.github.com/repos/PyGithub/PyGithub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PyGithub/PyGithub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PyGithub/PyGithub/teams","hooks_url":"https://api.github.com/repos/PyGithub/PyGithub/hooks","issue_events_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/events{/number}","events_url":"https://api.github.com/repos/PyGithub/PyGithub/events","assignees_url":"https://api.github.com/repos/PyGithub/PyGithub/assignees{/user}","branches_url":"https://api.github.com/repos/PyGithub/PyGithub/branches{/branch}","tags_url":"https://api.github.com/repos/PyGithub/PyGithub/tags","blobs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PyGithub/PyGithub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PyGithub/PyGithub/git/refs{/sha}","trees_url":"https://api.github.com/repos/PyGithub/PyGithub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PyGithub/PyGithub/statuses/{sha}","languages_url":"https://api.github.com/repos/PyGithub/PyGithub/languages","stargazers_url":"https://api.github.com/repos/PyGithub/PyGithub/stargazers","contributors_url":"https://api.github.com/repos/PyGithub/PyGithub/contributors","subscribers_url":"https://api.github.com/repos/PyGithub/PyGithub/subscribers","subscription_url":"https://api.github.com/repos/PyGithub/PyGithub/subscription","commits_url":"https://api.github.com/repos/PyGithub/PyGithub/commits{/sha}","git_commits_url":"https://api.github.com/repos/PyGithub/PyGithub/git/commits{/sha}","comments_url":"https://api.github.com/repos/PyGithub/PyGithub/comments{/number}","issue_comment_url":"https://api.github.com/repos/PyGithub/PyGithub/issues/comments{/number}","contents_url":"https://api.github.com/repos/PyGithub/PyGithub/contents/{+path}","compare_url":"https://api.github.com/repos/PyGithub/PyGithub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PyGithub/PyGithub/merges","archive_url":"https://api.github.com/repos/PyGithub/PyGithub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PyGithub/PyGithub/downloads","issues_url":"https://api.github.com/repos/PyGithub/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/PyGithub/PyGithub/pulls{/number}","milestones_url":"https://api.github.com/repos/PyGithub/PyGithub/milestones{/number}","notifications_url":"https://api.github.com/repos/PyGithub/PyGithub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PyGithub/PyGithub/labels{/name}","releases_url":"https://api.github.com/repos/PyGithub/PyGithub/releases{/id}","deployments_url":"https://api.github.com/repos/PyGithub/PyGithub/deployments","created_at":"2012-02-25T12:53:47Z","updated_at":"2024-09-17T06:27:32Z","pushed_at":"2024-09-12T10:47:45Z","git_url":"git://github.com/PyGithub/PyGithub.git","ssh_url":"git@github.com:PyGithub/PyGithub.git","clone_url":"https://github.com/PyGithub/PyGithub.git","svn_url":"https://github.com/PyGithub/PyGithub","homepage":"https://pygithub.readthedocs.io/","size":16092,"stargazers_count":6905,"watchers_count":6905,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"has_discussions":true,"forks_count":1762,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":341,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"topics":["github","github-api","pygithub","python"],"visibility":"public","forks":1762,"open_issues":341,"watchers":6905,"default_branch":"main","permissions":{"admin":true,"maintain":true,"push":true,"triage":true,"pull":true},"temp_clone_token":"","custom_properties":{},"organization":{"login":"PyGithub","id":11288996,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMjg4OTk2","avatar_url":"https://avatars.githubusercontent.com/u/11288996?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":"Organization","site_admin":false},"network_count":1762,"subscribers_count":111}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($repo: String!, $owner: String!, $answered: Boolean, $category_id: ID, $states: [DiscussionState!], $first: Int, $last: Int, $before: String, $after: String) {\n              repository(name: $repo, owner: $owner) {\n                discussions(answered: $answered, categoryId: $category_id, states: $states, first: $first, last: $last, before: $before, after: $after) {\n                  totalCount\n                  pageInfo {\n                    startCursor\n                    endCursor\n                    hasNextPage\n                    hasPreviousPage\n                  }\n                  nodes { number title }\n                }\n              }\n            }\n            ", "variables": {"repo": "PyGithub", "owner": "PyGithub", "answered": null, "category_id": null, "states": ["CLOSED"], "first": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 13:49:29 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4991'), ('X-RateLimit-Reset', '1726582607'), ('X-RateLimit-Used', '9'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF2:2E65B1:C92755:CAF635:66E988E9')]
+{"data":{"repository":{"discussions":{"totalCount":6,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOFQxNzozMjoxMiswMjowMM4AYpFV","endCursor":"Y3Vyc29yOnYyOpK5MjAyMy0wMy0zMFQxODoxODo0OSswMjowMM4ATJZD","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"number":2938,"title":"How can I tell if my branch has a Pull Request?"},{"number":2495,"title":"Definition of the initial population for the genetic algorithm by the user"},{"number":2559,"title":"Release of new version for this library"},{"number":2104,"title":"How do I call /installation/repositories API?"},{"number":2539,"title":"Pull request accross different repository"},{"number":2480,"title":"Is there a way to search if a string present in default branch?"}]}}}}
diff --git a/tests/ReplayData/RepositoryDiscussion.setUp.txt b/tests/ReplayData/RepositoryDiscussion.setUp.txt
new file mode 100644
index 000000000..0b31ee1bf
--- /dev/null
+++ b/tests/ReplayData/RepositoryDiscussion.setUp.txt
@@ -0,0 +1,10 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion {\n        answer {\n          author { login }\n          body\n          bodyHTML\n          bodyText\n          createdAt\n          databaseId\n          discussion { id }\n          editor { login }\n          id\n          lastEditedAt\n          updatedAt\n          url\n        }\n        author { login }\n        body\n        bodyHTML\n        bodyText\n        category {\n          createdAt\n          description\n          emoji\n          emojiHTML\n          id\n          isAnswerable\n          name\n          repository { owner { login } name }\n          slug\n          updatedAt\n        }\n        comments(first: 10) {\n          totalCount\n          pageInfo {\n            startCursor\n            endCursor\n            hasNextPage\n            hasPreviousPage\n          }\n          nodes {\n            id\n          }\n        }\n        createdAt\n        databaseId\n        editor { login }\n        id\n        labels(first: 10) {\n          totalCount\n          pageInfo {\n            startCursor\n            endCursor\n            hasNextPage\n            hasPreviousPage\n          }\n          nodes {\n            id\n            name\n          }\n        }\n        lastEditedAt\n        number\n        reactions(first: 10) {\n          totalCount\n          pageInfo {\n            startCursor\n            endCursor\n            hasNextPage\n            hasPreviousPage\n          }\n          nodes {\n            id\n          }\n        }\n        repository {\n          owner { login }\n          name\n        }\n        title\n        updatedAt\n        url\n      }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:10:18 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4973'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '27'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F67:2B9D7D:35ACF2:3648DD:66E9D41A')]
+{"data":{"node":{"__typename":"Discussion","answer":{"author":{"login":"dawngerpony"},"body":"[This comment](https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108) contains the answer to your question:\r\n\r\n```python\r\nmy_repo.raw_data[\"custom_properties\"]\r\n```\r\n\r\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.","bodyHTML":"<p dir=\"auto\"><a href=\"https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108\" data-hovercard-type=\"issue\" data-hovercard-url=\"/PyGithub/PyGithub/issues/2895/hovercard\">This comment</a> contains the answer to your question:</p>\n<div class=\"highlight highlight-source-python notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"my_repo.raw_data[&quot;custom_properties&quot;]\"><pre class=\"notranslate\"><span class=\"pl-s1\">my_repo</span>.<span class=\"pl-s1\">raw_data</span>[<span class=\"pl-s\">\"custom_properties\"</span>]</pre></div>\n<p dir=\"auto\"><a class=\"issue-link js-issue-link\" data-error-text=\"Failed to load title\" data-id=\"2293897055\" data-permission-text=\"Title is private\" data-url=\"https://github.com/PyGithub/PyGithub/issues/2968\" data-hovercard-type=\"pull_request\" data-hovercard-url=\"/PyGithub/PyGithub/pull/2968/hovercard\" href=\"https://github.com/PyGithub/PyGithub/pull/2968\">#2968</a> appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.</p>","bodyText":"This comment contains the answer to your question:\nmy_repo.raw_data[\"custom_properties\"]\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.","createdAt":"2024-08-23T06:36:50Z","databaseId":10426644,"discussion":{"id":"D_kwDOADYVqs4AaHoG"},"editor":null,"id":"DC_kwDOADYVqs4AnxkU","lastEditedAt":null,"updatedAt":"2024-08-23T06:36:51Z","url":"https://github.com/PyGithub/PyGithub/discussions/2993#discussioncomment-10426644"},"author":{"login":"heitorPB"},"body":"What is the equivalent of `https://api.github.com/repos/OWNER/REPO/properties/values`? I'm interested in getting/setting custom properties for my repos. I can do that with `curl`, but couldn't find a way to do it via this project.\r\n\r\nDocs here: [Get all custom property values for a repository](https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository).","bodyHTML":"<p dir=\"auto\">What is the equivalent of <code class=\"notranslate\">https://api.github.com/repos/OWNER/REPO/properties/values</code>? I'm interested in getting/setting custom properties for my repos. I can do that with <code class=\"notranslate\">curl</code>, but couldn't find a way to do it via this project.</p>\n<p dir=\"auto\">Docs here: <a href=\"https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository\">Get all custom property values for a repository</a>.</p>","bodyText":"What is the equivalent of https://api.github.com/repos/OWNER/REPO/properties/values? I'm interested in getting/setting custom properties for my repos. I can do that with curl, but couldn't find a way to do it via this project.\nDocs here: Get all custom property values for a repository.","category":{"createdAt":"2020-12-08T23:29:13Z","description":"Ask the community for help","emoji":":pray:","emojiHTML":"<div>🙏</div>","id":"MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYx","isAnswerable":true,"name":"Q&A","repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"slug":"q-a","updatedAt":"2020-12-08T23:29:13Z"},"comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yM1QwODozNjo1MCswMjowMM4AnxkU","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxODowMTowMCswMjowMM4AoA2V","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AnxkU"},{"id":"DC_kwDOADYVqs4AoA2V"}]},"createdAt":"2024-06-21T13:11:38Z","databaseId":6846982,"editor":null,"id":"D_kwDOADYVqs4AaHoG","labels":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"lastEditedAt":null,"number":2993,"reactions":{"totalCount":0,"pageInfo":{"startCursor":null,"endCursor":null,"hasNextPage":false,"hasPreviousPage":false},"nodes":[]},"repository":{"owner":{"login":"PyGithub"},"name":"PyGithub"},"title":"How to get a list of custom repository properties?","updatedAt":"2024-08-29T16:01:00Z","url":"https://github.com/PyGithub/PyGithub/discussions/2993"}}}
diff --git a/tests/ReplayData/RepositoryDiscussion.testAddAndDeleteComment.txt b/tests/ReplayData/RepositoryDiscussion.testAddAndDeleteComment.txt
new file mode 100644
index 000000000..a3f92e697
--- /dev/null
+++ b/tests/ReplayData/RepositoryDiscussion.testAddAndDeleteComment.txt
@@ -0,0 +1,76 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion { id }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}}
+200
+[('Date', 'Wed, 18 Sep 2024 09:55:02 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4978'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '22'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA0:38937:5DC62D:5EA454:66EAA376')]
+{"data":{"node":{"__typename":"Discussion","id":"D_kwDOADYVqs4AaHoG"}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: AddDiscussionCommentInput!) { addDiscussionComment(input: $input) { comment { id body } } }", "variables": {"input": {"body": "test comment", "discussionId": "D_kwDOADYVqs4AaHoG", "replyToId": null}}}
+200
+[('Date', 'Wed, 18 Sep 2024 09:55:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4977'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '23'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FD6:2E4B5D:5DDE95:5EBC96:66EAA376')]
+{"data":{"addDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYk","body":"test comment"}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: AddDiscussionCommentInput!) { addDiscussionComment(input: $input) { comment { id body } } }", "variables": {"input": {"body": "test reply", "discussionId": "D_kwDOADYVqs4AaHoG", "replyToId": "DC_kwDOADYVqs4AovYk"}}}
+200
+[('Date', 'Wed, 18 Sep 2024 09:55:03 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4976'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '24'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FB4:12DC96:59403B:5A1DF2:66EAA377')]
+{"data":{"addDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYl","body":"test reply"}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: AddDiscussionCommentInput!) { addDiscussionComment(input: $input) { comment { id body } } }", "variables": {"input": {"body": "test reply by string id", "discussionId": "D_kwDOADYVqs4AaHoG", "replyToId": "DC_kwDOADYVqs4AovYk"}}}
+200
+[('Date', 'Wed, 18 Sep 2024 09:55:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4975'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '25'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FCC:385EF9:238109:23DAE5:66EAA377')]
+{"data":{"addDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYm","body":"test reply by string id"}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: DeleteDiscussionCommentInput!) { deleteDiscussionComment(input: $input) { comment { id } } }", "variables": {"input": {"id": "DC_kwDOADYVqs4AovYm"}}}
+200
+[('Date', 'Wed, 18 Sep 2024 09:55:04 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4974'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '26'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FEE:319EE5:223AF7A:22D58C8:66EAA378')]
+{"data":{"deleteDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYm"}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: DeleteDiscussionCommentInput!) { deleteDiscussionComment(input: $input) { comment { id } } }", "variables": {"input": {"id": "DC_kwDOADYVqs4AovYl"}}}
+200
+[('Date', 'Wed, 18 Sep 2024 09:55:05 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4973'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '27'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FD5:216D57:5BBEE5:5C9D60:66EAA379')]
+{"data":{"deleteDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYl"}}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "mutation Mutation($input: DeleteDiscussionCommentInput!) { deleteDiscussionComment(input: $input) { comment { id } } }", "variables": {"input": {"id": "DC_kwDOADYVqs4AovYk"}}}
+200
+[('Date', 'Wed, 18 Sep 2024 09:55:06 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'public_repo, read:discussion, read:org, user:follow'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4972'), ('X-RateLimit-Reset', '1726656664'), ('X-RateLimit-Used', '28'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA6:3A746F:5AB4A2:5B92B9:66EAA379')]
+{"data":{"deleteDiscussionComment":{"comment":{"id":"DC_kwDOADYVqs4AovYk"}}}}
diff --git a/tests/ReplayData/RepositoryDiscussion.testGetComments.txt b/tests/ReplayData/RepositoryDiscussion.testGetComments.txt
new file mode 100644
index 000000000..6bed6e137
--- /dev/null
+++ b/tests/ReplayData/RepositoryDiscussion.testGetComments.txt
@@ -0,0 +1,21 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion { id }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:44:12 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4959'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '41'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FF5:1E58CD:A4D98A:A6B211:66E9DC0C')]
+{"data":{"node":{"__typename":"Discussion","id":"D_kwDOADYVqs4AaHoG"}}}
+
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($discussionId: ID!, $first: Int, $last: Int, $before: String, $after: String) {\n              node(id: $discussionId) {\n                ... on Discussion {\n                  comments(first: $first, last: $last, before: $before, after: $after) {\n                    totalCount\n                    pageInfo {\n                      startCursor\n                      endCursor\n                      hasNextPage\n                      hasPreviousPage\n                    }\n                    nodes { id }\n                  }\n                }\n              }\n            }", "variables": {"discussionId": "D_kwDOADYVqs4AaHoG", "first": 30}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:44:12 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4958'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '42'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7F5C:1B4C5D:A62E39:A802C1:66E9DC0C')]
+{"data":{"node":{"comments":{"totalCount":2,"pageInfo":{"startCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yM1QwODozNjo1MCswMjowMM4AnxkU","endCursor":"Y3Vyc29yOnYyOpK5MjAyNC0wOC0yOVQxODowMTowMCswMjowMM4AoA2V","hasNextPage":false,"hasPreviousPage":false},"nodes":[{"id":"DC_kwDOADYVqs4AnxkU"},{"id":"DC_kwDOADYVqs4AoA2V"}]}}}}
diff --git a/tests/ReplayData/RepositoryDiscussion.testGetCommentsWithoutNodeId.txt b/tests/ReplayData/RepositoryDiscussion.testGetCommentsWithoutNodeId.txt
new file mode 100644
index 000000000..1ee1fa9b2
--- /dev/null
+++ b/tests/ReplayData/RepositoryDiscussion.testGetCommentsWithoutNodeId.txt
@@ -0,0 +1,10 @@
+https
+POST
+api.github.com
+None
+/graphql
+{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python', 'Content-Type': 'application/json'}
+{"query": "\n            query Q($id: ID!) {\n              node(id: $id) {\n                __typename\n                ... on Discussion { title }\n              }\n            }\n            ", "variables": {"id": "D_kwDOADYVqs4AaHoG"}}
+200
+[('Date', 'Tue, 17 Sep 2024 19:36:02 GMT'), ('Content-Type', 'application/json; charset=utf-8'), ('X-OAuth-Scopes', 'read:discussion, read:org'), ('X-Accepted-OAuth-Scopes', 'repo'), ('github-authentication-token-expiration', '2024-10-04 11:29:00 UTC'), ('X-GitHub-Media-Type', 'github.v4; format=json'), ('X-RateLimit-Limit', '5000'), ('X-RateLimit-Remaining', '4971'), ('X-RateLimit-Reset', '1726602697'), ('X-RateLimit-Used', '29'), ('X-RateLimit-Resource', 'graphql'), ('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'"), ('Vary', 'Accept-Encoding, Accept, X-Requested-With'), ('Content-Encoding', 'gzip'), ('Transfer-Encoding', 'chunked'), ('Server', 'github.com'), ('X-GitHub-Request-Id', '7FA6:34173C:4D5D16:4E39DF:66E9DA22')]
+{"data":{"node":{"__typename":"Discussion","title":"How to get a list of custom repository properties?"}}}
diff --git a/tests/Repository.py b/tests/Repository.py
index 9df810c85..6642de33a 100644
--- a/tests/Repository.py
+++ b/tests/Repository.py
@@ -1524,6 +1524,49 @@ def testGetDeployments(self):
         deployments = self.repo.get_deployments()
         self.assertListKeyEqual(deployments, lambda d: d.id, [263877258, 262350588])
 
+    def testGetDiscussions(self):
+        repo = self.g.get_repo("PyGithub/PyGithub")
+        discussion_schema = """
+            author { login }
+            number
+            repository {
+              owner { login }
+              name
+            }
+            title
+          """
+        discussions_pages = repo.get_discussions(discussion_schema)
+        discussions = list(discussions_pages)
+        # would perform an extra request if called before iterating discussions_pages
+        self.assertEqual(discussions_pages.totalCount, 65)
+        self.assertEqual(len(discussions), 65)
+        self.assertEqual(discussions[0].number, 3044)
+        self.assertEqual(discussions[-1].number, 1780)
+
+        discussion = discussions[28]
+        self.assertEqual(discussion.author.login, "arunanandhan")
+        self.assertEqual(discussion.number, 2480)
+        self.assertEqual(discussion.repository.owner.login, "PyGithub")
+        self.assertEqual(discussion.repository.name, "PyGithub")
+        self.assertEqual(discussion.title, "Is there a way to search if a string present in default branch?")
+
+    def testGetDiscussionsByAnswered(self):
+        repo = self.g.get_repo("PyGithub/PyGithub")
+        discussions = repo.get_discussions("number title", answered=True)
+        self.assertListEqual(
+            [d.number for d in discussions], [2993, 2619, 2104, 2500, 2292, 2153, 2277, 2023, 1964, 1778]
+        )
+
+    def testGetDiscussionsByCategory(self):
+        repo = self.g.get_repo("PyGithub/PyGithub")
+        discussions = repo.get_discussions("number title", category_id="MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYy")
+        self.assertListEqual([d.number for d in discussions], [3044, 2997, 2057, 2242, 2173, 1993, 1780])
+
+    def testGetDiscussionsByStates(self):
+        repo = self.g.get_repo("PyGithub/PyGithub")
+        discussions = repo.get_discussions("number title", states=["CLOSED"])
+        self.assertListEqual([d.number for d in discussions], [2938, 2495, 2559, 2104, 2539, 2480])
+
     def testCreateFile(self):
         newFile = "doc/testCreateUpdateDeleteFile.md"
         content = b"Hello world"
diff --git a/tests/RepositoryDiscussion.py b/tests/RepositoryDiscussion.py
new file mode 100644
index 000000000..d01d3ac7e
--- /dev/null
+++ b/tests/RepositoryDiscussion.py
@@ -0,0 +1,216 @@
+############################ Copyrights and license ############################
+#                                                                              #
+# Copyright 2024 Enrico Minack <github@enrico.minack.dev>                      #
+#                                                                              #
+# This file is part of PyGithub.                                               #
+# http://pygithub.readthedocs.io/                                              #
+#                                                                              #
+# PyGithub is free software: you can redistribute it and/or modify it under    #
+# the terms of the GNU Lesser General Public License as published by the Free  #
+# Software Foundation, either version 3 of the License, or (at your option)    #
+# any later version.                                                           #
+#                                                                              #
+# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
+# details.                                                                     #
+#                                                                              #
+# You should have received a copy of the GNU Lesser General Public License     #
+# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
+#                                                                              #
+################################################################################
+
+from datetime import datetime, timezone
+
+from . import Framework
+
+
+class RepositoryDiscussion(Framework.TestCase):
+    discussion_schema = """
+        answer {
+          author { login }
+          body
+          bodyHTML
+          bodyText
+          createdAt
+          databaseId
+          discussion { id }
+          editor { login }
+          id
+          lastEditedAt
+          updatedAt
+          url
+        }
+        author { login }
+        body
+        bodyHTML
+        bodyText
+        category {
+          createdAt
+          description
+          emoji
+          emojiHTML
+          id
+          isAnswerable
+          name
+          repository { owner { login } name }
+          slug
+          updatedAt
+        }
+        comments(first: 10) {
+          totalCount
+          pageInfo {
+            startCursor
+            endCursor
+            hasNextPage
+            hasPreviousPage
+          }
+          nodes {
+            id
+          }
+        }
+        createdAt
+        databaseId
+        editor { login }
+        id
+        labels(first: 10) {
+          totalCount
+          pageInfo {
+            startCursor
+            endCursor
+            hasNextPage
+            hasPreviousPage
+          }
+          nodes {
+            id
+            name
+          }
+        }
+        lastEditedAt
+        number
+        reactions(first: 10) {
+          totalCount
+          pageInfo {
+            startCursor
+            endCursor
+            hasNextPage
+            hasPreviousPage
+          }
+          nodes {
+            id
+          }
+        }
+        repository {
+          owner { login }
+          name
+        }
+        title
+        updatedAt
+        url
+      """
+
+    def setUp(self):
+        super().setUp()
+        self.discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", self.discussion_schema)
+
+    def testAttributes(self):
+        self.assertEqual(self.discussion.answer.author.login, "dawngerpony")
+        self.assertEqual(
+            self.discussion.answer.body,
+            """[This comment](https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108) contains the answer to your question:\r\n\r\n```python\r\nmy_repo.raw_data["custom_properties"]\r\n```\r\n\r\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.""",
+        )
+        self.assertEqual(
+            self.discussion.answer.body_html,
+            """<p dir="auto"><a href="https://github.com/PyGithub/PyGithub/issues/2895#issue-2118964108" data-hovercard-type="issue" data-hovercard-url="/PyGithub/PyGithub/issues/2895/hovercard">This comment</a> contains the answer to your question:</p>\n<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="my_repo.raw_data[&quot;custom_properties&quot;]"><pre class="notranslate"><span class="pl-s1">my_repo</span>.<span class="pl-s1">raw_data</span>[<span class="pl-s">"custom_properties"</span>]</pre></div>\n<p dir="auto"><a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2293897055" data-permission-text="Title is private" data-url="https://github.com/PyGithub/PyGithub/issues/2968" data-hovercard-type="pull_request" data-hovercard-url="/PyGithub/PyGithub/pull/2968/hovercard" href="https://github.com/PyGithub/PyGithub/pull/2968">#2968</a> appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.</p>""",
+        )
+        self.assertEqual(
+            self.discussion.answer.body_text,
+            "This comment contains the answer to your question:\nmy_repo.raw_data[\"custom_properties\"]\n#2968 appears to add proper support for custom properties, but doesn't look like it's made it into a release yet.",
+        )
+        self.assertEqual(self.discussion.answer.created_at, datetime(2024, 8, 23, 6, 36, 50, tzinfo=timezone.utc))
+        self.assertEqual(self.discussion.answer.database_id, 10426644)
+        self.assertEqual(self.discussion.answer.discussion.node_id, "D_kwDOADYVqs4AaHoG")
+        self.assertIsNone(self.discussion.answer.editor)
+        self.assertEqual(self.discussion.answer.node_id, "DC_kwDOADYVqs4AnxkU")
+        self.assertIsNone(self.discussion.answer.last_edited_at)
+        self.assertEqual(self.discussion.answer.updated_at, datetime(2024, 8, 23, 6, 36, 51, tzinfo=timezone.utc))
+        self.assertEqual(
+            self.discussion.answer.html_url,
+            "https://github.com/PyGithub/PyGithub/discussions/2993#discussioncomment-10426644",
+        )
+        self.assertEqual(self.discussion.author.login, "heitorPB")
+        self.assertEqual(
+            self.discussion.body,
+            """What is the equivalent of `https://api.github.com/repos/OWNER/REPO/properties/values`? I'm interested in getting/setting custom properties for my repos. I can do that with `curl`, but couldn't find a way to do it via this project.\r\n\r\nDocs here: [Get all custom property values for a repository](https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository).""",
+        )
+        self.assertEqual(
+            self.discussion.body_html,
+            """<p dir="auto">What is the equivalent of <code class="notranslate">https://api.github.com/repos/OWNER/REPO/properties/values</code>? I'm interested in getting/setting custom properties for my repos. I can do that with <code class="notranslate">curl</code>, but couldn't find a way to do it via this project.</p>\n<p dir="auto">Docs here: <a href="https://docs.github.com/en/rest/repos/custom-properties?apiVersion=2022-11-28#get-all-custom-property-values-for-a-repository">Get all custom property values for a repository</a>.</p>""",
+        )
+        self.assertEqual(
+            self.discussion.body_text,
+            """What is the equivalent of https://api.github.com/repos/OWNER/REPO/properties/values? I'm interested in getting/setting custom properties for my repos. I can do that with curl, but couldn't find a way to do it via this project.\nDocs here: Get all custom property values for a repository.""",
+        )
+        self.assertEqual(self.discussion.category.created_at, datetime(2020, 12, 8, 23, 29, 13, tzinfo=timezone.utc))
+        self.assertEqual(self.discussion.category.description, "Ask the community for help")
+        self.assertEqual(self.discussion.category.emoji, ":pray:")
+        self.assertEqual(self.discussion.category.emoji_html, "<div>🙏</div>")
+        self.assertEqual(self.discussion.category.id, "MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDI5MDYx")
+        self.assertEqual(self.discussion.category.is_answerable, True)
+        self.assertEqual(self.discussion.category.name, "Q&A")
+        self.assertEqual(self.discussion.category.repository.owner.login, "PyGithub")
+        self.assertEqual(self.discussion.category.repository.name, "PyGithub")
+        self.assertEqual(self.discussion.category.slug, "q-a")
+        self.assertEqual(self.discussion.category.updated_at, datetime(2020, 12, 8, 23, 29, 13, tzinfo=timezone.utc))
+        self.assertEqual(self.discussion.created_at, datetime(2024, 6, 21, 13, 11, 38, tzinfo=timezone.utc))
+        self.assertEqual(self.discussion.database_id, 6846982)
+        self.assertIsNone(self.discussion.editor)
+        self.assertEqual(self.discussion.node_id, "D_kwDOADYVqs4AaHoG")
+        self.assertIsNone(self.discussion.last_edited_at)
+        self.assertEqual(self.discussion.number, 2993)
+        self.assertEqual(self.discussion.repository.owner.login, "PyGithub")
+        self.assertEqual(self.discussion.repository.name, "PyGithub")
+        self.assertEqual(self.discussion.title, "How to get a list of custom repository properties?")
+        self.assertEqual(self.discussion.updated_at, datetime(2024, 8, 29, 16, 1, 0, tzinfo=timezone.utc))
+
+        self.assertListEqual(
+            [c.node_id for c in self.discussion.get_comments("id")], ["DC_kwDOADYVqs4AnxkU", "DC_kwDOADYVqs4AoA2V"]
+        )
+        self.assertEqual(self.discussion.get_labels().totalCount, 0)
+        self.assertEqual(self.discussion.get_reactions().totalCount, 0)
+
+    def testGetComments(self):
+        discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", "id")
+        comments_pages = discussion.get_comments("id")
+        comments = list(comments_pages)
+        self.assertEqual(comments_pages.totalCount, 2)
+        self.assertEqual(len(comments), 2)
+        self.assertListEqual([c.id for c in comments], ["DC_kwDOADYVqs4AnxkU", "DC_kwDOADYVqs4AoA2V"])
+
+    def testGetCommentsWithoutNodeId(self):
+        discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", "title")
+        with self.assertRaises(RuntimeError) as e:
+            discussion.get_comments("id")
+        self.assertEqual(e.exception.args, ("Retrieving discussion comments requires the discussion field 'id'",))
+
+    def testAddAndDeleteComment(self):
+        discussion = self.g.get_repository_discussion("D_kwDOADYVqs4AaHoG", "id")
+        comment = discussion.add_comment("test comment", output_schema="id body")
+        self.assertEqual(comment.id, "DC_kwDOADYVqs4AovYk")
+        self.assertEqual(comment.body, "test comment")
+
+        reply = discussion.add_comment("test reply", reply_to=comment, output_schema="id body")
+        self.assertEqual(reply.id, "DC_kwDOADYVqs4AovYl")
+        self.assertEqual(reply.body, "test reply")
+
+        reply_by_id_str = discussion.add_comment(
+            "test reply by string id", reply_to=comment.id, output_schema="id body"
+        )
+        self.assertEqual(reply_by_id_str.id, "DC_kwDOADYVqs4AovYm")
+        self.assertEqual(reply_by_id_str.body, "test reply by string id")
+
+        # cleanup that discussion
+        # replies have to be deleted first to be able to fully delete a comment
+        self.assertEqual(reply_by_id_str.delete().id, "DC_kwDOADYVqs4AovYm")
+        self.assertEqual(reply.delete().id, "DC_kwDOADYVqs4AovYl")
+        self.assertEqual(comment.delete().id, "DC_kwDOADYVqs4AovYk")