Startup Mentor

Startup Mentor · GPT 작업

GitHub API for Custom GPTs and Agents

API for interacting with GitHub repositories, branches, commits, pull requests, issues, and workflows.

  • GET /user/reposList repositories for the authenticated user.

    Retrieves a list of repositories that the authenticated user has access to. The response includes detailed information such as the repository name, description, and permissions. Use the query parameters to filter by visibility and control pagination.

  • GET /repos/{owner}/{repo}Get repository details

    Retrieves detailed information about a specific repository. The response includes information such as the repository's name, owner, description, visibility, and other metadata. The `{owner}` parameter specifies the GitHub user or organization, and `{repo}` is the repository's name.

  • GET /repos/{owner}/{repo}/branchesList branches in a repository

    Returns a list of branches in the specified repository. This includes details such as the branch name and the latest commit SHA. The `{owner}` parameter specifies the GitHub user or organization that owns the repository, and `{repo}` specifies the repository's name.

  • GET /repos/{owner}/{repo}/commitsList commits in a repository

    Returns a list of commits from the specified repository. The `{owner}` and `{repo}` parameters specify the repository, while the optional `sha` parameter can be used to fetch commits from a specific branch, tag, or commit SHA.

  • GET /repos/{owner}/{repo}/pullsList pull requests in a repository

    Retrieve a list of pull requests for the specified repository. You can filter the results based on the state of the pull request (open, closed, or all). The `{owner}` and `{repo}` parameters specify the repository details.

  • PUT /repos/{owner}/{repo}/pulls/{pull_number}/mergeMerge a pull request

    Merge a pull request into the base branch. You can specify the commit message and choose a merge method (`merge`, `squash`, or `rebase`).

  • GET /repos/{owner}/{repo}/contents/{path}Retrieve the contents of a file or directory in a repository

    Returns the contents of a file or directory at a specified path in a repository. You can specify a particular commit, branch, or tag reference using the `ref` query parameter. If the `ref` is not specified, the default branch is used.

  • POST /graphqlExecute GraphQL queries

    Send a GraphQL query to GitHub's GraphQL API endpoint. GraphQL allows you to query multiple resources in a single request and retrieve nested data efficiently.

  • GET /repos/{owner}/{repo}/milestonesList milestones

    Retrieve a list of milestones for a repository. Milestones can be used for tracking progress and managing timelines for projects.

  • GET /repos/{owner}/{repo}/issuesList issues

    Retrieve a list of issues for the specified repository. Issues are used to track tasks, bugs, and feature requests.

  • POST /repos/{owner}/{repo}/issuesCreate a new issue

    Create a new issue in the specified repository. Issues are used to track tasks, bugs, and feature requests.

  • GET /repos/{owner}/{repo}/releasesList Releases

    Retrieve a list of releases for the specified repository. Releases are used to indicate versioned software updates.

  • POST /repos/{owner}/{repo}/releasesCreate Release

    Create a new release in the specified repository. You can mark releases as drafts or pre-releases.

  • GET /repos/{owner}/{repo}/hooksList Webhooks

    Retrieve a list of webhooks configured for the repository.

  • POST /repos/{owner}/{repo}/hooksCreate Webhook

    Create a webhook for the repository to receive events for specific triggers.

  • GET /repos/{owner}/{repo}/labelsList Labels

    Retrieve all labels for the specified repository. Labels are used to categorize and filter issues and pull requests.

  • GET /repos/{owner}/{repo}/branches/{branch}/protectionGet Branch Protection Rules

    Retrieve the protection rules for the specified branch. These rules define the conditions that must be met before changes can be merged.

  • PUT /repos/{owner}/{repo}/branches/{branch}/protectionUpdate Branch Protection Rules

    Update the protection rules for the specified branch. This operation allows enforcing policies such as requiring pull request reviews or limiting force-pushes.

  • POST /auth/tokenExchange Authorization Code for Access Token

    Exchanges an OAuth 2.0 authorization code for an access token. The access token can be used to make authenticated requests.

  • POST /auth/refreshRefresh Access Token

    Refresh the access token using the refresh token flow. This helps renew expired tokens without user re-authentication.

  • GET /auth/validateValidate Access Token

    Validates the provided access token to ensure it is active and has the correct permissions. This endpoint helps verify token integrity.

  • GET /repos/{owner}/{repo}/collaboratorsList collaborators

    Retrieve all collaborators with permissions for a repository.

  • GET /search/repositoriesSearch Repositories

    Search for repositories using keywords. The search can be filtered by repository name, topic, description, and more.

  • POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatchesDispatch Workflow

    Manually trigger a GitHub Actions workflow using a specific branch or tag. Useful for re-running workflows programmatically.

  • GET /users/{username}Get User Information

    Retrieve public profile information of a GitHub user, such as their name, bio, and public repositories.

  • GET /notificationsList Notifications

    Retrieve a list of notifications for the authenticated user. Notifications include pull requests, issues, releases, and more. By default, only unread notifications are returned. Use the `all=true` parameter to include read notifications.

  • PATCH /notificationsMark Notifications as Read

    Mark all notifications as read for the authenticated user. You can specify a timestamp to mark notifications as read up to a certain time.

원본 API 스키마
{
  "openapi": "3.1.0",
  "info": {
    "title": "GitHub API for Custom GPTs and Agents",
    "description": "API for interacting with GitHub repositories, branches, commits, pull requests, issues, and workflows.",
    "version": "2.0.0"
  },
  "servers": [
    {
      "url": "https://api.github.com",
      "description": "GitHub API Server"
    }
  ],
  "paths": {
    "/user/repos": {
      "get": {
        "summary": "List repositories for the authenticated user.",
        "description": "Retrieves a list of repositories that the authenticated user has access to.\nThe response includes detailed information such as the repository name,\ndescription, and permissions. Use the query parameters to filter by visibility\nand control pagination.\n",
        "operationId": "listUserRepositories",
        "tags": [
          "Repositories"
        ],
        "parameters": [
          {
            "name": "visibility",
            "in": "query",
            "description": "Filter the repositories by visibility:\n  - `all`: Show all repositories (default).\n  - `public`: Show only public repositories.\n  - `private`: Show only private repositories.\n",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "public",
                "private"
              ]
            },
            "example": "public"
          },
          {
            "name": "per_page",
            "in": "query",
            "description": "Number of repositories to return per page.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 30
            },
            "example": 20
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of the results to fetch.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "example": 2
          }
        ],
        "responses": {
          "200": {
            "description": "A list of repositories accessible by the authenticated user.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "The maximum number of requests that the user is allowed to make per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The number of remaining requests in the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4998
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Repository"
                  }
                },
                "example": [
                  {
                    "id": 1296269,
                    "name": "octo-repo",
                    "full_name": "octocat/octo-repo",
                    "private": false,
                    "owner": {
                      "login": "octocat",
                      "id": 1,
                      "avatar_url": "https://github.com/images/error/octocat_happy.gif"
                    },
                    "description": "A repository for demonstrating GitHub API usage.",
                    "created_at": "2011-01-26T19:01:12Z",
                    "updated_at": "2023-10-01T12:00:00Z",
                    "pushed_at": "2023-09-15T10:45:00Z",
                    "html_url": "https://github.com/octocat/octo-repo"
                  }
                ]
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "403": {
            "description": "Access forbidden. The user has exceeded their rate limit.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message explaining the reason for forbidden access.",
                      "example": "Rate limit exceeded. Please wait or use an access token with a higher limit."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}": {
      "get": {
        "summary": "Get repository details",
        "description": "Retrieves detailed information about a specific repository. The response includes\ninformation such as the repository's name, owner, description, visibility, and\nother metadata. The `{owner}` parameter specifies the GitHub user or organization,\nand `{repo}` is the repository's name.\n",
        "operationId": "getRepositoryDetails",
        "tags": [
          "Repositories"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed information about the specified repository.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "The maximum number of requests that the user is allowed to make per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The number of remaining requests in the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4998
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Repository"
                },
                "example": {
                  "id": 1296269,
                  "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
                  "name": "Hello-World",
                  "full_name": "octocat/Hello-World",
                  "private": false,
                  "owner": {
                    "login": "octocat",
                    "id": 1,
                    "avatar_url": "https://github.com/images/error/octocat_happy.gif"
                  },
                  "description": "My first repository on GitHub!",
                  "fork": false,
                  "created_at": "2011-01-26T19:01:12Z",
                  "updated_at": "2023-10-01T12:00:00Z",
                  "pushed_at": "2023-09-15T10:45:00Z",
                  "homepage": "https://example.com",
                  "size": 108,
                  "stargazers_count": 1500,
                  "watchers_count": 1500,
                  "language": "Python",
                  "forks_count": 300,
                  "open_issues_count": 5,
                  "default_branch": "main"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access. The request requires user authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found. The specified repository does not exist or the user does not have access.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating that the repository was not found.",
                      "example": "Repository not found. Verify that the repository name and owner are correct."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/branches": {
      "get": {
        "summary": "List branches in a repository",
        "description": "Returns a list of branches in the specified repository. This includes details\nsuch as the branch name and the latest commit SHA. The `{owner}` parameter\nspecifies the GitHub user or organization that owns the repository, and `{repo}`\nspecifies the repository's name.\n",
        "operationId": "listBranches",
        "tags": [
          "Repositories"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of branches in the specified repository.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "The maximum number of requests allowed per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The remaining number of requests in the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4990
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Branch"
                  }
                },
                "example": [
                  {
                    "name": "main",
                    "commit": {
                      "sha": "d6fde92930d4715a2b49857d24b940956b26d2d3"
                    }
                  },
                  {
                    "name": "development",
                    "commit": {
                      "sha": "c1a79d4bda717e1d2c3a69d8b73c4a4f5f6e8f47"
                    }
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized access. The request requires user authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found or no branches available.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating the repository or branches were not found.",
                      "example": "Branches not found. Please verify the repository and owner."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/commits": {
      "get": {
        "summary": "List commits in a repository",
        "description": "Returns a list of commits from the specified repository. The `{owner}` and `{repo}`\nparameters specify the repository, while the optional `sha` parameter can be used\nto fetch commits from a specific branch, tag, or commit SHA.\n",
        "operationId": "listCommits",
        "tags": [
          "Repositories"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "sha",
            "in": "query",
            "description": "SHA of the branch, tag, or commit from which to list commits. Defaults to the repository’s default branch.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "main"
          },
          {
            "name": "per_page",
            "in": "query",
            "description": "Number of commits to return per page default 30, max 100.",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 30
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of the results to fetch.",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "A list of commits from the specified repository.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "The maximum number of requests allowed per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The remaining number of requests in the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4985
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Commit"
                  }
                },
                "example": [
                  {
                    "sha": "d6fde92930d4715a2b49857d24b940956b26d2d3",
                    "message": "Initial commit"
                  },
                  {
                    "sha": "c1a79d4bda717e1d2c3a69d8b73c4a4f5f6e8f47",
                    "message": "Add README.md"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized access. The request requires user authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository or branch not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating the repository or branch was not found.",
                      "example": "Commits not found. Please verify the repository, owner, or branch SHA."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/pulls": {
      "get": {
        "summary": "List pull requests in a repository",
        "description": "Retrieve a list of pull requests for the specified repository. You can filter\nthe results based on the state of the pull request (open, closed, or all).\nThe `{owner}` and `{repo}` parameters specify the repository details.\n",
        "operationId": "listPullRequests",
        "tags": [
          "Pull Requests"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "Filter pull requests by state.",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "closed",
                "all"
              ],
              "default": "open"
            },
            "example": "open"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of pull requests to return per page default 30, max 100).",
            "schema": {
              "type": "integer"
            },
            "example": 30
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number of the results to fetch.",
            "schema": {
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "A list of pull requests.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "The maximum number of requests allowed per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The remaining number of requests in the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4995
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PullRequest"
                  }
                },
                "example": [
                  {
                    "id": 12345678,
                    "number": 1,
                    "title": "Fix login bug",
                    "state": "open",
                    "user": {
                      "login": "dev-user"
                    }
                  },
                  {
                    "id": 87654321,
                    "number": 2,
                    "title": "Update documentation",
                    "state": "closed",
                    "user": {
                      "login": "octocat"
                    }
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Unauthorized access. The request requires user authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating the repository was not found.",
                      "example": "Repository not found. Please verify the repository and owner."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/pulls/{pull_number}/merge": {
      "put": {
        "summary": "Merge a pull request",
        "description": "Merge a pull request into the base branch. You can specify the commit message\nand choose a merge method (`merge`, `squash`, or `rebase`).\n",
        "operationId": "mergePullRequest",
        "tags": [
          "Pull Requests"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "pull_number",
            "in": "path",
            "required": true,
            "description": "The pull request number to merge.",
            "schema": {
              "type": "integer"
            },
            "example": 42
          }
        ],
        "requestBody": {
          "description": "Merge options (commit message or merge method).",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "commit_message": {
                    "type": "string",
                    "description": "Message to be used for the merge commit.",
                    "example": "Merging feature branch into main."
                  },
                  "merge_method": {
                    "type": "string",
                    "enum": [
                      "merge",
                      "squash",
                      "rebase"
                    ],
                    "description": "Merge strategy to use.",
                    "example": "squash"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Pull request merged successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Pull request successfully merged."
                    },
                    "merged": {
                      "type": "boolean",
                      "example": true
                    },
                    "sha": {
                      "type": "string",
                      "description": "SHA of the merged commit.",
                      "example": "d6fde92930d4715a2b49857d24b940956b26d2d3"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Pull request not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Pull request not found. Please verify the pull request number."
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Merge conflict error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Merge conflict. Please resolve conflicts and try again."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/contents/{path}": {
      "get": {
        "summary": "Retrieve the contents of a file or directory in a repository",
        "description": "Returns the contents of a file or directory at a specified path in a repository.\nYou can specify a particular commit, branch, or tag reference using the `ref` query parameter.\nIf the `ref` is not specified, the default branch is used.\n",
        "operationId": "getContents",
        "tags": [
          "Repository Contents"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "path",
            "in": "path",
            "required": true,
            "description": "The file or directory path relative to the root of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "src/main.py"
          },
          {
            "name": "ref",
            "in": "query",
            "required": false,
            "description": "The name of the commit, branch, or tag.",
            "schema": {
              "type": "string"
            },
            "example": "main"
          }
        ],
        "responses": {
          "200": {
            "description": "Contents of a file or directory.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "The maximum number of requests allowed per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The remaining number of requests in the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4999
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The name of the file or directory.",
                        "example": "main.py"
                      },
                      "path": {
                        "type": "string",
                        "description": "The file or directory path.",
                        "example": "src/main.py"
                      },
                      "sha": {
                        "type": "string",
                        "description": "SHA hash of the file or directory.",
                        "example": "d6fde92930d4715a2b49857d24b940956b26d2d3"
                      },
                      "type": {
                        "type": "string",
                        "enum": [
                          "file",
                          "dir"
                        ],
                        "description": "Type of the path (file or directory).",
                        "example": "file"
                      },
                      "download_url": {
                        "type": "string",
                        "description": "The download URL for the file (only applicable to files).",
                        "example": "https://raw.githubusercontent.com/octocat/octo-repo/main/src/main.py"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access. The request requires user authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Path not found. The specified file or directory path does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating the path was not found.",
                      "example": "Path not found. Please verify the file or directory path."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/graphql": {
      "post": {
        "summary": "Execute GraphQL queries",
        "description": "Send a GraphQL query to GitHub's GraphQL API endpoint. GraphQL allows you to query multiple resources in a single request and retrieve nested data efficiently.\n",
        "operationId": "graphqlQuery",
        "tags": [
          "GraphQL"
        ],
        "requestBody": {
          "description": "The GraphQL query to execute.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "The GraphQL query string.",
                    "example": "{\n  repository(owner: \"octocat\", name: \"octo-repo\") {\n    pullRequests(last: 5) {\n      nodes {\n        title\n        number\n        author {\n          login\n        }\n      }\n    }\n  }\n}\n"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Query executed successfully.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "The maximum number of requests allowed per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The remaining number of requests in the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4990
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "description": "The result of the GraphQL query.",
                      "example": {
                        "repository": {
                          "pullRequests": {
                            "nodes": [
                              {
                                "title": "Fix login bug",
                                "number": 1,
                                "author": {
                                  "login": "dev-user"
                                }
                              },
                              {
                                "title": "Improve docs",
                                "number": 2,
                                "author": {
                                  "login": "octocat"
                                }
                              }
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid query or malformed request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message indicating why the request failed.",
                      "example": "Invalid GraphQL query syntax."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access. Ensure the bearer token is valid and has the required scopes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/milestones": {
      "get": {
        "summary": "List milestones",
        "description": "Retrieve a list of milestones for a repository. Milestones can be used for tracking progress and managing timelines for projects.\n",
        "operationId": "listMilestones",
        "tags": [
          "Milestones"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "Filter milestones by state (`open` or `closed`). Default is `open`.",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "closed"
              ]
            },
            "example": "open"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of milestones.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Maximum number of requests allowed per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Remaining number of requests for the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4990
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "description": "Title of the milestone.",
                        "example": "Release v1.0"
                      },
                      "state": {
                        "type": "string",
                        "description": "Current state of the milestone (`open` or `closed`).",
                        "enum": [
                          "open",
                          "closed"
                        ],
                        "example": "open"
                      },
                      "due_on": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Due date of the milestone (in ISO 8601 format).",
                        "example": "2024-12-31T23:59:59Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/issues": {
      "get": {
        "summary": "List issues",
        "description": "Retrieve a list of issues for the specified repository.\nIssues are used to track tasks, bugs, and feature requests.\n",
        "operationId": "listIssues",
        "tags": [
          "Issues"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "Filter issues by their state (`open`, `closed`, or `all`). Default is `open`.",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "closed",
                "all"
              ]
            },
            "example": "open"
          },
          {
            "name": "labels",
            "in": "query",
            "required": false,
            "description": "A comma-separated list of labels to filter the issues by.",
            "schema": {
              "type": "string"
            },
            "example": "bug,enhancement"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of issues per page. Default is 30.",
            "schema": {
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number of the results to fetch. Default is 1.",
            "schema": {
              "type": "integer"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "A list of issues.",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Maximum number of requests allowed per hour.",
                "schema": {
                  "type": "integer",
                  "example": 5000
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Remaining number of requests for the current rate limit window.",
                "schema": {
                  "type": "integer",
                  "example": 4990
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "Unique identifier of the issue.",
                        "example": 42
                      },
                      "title": {
                        "type": "string",
                        "description": "Title of the issue.",
                        "example": "Fix login bug"
                      },
                      "state": {
                        "type": "string",
                        "description": "Current state of the issue (`open` or `closed`).",
                        "enum": [
                          "open",
                          "closed"
                        ],
                        "example": "open"
                      },
                      "labels": {
                        "type": "array",
                        "description": "Labels assigned to the issue.",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "bug",
                          "help wanted"
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Timestamp when the issue was created.",
                        "example": "2024-02-15T10:20:30Z"
                      },
                      "assignees": {
                        "type": "array",
                        "description": "Usernames of the assignees.",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "octocat",
                          "contributor123"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a new issue",
        "description": "Create a new issue in the specified repository.\nIssues are used to track tasks, bugs, and feature requests.\n",
        "operationId": "createIssue",
        "tags": [
          "Issues"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization name that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Name of the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "requestBody": {
          "description": "Issue details.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "Title of the issue.",
                    "example": "Fix login button not responsive"
                  },
                  "body": {
                    "type": "string",
                    "description": "Description or body of the issue.",
                    "example": "The login button on the homepage becomes unresponsive after the latest update.\nSteps to reproduce:\n1. Open the homepage\n2. Click the login button\n"
                  },
                  "labels": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Labels to categorize the issue.",
                    "example": [
                      "bug",
                      "critical"
                    ]
                  },
                  "assignees": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Usernames to assign to the issue.",
                    "example": [
                      "octocat",
                      "contributor123"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Issue created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "description": "Unique identifier for the created issue.",
                      "example": 101
                    },
                    "title": {
                      "type": "string",
                      "description": "Title of the created issue.",
                      "example": "Fix login button not responsive"
                    },
                    "state": {
                      "type": "string",
                      "description": "State of the created issue.",
                      "enum": [
                        "open",
                        "closed"
                      ],
                      "example": "open"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Timestamp of issue creation.",
                      "example": "2024-02-15T10:20:30Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body or missing required fields.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Title is required."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/releases": {
      "get": {
        "summary": "List Releases",
        "description": "Retrieve a list of releases for the specified repository. Releases are used to indicate versioned software updates.\n",
        "operationId": "listReleases",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of releases.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "Unique identifier of the release.",
                        "example": 12345
                      },
                      "tag_name": {
                        "type": "string",
                        "description": "The name of the tag for the release.",
                        "example": "v1.0.0"
                      },
                      "name": {
                        "type": "string",
                        "description": "Name of the release.",
                        "example": "First Stable Release"
                      },
                      "draft": {
                        "type": "boolean",
                        "description": "Whether the release is a draft.",
                        "example": false
                      },
                      "prerelease": {
                        "type": "boolean",
                        "description": "Whether the release is a pre-release.",
                        "example": false
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Timestamp of release creation.",
                        "example": "2024-01-15T10:30:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create Release",
        "description": "Create a new release in the specified repository. You can mark releases as drafts or pre-releases.\n",
        "operationId": "createRelease",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "requestBody": {
          "description": "Release details.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag_name": {
                    "type": "string",
                    "description": "The tag name for the release.",
                    "example": "v1.0.0"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the release.",
                    "example": "First Stable Release"
                  },
                  "body": {
                    "type": "string",
                    "description": "Description or changelog for the release.",
                    "example": "This release includes bug fixes and performance improvements."
                  },
                  "draft": {
                    "type": "boolean",
                    "description": "Whether the release is a draft (unpublished).",
                    "example": false
                  },
                  "prerelease": {
                    "type": "boolean",
                    "description": "Whether the release is a pre-release.",
                    "example": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Release created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "description": "Unique identifier for the created release.",
                      "example": 101
                    },
                    "tag_name": {
                      "type": "string",
                      "description": "Tag name of the created release.",
                      "example": "v1.0.0"
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the created release.",
                      "example": "First Stable Release"
                    },
                    "draft": {
                      "type": "boolean",
                      "description": "Indicates whether the release is a draft.",
                      "example": false
                    },
                    "prerelease": {
                      "type": "boolean",
                      "description": "Indicates whether the release is a pre-release.",
                      "example": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Tag name is required."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/hooks": {
      "get": {
        "summary": "List Webhooks",
        "description": "Retrieve a list of webhooks configured for the repository.",
        "operationId": "listWebhooks",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of webhooks.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "Unique identifier of the webhook.",
                        "example": 1234
                      },
                      "url": {
                        "type": "string",
                        "description": "URL that receives the webhook event.",
                        "example": "https://example.com/webhook"
                      },
                      "active": {
                        "type": "boolean",
                        "description": "Whether the webhook is active.",
                        "example": true
                      },
                      "events": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "List of events that trigger the webhook.",
                        "example": [
                          "push",
                          "pull_request"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create Webhook",
        "description": "Create a webhook for the repository to receive events for specific triggers.",
        "operationId": "createWebhook",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "requestBody": {
          "description": "Webhook configuration details.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "config": {
                    "type": "object",
                    "description": "Webhook configuration.",
                    "properties": {
                      "url": {
                        "type": "string",
                        "description": "URL that receives the webhook events.",
                        "example": "https://example.com/webhook"
                      },
                      "content_type": {
                        "type": "string",
                        "description": "Format of the webhook payload (`json` or `form`).",
                        "enum": [
                          "json",
                          "form"
                        ],
                        "example": "json"
                      }
                    }
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of events that trigger the webhook.",
                    "example": [
                      "push",
                      "pull_request"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Webhook created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "description": "Unique identifier for the created webhook.",
                      "example": 5678
                    },
                    "url": {
                      "type": "string",
                      "description": "URL that receives the webhook events.",
                      "example": "https://example.com/webhook"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body or missing required fields.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invalid URL format."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/labels": {
      "get": {
        "summary": "List Labels",
        "description": "Retrieve all labels for the specified repository. Labels are used to categorize and filter issues and pull requests.",
        "operationId": "listLabels",
        "tags": [
          "Labels"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of labels.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "integer",
                        "description": "Unique identifier of the label.",
                        "example": 7890
                      },
                      "name": {
                        "type": "string",
                        "description": "Name of the label.",
                        "example": "bug"
                      },
                      "color": {
                        "type": "string",
                        "description": "Hex color code for the label.",
                        "example": "ff0000"
                      },
                      "description": {
                        "type": "string",
                        "description": "Description of the label.",
                        "example": "Issues related to bugs"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/branches/{branch}/protection": {
      "get": {
        "summary": "Get Branch Protection Rules",
        "description": "Retrieve the protection rules for the specified branch. These rules define the conditions that must be met before changes can be merged.\n",
        "operationId": "getBranchProtection",
        "tags": [
          "Branch Protection"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "branch",
            "in": "path",
            "required": true,
            "description": "Branch name for which to get protection rules.",
            "schema": {
              "type": "string"
            },
            "example": "main"
          }
        ],
        "responses": {
          "200": {
            "description": "Branch protection rules retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "required_pull_request_reviews": {
                      "type": "object",
                      "description": "Rules related to pull request reviews.",
                      "properties": {
                        "required_approving_review_count": {
                          "type": "integer",
                          "description": "Number of required approving reviews before merging.",
                          "example": 2
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository or branch not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Branch protection rules not found."
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Update Branch Protection Rules",
        "description": "Update the protection rules for the specified branch. This operation allows enforcing policies such as requiring pull request reviews or limiting force-pushes.\n",
        "operationId": "updateBranchProtection",
        "tags": [
          "Branch Protection"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "branch",
            "in": "path",
            "required": true,
            "description": "Branch name for which to update protection rules.",
            "schema": {
              "type": "string"
            },
            "example": "main"
          }
        ],
        "requestBody": {
          "description": "Protection rules to be applied.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "required_pull_request_reviews": {
                    "type": "object",
                    "description": "Rules related to pull request reviews.",
                    "properties": {
                      "required_approving_review_count": {
                        "type": "integer",
                        "description": "Number of required approving reviews before merging.",
                        "example": 2
                      }
                    }
                  },
                  "enforce_admins": {
                    "type": "boolean",
                    "description": "Enforce rules for admins.",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Branch protection rules updated successfully."
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Invalid protection rule format."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          },
          "404": {
            "description": "Repository or branch not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Repository or branch not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/auth/token": {
      "post": {
        "summary": "Exchange Authorization Code for Access Token",
        "description": "Exchanges an OAuth 2.0 authorization code for an access token. The access token can be used to make authenticated requests.\n",
        "operationId": "exchangeAuthCode",
        "tags": [
          "Authentication"
        ],
        "requestBody": {
          "description": "Client app details and authorization code.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "description": "OAuth App client ID.",
                    "example": "your-client-id"
                  },
                  "client_secret": {
                    "type": "string",
                    "description": "OAuth App client secret.",
                    "example": "your-client-secret"
                  },
                  "code": {
                    "type": "string",
                    "description": "Authorization code received from GitHub.",
                    "example": "abc123"
                  },
                  "redirect_uri": {
                    "type": "string",
                    "description": "Redirect URI registered with the OAuth App.",
                    "example": "https://your-app.com/auth/callback"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful token exchange.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "access_token": {
                      "type": "string",
                      "description": "The access token.",
                      "example": "gho_1234567890"
                    },
                    "token_type": {
                      "type": "string",
                      "description": "The type of token.",
                      "example": "bearer"
                    },
                    "scope": {
                      "type": "string",
                      "description": "Scopes granted by the token.",
                      "example": "repo,workflow"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or authorization code."
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          }
        }
      }
    },
    "/auth/refresh": {
      "post": {
        "summary": "Refresh Access Token",
        "description": "Refresh the access token using the refresh token flow. This helps renew expired tokens without user re-authentication.\n",
        "operationId": "refreshToken",
        "tags": [
          "Authentication"
        ],
        "requestBody": {
          "description": "Required details for refreshing the token.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "refresh_token": {
                    "type": "string",
                    "description": "The refresh token used to renew the access token.",
                    "example": "r1.token.abcd123"
                  },
                  "client_id": {
                    "type": "string",
                    "description": "OAuth App client ID.",
                    "example": "your-client-id"
                  },
                  "client_secret": {
                    "type": "string",
                    "description": "OAuth App client secret.",
                    "example": "your-client-secret"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token refreshed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "access_token": {
                      "type": "string",
                      "description": "The new access token.",
                      "example": "gho_new123456789"
                    },
                    "expires_in": {
                      "type": "integer",
                      "description": "Time in seconds until the token expires.",
                      "example": 3600
                    },
                    "refresh_token": {
                      "type": "string",
                      "description": "New refresh token (if applicable).",
                      "example": "r1.token.newrefresh123"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/auth/validate": {
      "get": {
        "summary": "Validate Access Token",
        "description": "Validates the provided access token to ensure it is active and has the correct permissions. This endpoint helps verify token integrity.\n",
        "operationId": "validateToken",
        "tags": [
          "Authentication"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Token is valid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "description": "Whether the token is valid.",
                      "example": true
                    },
                    "scopes": {
                      "type": "string",
                      "description": "Scopes assigned to the token.",
                      "example": "repo,admin:repo_hook,workflow"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access or invalid token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/collaborators": {
      "get": {
        "summary": "List collaborators",
        "description": "Retrieve all collaborators with permissions for a repository.",
        "operationId": "listCollaborators",
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Owner of the repository."
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Repository name."
          }
        ],
        "responses": {
          "200": {
            "description": "A list of collaborators with their roles and permissions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "login": {
                        "type": "string",
                        "description": "GitHub username."
                      },
                      "permissions": {
                        "type": "object",
                        "properties": {
                          "pull": {
                            "type": "boolean",
                            "description": "Can the user pull from the repository?"
                          },
                          "push": {
                            "type": "boolean",
                            "description": "Can the user push to the repository?"
                          },
                          "admin": {
                            "type": "boolean",
                            "description": "Can the user manage the repository?"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/UnauthorizedResponse"
          },
          "403": {
            "description": "Access forbidden. Ensure the user has admin privileges."
          }
        }
      }
    },
    "/search/repositories": {
      "get": {
        "summary": "Search Repositories",
        "description": "Search for repositories using keywords. The search can be filtered by repository name, topic, description, and more.\n",
        "operationId": "searchRepositories",
        "tags": [
          "Repository Search"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "The search keywords. Can include qualifiers like `language:python`, `topic:machine-learning`, `stars:>100`, etc.\n",
            "schema": {
              "type": "string"
            },
            "example": "openapi language:yaml stars:>50"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "The field to sort results by. Can be `stars`, `forks`, `help-wanted-issues`, or `updated`.\n",
            "schema": {
              "type": "string",
              "enum": [
                "stars",
                "forks",
                "help-wanted-issues",
                "updated"
              ]
            },
            "example": "stars"
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "description": "Sort order for results, either ascending (`asc`) or descending (`desc`).",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            },
            "example": "desc"
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of results per page (default is 30).",
            "schema": {
              "type": "integer"
            },
            "example": 10
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page number of the results to fetch.",
            "schema": {
              "type": "integer"
            },
            "example": 2
          }
        ],
        "responses": {
          "200": {
            "description": "A list of matching repositories.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_count": {
                      "type": "integer",
                      "description": "Total number of matching repositories."
                    },
                    "items": {
                      "type": "array",
                      "description": "List of repository details.",
                      "items": {
                        "$ref": "#/components/schemas/Repository"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches": {
      "post": {
        "summary": "Dispatch Workflow",
        "description": "Manually trigger a GitHub Actions workflow using a specific branch or tag. Useful for re-running workflows programmatically.\n",
        "operationId": "dispatchWorkflow",
        "tags": [
          "GitHub Actions"
        ],
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "required": true,
            "description": "GitHub username or organization that owns the repository.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          },
          {
            "name": "repo",
            "in": "path",
            "required": true,
            "description": "Repository name.",
            "schema": {
              "type": "string"
            },
            "example": "octo-repo"
          },
          {
            "name": "workflow_id",
            "in": "path",
            "required": true,
            "description": "ID or file name of the workflow to dispatch.",
            "schema": {
              "type": "string"
            },
            "example": "build-deploy.yml"
          }
        ],
        "requestBody": {
          "description": "The inputs for the workflow and the branch/tag to dispatch.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ref": {
                    "type": "string",
                    "description": "Branch or tag name to run the workflow on.",
                    "example": "main"
                  },
                  "inputs": {
                    "type": "object",
                    "description": "Input parameters for the workflow.",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": {
                      "environment": "production",
                      "deploy_target": "AWS"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Workflow dispatched successfully. No content in response."
          },
          "400": {
            "description": "Bad request. Verify that the branch/tag and workflow ID are correct."
          },
          "401": {
            "description": "Unauthorized access. Ensure the token has `workflow` permission."
          },
          "404": {
            "description": "Workflow or repository not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Workflow file not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/{username}": {
      "get": {
        "summary": "Get User Information",
        "description": "Retrieve public profile information of a GitHub user, such as their name, bio, and public repositories.\n",
        "operationId": "getUserInfo",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "description": "GitHub username whose profile information is being requested.",
            "schema": {
              "type": "string"
            },
            "example": "octocat"
          }
        ],
        "responses": {
          "200": {
            "description": "User profile information retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "login": {
                      "type": "string",
                      "description": "The GitHub username.",
                      "example": "octocat"
                    },
                    "id": {
                      "type": "integer",
                      "description": "Unique ID of the user.",
                      "example": 12345678
                    },
                    "name": {
                      "type": "string",
                      "description": "The user's full name.",
                      "example": "The Octocat"
                    },
                    "bio": {
                      "type": "string",
                      "description": "User's biography.",
                      "example": "GitHub mascot and tester."
                    },
                    "public_repos": {
                      "type": "integer",
                      "description": "Number of public repositories.",
                      "example": 42
                    },
                    "followers": {
                      "type": "integer",
                      "description": "Number of followers.",
                      "example": 100
                    },
                    "following": {
                      "type": "integer",
                      "description": "Number of users the user is following.",
                      "example": 50
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "User not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "User not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/notifications": {
      "get": {
        "summary": "List Notifications",
        "description": "Retrieve a list of notifications for the authenticated user. Notifications include pull requests, issues, releases, and more.\nBy default, only unread notifications are returned. Use the `all=true` parameter to include read notifications.\n",
        "operationId": "listNotifications",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "name": "all",
            "in": "query",
            "required": false,
            "description": "Whether to include read notifications in the list. Set to `true` to include both read and unread notifications.\n",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "participating",
            "in": "query",
            "required": false,
            "description": "If `true`, filters to notifications where the user is a participant (e.g., mentioned or assigned).\n",
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Only return notifications updated after this time. Format: ISO 8601 date-time (e.g., `2025-01-01T12:00:00Z`).\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2025-01-01T12:00:00Z"
          },
          {
            "name": "before",
            "in": "query",
            "required": false,
            "description": "Only return notifications updated before this time. Format: ISO 8601 date-time (e.g., `2025-01-15T12:00:00Z`).\n",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2025-01-15T12:00:00Z"
          }
        ],
        "responses": {
          "200": {
            "description": "List of notifications for the authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "description": "List of notification objects.",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Unique identifier of the notification.",
                        "example": "e1234567890"
                      },
                      "repository": {
                        "type": "object",
                        "description": "Details about the repository the notification is related to.",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "description": "Repository ID.",
                            "example": 123456
                          },
                          "name": {
                            "type": "string",
                            "description": "Name of the repository.",
                            "example": "my-repo"
                          },
                          "owner": {
                            "type": "object",
                            "properties": {
                              "login": {
                                "type": "string",
                                "description": "Username or organization name of the repository owner.",
                                "example": "octocat"
                              }
                            }
                          }
                        }
                      },
                      "reason": {
                        "type": "string",
                        "description": "The reason the user is receiving the notification.",
                        "example": "subscribed"
                      },
                      "subject": {
                        "type": "object",
                        "description": "Details about the subject of the notification (e.g., issue, pull request).",
                        "properties": {
                          "title": {
                            "type": "string",
                            "description": "Title of the issue or pull request.",
                            "example": "Fix the bug in authentication"
                          },
                          "type": {
                            "type": "string",
                            "description": "Type of the subject (e.g., \"Issue\", \"PullRequest\", \"Release\").",
                            "example": "Issue"
                          },
                          "url": {
                            "type": "string",
                            "description": "API URL for the subject.",
                            "example": "https://api.github.com/repos/octocat/my-repo/issues/123"
                          }
                        }
                      },
                      "unread": {
                        "type": "boolean",
                        "description": "Whether the notification is unread.",
                        "example": true
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Timestamp when the notification was last updated.",
                        "example": "2025-01-10T15:30:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access. The user must authenticate with a valid access token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Mark Notifications as Read",
        "description": "Mark all notifications as read for the authenticated user. You can specify a timestamp to mark notifications as read up to a certain time.\n",
        "operationId": "markNotificationsRead",
        "tags": [
          "Notifications"
        ],
        "requestBody": {
          "description": "Optional body to specify a `last_read_at` timestamp for marking notifications.",
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "last_read_at": {
                    "type": "string",
                    "format": "date-time",
                    "description": "The last time notifications were checked. Notifications updated before this time will be marked as read.\n",
                    "example": "2025-01-10T15:00:00Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "205": {
            "description": "Notifications marked as read successfully."
          },
          "401": {
            "description": "Unauthorized access. The user must authenticate with a valid access token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/responses/UnauthorizedResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "responses": {
      "UnauthorizedResponse": {
        "description": "Unauthorized access or invalid token.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "error": {
                  "type": "string",
                  "description": "Error message explaining the reason for unauthorized access.",
                  "example": "Unauthorized access. Please provide a valid token."
                },
                "status": {
                  "type": "integer",
                  "description": "HTTP status code.",
                  "example": 401
                },
                "documentation_url": {
                  "type": "string",
                  "description": "URL to relevant documentation for resolving authentication errors.",
                  "example": "https://docs.github.com/en/rest/overview/resources-in-the-rest-api#authentication"
                }
              }
            }
          }
        }
      }
    },
    "schemas": {
      "Repository": {
        "type": "object",
        "description": "Details of a GitHub repository.",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier for the repository.",
            "example": 1296269
          },
          "name": {
            "type": "string",
            "description": "Name of the repository.",
            "example": "octo-repo"
          },
          "full_name": {
            "type": "string",
            "description": "Full name of the repository, including the owner.",
            "example": "octocat/octo-repo"
          },
          "private": {
            "type": "boolean",
            "description": "Indicates if the repository is private.",
            "example": false
          },
          "owner": {
            "type": "object",
            "description": "Information about the repository owner.",
            "properties": {
              "login": {
                "type": "string",
                "description": "GitHub username of the repository owner.",
                "example": "octocat"
              },
              "id": {
                "type": "integer",
                "description": "Unique identifier of the user.",
                "example": 1
              },
              "avatar_url": {
                "type": "string",
                "description": "URL of the user's avatar.",
                "example": "https://github.com/images/error/octocat_happy.gif"
              }
            }
          },
          "description": {
            "type": "string",
            "description": "Short description of the repository.",
            "example": "A repository for demonstrating GitHub API usage."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the repository was created.",
            "example": "2011-01-26T19:01:12Z"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the repository was last updated.",
            "example": "2023-10-01T12:00:00Z"
          },
          "pushed_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the repository was last pushed to.",
            "example": "2023-09-15T10:45:00Z"
          },
          "html_url": {
            "type": "string",
            "description": "URL to the GitHub repository.",
            "example": "https://github.com/octocat/octo-repo"
          }
        }
      },
      "Branch": {
        "type": "object",
        "description": "Details of a branch in a repository.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the branch.",
            "example": "main"
          },
          "commit": {
            "type": "object",
            "description": "Latest commit information for the branch.",
            "properties": {
              "sha": {
                "type": "string",
                "description": "SHA of the latest commit on the branch.",
                "example": "c5b9f66f3c3b292ce1a0d953d123456789abcdef"
              },
              "url": {
                "type": "string",
                "description": "URL of the commit details.",
                "example": "https://api.github.com/repos/octocat/octo-repo/commits/c5b9f66f3c3b292ce1a0d953d123456789abcdef"
              }
            }
          }
        }
      },
      "Commit": {
        "type": "object",
        "description": "Details of a commit in a repository.",
        "properties": {
          "sha": {
            "type": "string",
            "description": "SHA hash of the commit.",
            "example": "d6fde92930d4715a2b49857d24b940956b26d2d3"
          },
          "message": {
            "type": "string",
            "description": "Commit message describing the changes made.",
            "example": "Fixed a typo in the README file"
          },
          "author": {
            "type": "object",
            "description": "Information about the author of the commit.",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of the commit author.",
                "example": "Octocat"
              },
              "email": {
                "type": "string",
                "description": "Email of the commit author.",
                "example": "octocat@github.com"
              },
              "date": {
                "type": "string",
                "format": "date-time",
                "description": "Date and time when the commit was authored.",
                "example": "2023-09-30T14:15:22Z"
              }
            }
          },
          "url": {
            "type": "string",
            "description": "URL of the commit details.",
            "example": "https://api.github.com/repos/octocat/octo-repo/commits/d6fde92930d4715a2b49857d24b940956b26d2d3"
          }
        }
      },
      "PullRequest": {
        "type": "object",
        "description": "Details of a pull request.",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique identifier for the pull request.",
            "example": 42
          },
          "number": {
            "type": "integer",
            "description": "Pull request number.",
            "example": 1347
          },
          "title": {
            "type": "string",
            "description": "Title of the pull request.",
            "example": "Add new feature to improve API performance."
          },
          "body": {
            "type": "string",
            "description": "Detailed description of the changes made in the pull request.",
            "example": "This PR introduces optimizations for API response time."
          },
          "state": {
            "type": "string",
            "description": "Current state of the pull request.",
            "enum": [
              "open",
              "closed",
              "merged"
            ],
            "example": "open"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the pull request was created.",
            "example": "2023-08-15T10:30:00Z"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the pull request was last updated.",
            "example": "2023-09-01T09:15:00Z"
          },
          "merged_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the pull request was merged (if applicable).",
            "example": "2023-09-10T12:00:00Z"
          },
          "user": {
            "type": "object",
            "description": "Information about the user who created the pull request.",
            "properties": {
              "login": {
                "type": "string",
                "description": "Username of the pull request creator.",
                "example": "octocat"
              },
              "id": {
                "type": "integer",
                "description": "Unique identifier of the user.",
                "example": 1
              },
              "avatar_url": {
                "type": "string",
                "description": "URL to the user's avatar image.",
                "example": "https://github.com/images/error/octocat_happy.gif"
              }
            }
          },
          "html_url": {
            "type": "string",
            "description": "URL to view the pull request on GitHub.",
            "example": "https://github.com/octocat/octo-repo/pull/1347"
          }
        }
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Use Bearer tokens for OAuth 2.0 authorization.",
        "bearerFormat": "JWT",
        "example": {
          "Authorization": "Bearer gho_1234567890"
        }
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ]
}